MySQL:什么是页?

55

在MySQL数据库的上下文中,我实在记不起来“页面”是什么了。当我看到像“8KB/page”这样的东西时,它是指每行8KB还是……?

3个回答

37

数据库页面是组织数据库文件中数据的内部基本结构。以下是一些关于InnoDB模型的信息:

来自13.2.11.2. 文件空间管理:

您在配置文件中定义的数据文件形成了InnoDB表空间,这些文件在逻辑上连接以形成表空间。[...] 表空间由默认大小为16KB的数据库页面组成。 页面按1MB(64个连续页面)的大小分组成一组。表空间中的“文件”在InnoDB中称为段。

另外从13.2.14. InnoDB表的限制得知:

InnoDB中默认的数据库页面大小为16KB。通过重新编译代码,可以将其设置为8KB到64KB之间的值。

此外,将页面相关联:

除了可变长度列(VARBINARY、VARCHAR、BLOB和TEXT)之外,最大行长度略小于半个数据库页面。也就是说,最大行长度约为8000字节。LONGBLOB和LONGTEXT列必须小于4GB,并且包括BLOB和TEXT列在内的总行长度必须小于4GB。


8
基本上,它类似于书中的一页,可以包含多行(文本行)? - Matty
7
是的,你可以这样想。如果应用上述MySQL的限制,一行就更像是一个句子,不能超过半页纸。(文本行长度是固定的,但对于数据库行不是这样。) - MicSim

28

这不是一道有关MySql的问题,而是关于内存管理中页面大小的一般性问题。

你可以在这里阅读相关内容:http://en.wikipedia.org/wiki/Page_(computer_memory)

简单来说,它是交换/存储的最小数据单位。

默认页面大小为4k,这可能已经足够了。

如果您有大型数据集或仅有很少的写操作,则提高页面大小可能会提高性能。

请参见此处:http://db.apache.org/derby/manuals/tuning/perf24.html

为什么呢?因为可以获取/寻址更多的数据。如果所需数据与刚刚获取的数据相邻或直接后续(虽然它实际上并不在三维空间中,但我想你明白我的意思),则可以通过一次操作将其全部获取,并更好地利用几种缓存和数据获取技术,通常是从硬盘中进行。

但另一方面,如果数据没有填满页面大小或仅略微超过页面大小,则会浪费空间。

我个人从未遇到过调整页面大小很重要的情况。总有更好的方法来优化性能,如果没有,那么它已经足够快了。


6

页面大小是指数据在磁盘和内存中存储、读取和写入的大小。

不同的页面大小可能对不同的工作负载/数据集效果更好或更差;即有时您可能希望每个页面有更多行,或者更少的行。话虽如此,默认的页面大小对于大多数应用程序来说都是可以接受的。

请注意,“页面”并不是MySQL独有的。这是所有数据库参数的一个方面。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接