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

时间:2009-11-04 21:09:32

标签: mysql oracle innodb

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

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

5 个答案:

答案 0 :(得分:7)

具体来说就是innodb:

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

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

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

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

  • 页面为16k,理论上已针对磁盘级别的高效存储和检索进行了优化。当需要更多页面时,页面将按范围数量分配。

this pdf第11页。

答案 1 :(得分:2)

在以下网站上进行了很好的讨论:

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

 File system              -> InnoDB
 ----------------------------------------------
 disk partition           -> tablespace
 file                     -> segment
 inode                    -> fsp0fsp.c 'inode'
 fs space allocation unit -> extent
 disk block               -> page (16 kB)

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

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

答案 2 :(得分:0)

Oracle具有用于描述物理布局的块,段和扩展区,以及用于描述逻辑布局的表和表空间。不幸的是,我不记得细节,无论如何我在两个版本之前就学会了它们。

通常,将有两种不同的方式来描述数据库。从用户的角度来看,数据库可以分为表空间,表空间包含表,其中包含行,依此类推。但是,它们必须存在于磁盘上的某个位置,因此DBA通常必须分配文件,并且文件内部必须有一个布局,允许行和字段存储在文件的字节中。 / p>

这些是实施细节,通常只对DBA感兴趣。您可以在单个数据库系统的文档和面向DBA的书籍中找到它们,通常您可以在自己的书中找到每个单独的数据库系统。

请记住,数据库系统通常附带文档,而Oracle和DB2等系统通常都有非常广泛的文档,通常安排在您可以在线阅读或以某种形式或其他形式下载的书籍中。当然,试图在www.oracle.com或www.ibm.com上找到一些东西可能会令人沮丧,但谷歌可能仍然是你的朋友。

答案 3 :(得分:0)

Oracle物理数据库结构和逻辑数据库结构之间存在区别。 Oracle数据文件和控制文件是物理结构的一部分,而块和扩展区是逻辑的一部分。

Google搜索“Oracle架构”会产生一系列结果。 Thisthis one可能有用,或者您可以选择购买一本好书,例如this one。 但是关于Oracle数据库的最佳信息来源之一是Oracle documentation itself

您可以在线免费获取所选数据库版本的文档,也可以从Oracle web site免费下载本地文档。

答案 4 :(得分:0)

oracle的存储结构在文档中有详细描述:http://download.oracle.com/docs/cd/E11882_01/server.112/e10713/logical.htm#CNCPT304

表空间是由一个或多个数据文件组成的逻辑存储容器。使用特定块大小定义表空间,并且通常Oracle数据库中的所有表空间都将具有公共块大小。 8kb是最常选择的一种。

索引,表,集群等的存储表示为段。单个段将分配给单个表空间,但可以分布在多个数据文件中。未分区的表或索引将具有单个段。对于分区表或索引,每个分区或子分区将是单个段。

细分由范围构建,范围是逻辑上连续的块集。根据增长模式的要求,手动或自动将新范围分配给段。