
MySQL
数据交互都要经由引擎服务,MySQL常见引擎有MyIsam和InnoDb,二者差异在此就不阐述了。InnoDB有两个存储文件,其后缀分别为.frm与.idb。.frm为表的定义文件,.idb是表的数据文件。InnoDB引擎的索引结构为B+Tree,主键的叶子节点存储该行数据,其余索引都指向主键。
InnoDB管理的最小单元是页,常见类型有FSP_HDR、INODE、INDEX等。页结构包含文件头(前38字节)、页数据和文件尾(后8字节),每个数据页的大小为16kb,其结构如下:
系统从磁盘读取数据到内存是以磁盘块(block)为基本单位的,同一个磁盘块的数据会被一次性读出。block的空间大小通常小于16kb,所以innodb每次进行io操作时,都会把若干地址连续的磁盘块数据读入内存,达成整页读入内存。MySQL写入数据时,数据会被存于索引页。若以UUID作主键,新行主键值未必比旧的大,innoDb就不能总是把新行插到索引而要给新行找合适位置分配新空间,这一过程会造成:使用自增主键能避免上述问题。结论:用innodb时,应尽量按主键自增顺序插入,且插入新行时尽可能采用单调递增的聚簇键值。
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号