页面与范围与段与表空间的对比

bic*_*e74 5 mysql oracle innodb

Mysql的Innodb有页面,范围,段,表空间的概念,但我不知道它们是如何相互交互的.它们有什么关系?表空间有16K的页面是什么意思?这与物理行有什么关系,是内存中的"页面"?

我认为Oracle可能有相同的概念,但我不确定在哪里寻找它.是否有一个很好的参考/书籍详细谈论这个?

lon*_*eck 7

对于innodb具体:

表空间既是物理概念,也是逻辑概念.过去,所有innodb表都将其数据混合在ibdata文件中.在这些文件中,表空间是构成表的不一定连续的段集合.在较新版本的mysql中,可以将单个表放入其自己的文件中,该文件也称为表空间.

在任何一种情况下,表空间都包含:

  • 段,包含该表的1个或多个范围.

  • 范围包含64页.我不知道为什么64.

  • 页面为16k,理论上优化了磁盘级别的高效存储和检索.当需要更多页面时,页面以范围数量分配.

本pdf第11页.


小智 2

对此有一个很好的讨论:

http://www.markleith.co.uk/?p=25

文件系统-> InnoDB
 ----------------------------------------------------------
 磁盘分区->表空间
 文件->段
 索引节点 -> fsp0fsp.c '索引节点'
 fs 空间分配单元 -> 范围
 磁盘块 -> 页 (16 kB)

如果你真的想要深入的细节,还有:

http://forge.mysql.com/wiki/MySQL_Internals_InnoDB