June 29, 2022
1. latch # 是内存结构中的一种轻量级的锁,在 MySQL 数据库中,latch 是用于保护内存中 List Page 完整性的锁结构,latch 可以分为有 mutex、SX rw-lock(spin lock),SX rw-lock 是 MySQL 5.7 的新特性,针对 Page 粒度加的内存锁,有助于提升索引访问效率(针对索引更新的模式)。
2. Lock # Gap Lock(间隙锁)锁住的区间均为开区间,间隙锁之间是兼容的,即两个事务可以同时持有包含共同间隙范围的间隙锁,并不存在互斥关系 Next-Key Lock(临键锁)锁住的区间除了 supremum 伪记录所在区间是开区间外,其余区间均为左开右闭区间;如果一个事务获取了 X 行的 next-key lock,那么另外一个事务在获取相同范围的 X 行的 next-key lock 时,是会被阻塞的 2.1 锁与事务隔离级别 # Isolation/Lock Lock Mode + Lock Type Rec Lock Type Read uncommitted Read commited LOCK_IX + TABLE_LOCK LOCK_X + ROW_LOCK LOCK_REC_NOT_GAP Repeatable read LOCK_IX + TABLE_LOCK LOCK_X + ROW_LOCK LOCK_REC_NOT_GAP or LOCK_GAP or LOCK_ORDINARY Serializable 3.
...
April 10, 2022
我们习惯把 MySQL 复制中的角色叫做 Master/Slave,MySQL 8.0 后,术语和命令上都会统一到 Source/Replica。MySQL 采用 log shipping 的复制技术,在 source 节点上生成 binlog,通过 dump 线程把 binlog 推到 replica 节点上,replica 节点首先把 binlog 存储到 relay log 中,然后通过 MTS(Multi-Threaded Slave) 技术 replay 到 replica 节点上的表空间。
...
October 31, 2021
Page # 索引页
组成 说明 File Header 表示页的一些通用信息,占固定的 38 字节。 Page Header 表示数据页专有的一些信息,占固定的 56 个字节。 Infimum + Supremum 两个虚拟的伪记录,分别表示页中的最小和最大记录,占固定的 26 个字节。 User Records 真实存储我们插入的记录的部分,大小不固定。 Free Space 页中尚未使用的部分,大小不确定。 Page Directory 页中的某些记录相对位置,也就是各个槽在页面中的地址偏移量,大小不固定,插入的记录越多,这个部分占用的空间越多。 File Trailer 用于检验页是否完整的部分,占用固定的 8 个字节。 Row # 格式 说明 compact redundant dynamic 与 compact 行格式挺像,但它不会在记录的真实数据处存储字段真实数据的前 768 个字节,而是把所有的字节都存储到其他页面中,只在记录的真实数据处存储其他页面的地址 compressed 会采用压缩算法对页面进行压缩,以节省空间 参考文献 # MySQL 之数据页结构 MySQL 之 InnoDB 表空间 MySQL 之 InnoDB 存储结构总结 附件 #
October 30, 2021
Buffer Pool
...
April 1, 2018
数据库事务 (Database Transaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全执行,要么完全地不执行。要么完全地不执行。一般来说,事务是必须满足 4 个条件 (ACID):原子性 (Atomicity)
、一致性 (Consistency)
、隔离性 (Isolation)
、持久性 (Durability)
。
...
March 31, 2018
InnoDB 索引选择B+树作为其内存数据结构,选择聚簇索引作为数据存储方式。
...
March 15, 2018
InnoDB 的内存结构主要由 Buffer Pool, Change Buffer, Adaptive Hash Index, Log Buffer 这几个部分组成,而存储结构则是由若干种不同的 Tablespace 组成。如下图所示。
...
February 25, 2018
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
...