Community journal

The latest from the MySQL community

Ideas, releases, practical guides, and perspectives from the people building with MySQL.

Follow the feed
Showing entries 1 to 10 of 32 « Previous | Next »
Displaying posts with tag: Other (reset)
MySQL/PostgreSQL Slot-based Buffer Manager Pin/buf_block_fix operator

在 MySQL/PostgreSQL Buffer Pool 里面有一个 Pin 操作 — PostgreSQL 叫 Pin, MySQL InnoDB 叫 buf_block_fix / io_fix. 这些操作本质上都是把一个 page “pin” buffer pool 的某个位置上.

为什么在其他系统里很少见到这种代码? 答案是 PG 和 InnoDB 的 buffer pool 都用了同一种架构 — Slot-based Buffer Manager. 这种架构直接决定了 Pin 这个操作必须存在.

Slot-based Buffer Manager 结构

启动时, buffer pool 被切成 N 个固定大小的 slot (InnoDB 是 16KB, PG 是 8KB). slot 总数 N 在启动后不再变化.

数据结构上分三层:

  • Slot / 描述符: 启动时静态分配, 地址永不变 (buf_block_t / BufferDesc)
  • Frame / 页面内存: 启动时静态分配, 地址永不变 (buf_block_t->frame / BufferBlocks[i*BLCKSZ])
  • Page Identity: 当前 slot 装的是哪个磁盘 page ((space_id, page_no) / (rel, fork, …
[获取更多]
为什么我认为 MySQL 比 PostgreSQL 集成 DuckDB 更加的优雅?

我们看到目前有 3 个主流 PostgreSQL 集成 DuckDB 的方案在运行 pg_duckdb,pg_mooncake, pg_lake.

pg_duckdb 是官方提供的 DuckDB 插件, 只能提供存量行存表到 DuckDB 的迁移, 无法让增量的数据同步到 DuckDB 表中, 适用场景比较受限.

databricks 收购的 pg_mooncake 可以支持存量和增量的数据同步, 通过额外的 pg_moonlink 进程以逻辑复制的方式把 PostgreSQL 的数据复制过来, 并且以 Iceberg 格式写入, 后续如果有复制查询, 需要走 postgresql => pg_moonlink => s3(Iceberg) 的请求方式.

snowflake 收购的 pg_lake 同样也不支持增量数据同步, 只支持全量的数据导入导出, 感觉更多是一个归档场景的方案.

我们可以看到有几个问题, 一个是 PostgreSQL 逻辑复制能力不够成熟, 远不及其原生的物理复制能力, 无法通过逻辑复制连接PostgreSQL和DuckDB只读实例. …

[获取更多]
当 MySQL 遇到 DuckDB

MySQL的插件式存储引擎架构

MySQL的核心创新之一就是其插件式存储引擎架构(Pluggable Storage Engine Architecture),这种架构使得MySQL可以通过多种不同的存储引擎来扩展自己的能力,从而支持更多的业务场景。MySQL的插件式架构如下图所示:

MySQL的插件式存储引擎架构可以划分为四个主要的部分:

  • 运行层(Runtime Layer):负责MySQL运行相关的任务,比如通讯、访问控制、系统配置、监控等信息。
  • Binlog层(Binlog Layer): 负责Binlog的生成、复制和应用。
  • SQL层(SQL Layer):复制SQL的解析、优化和SQL的执行。
  • 存储引擎层(Storage Engine Layer):负责数据的存储和访问。

MySQL在SQL计算和数据存储之间设计了一套标准的数据访问控制接口(Plugable Engine …

[获取更多]
django 项目需要注意的一些点

1.创建新项目    把静态文件夹的名字放在settings文件里面

STATIC_URL = '/static/' STATICFILES_DIRS=[ os.path.join(BASE_DIR,"static") ]

2.

【mysql】  【Django】  【数据库】  【os】  【middleware】  【测试】  【脚本】  【static】   …

[获取更多]
MySQL 5.7 内部临时表

本文研究了在没有写查询的情况下,InnoDB行插入时,因内部临时表的问题而发生性能尖刺的情形。 In this blog post, I investigate a case of spiking InnoDB Rows inserted in the absence of a write query, and find internal temporary tables to be the culprit. 事情发生在我研究一个客户的案例时,在”InnoDB行插入“指标图上,发现了从1k行每秒激增到6K行的尖刺,但却无法和其他活动或者现象连接起来,PMM监控图形上也有同样的反映。

【mysql】  【innodb】  【性能】  【磁盘】   …

[获取更多]
在CentOS7上通过Yum Repository安装MySQL5.7.21

一、从官方下载并安装Yum Repository 下载Yum Repository。[root@GeekDevOps ~]# curl -O https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm 安装Yum Repository。

【mysql】  【yum】  【配置】  【Server】  【test】  【安全设置】  【database】   …

[获取更多]
MySQL · 捉虫动态 · 信号处理机制分析

背景 在 AliSQL 上面有人提交了一个 bug,在使用主备的时候 service stop mysql 不能关闭主库,一直显示 shutting down mysql …,到底怎么回事呢,先来看一下 service stop mysql 是怎么停止数据库的。

【mysql】  【函数】  【线程】  【脚本】  【多线程】  【thread】  【Other】   …

[获取更多]
MySQL5.5 Command Line Client SQL常用基本语句

A.创建数据库、数据表 root登录MySQL 创建一个名称为demo的数据库

1

CREATE SCHEMA demo;

使用USE命令指定使用demo数据库

1

USE demo;

创建一个t_message表格,其中有id,name,email,m...

【mysql】  【SQL】  【数据库】  【path】  【demo】  【Create】  【update】   …

[获取更多]
实战从源码编译LAMP架构+Discuz搭建bbs论坛

实验环境:RHEL6.5  server1.example.com 172.25.254.1 实验环境:RHEL6.5 实验内容:1.MYSQL源码编译                 2.NGINX源码编译                 3.

【nginx】  【php】  【架构】  【mysql】  【discuz】  【源码】   …

[获取更多]
Cloudera Manager安装之Cloudera Manager安装前准备(Ubuntu14.04)(一)

其实,基本思路跟如下差不多,我就不多详细说了,贴出主要图。         博主,我是直接借鉴下面这位博主,来进行安装的!(灰常感谢他们!) 在线和离线安装Cloudera CDH 5.6.0  Cloudera Manager 5和CDH5离线安装 Ubuntu14.

【mysql】  【ubuntu】  【SSH】  【grant】  【database】  【Other】   …

[获取更多]
« Previous | Next »