MySQL。什么是页面?[英] MySQL: What is a page?

本文是小编为大家收集整理的关于MySQL。什么是页面?的处理/解决方法,可以参考本文帮助大家快速定位并解决问题,中文翻译不准确的可切换到English标签页查看源文。

问题描述

在MySQL数据库的上下文中,我一生都不能记住一个页面.当我看到像8KB/页面之类的东西时,这是指每行8kb还是...?

推荐答案

数据库页面是组织数据库文件中数据的内部基本结构.以下是有关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,总排长度(包括斑点和文本列)必须小于4GB.

.

其他推荐答案

好吧,

这并不是关于MySQL的真正问题,它更多地是关于哪个页面大小在内存管理中的一般情况.

您可以在此处阅读: page_(Computer_memory)

简单地将其交换/存储的最小数据单元放置.

默认页面大小为4K,可能很好.

如果您拥有大型数据集或仅少量写操作,则可以提高性能以提高页面大小.

在这里看看:/manuals/tuning/perf24.html

为什么?因为可以立即获取/解决更多数据. 如果概率很高,即所需的数据与您刚刚获取的数据紧密接近或直接接近(嗯,它并不是真正的3D空间,但我认为您得到了我的意思),那么您可以在一个操作中随身携带它总的来说,从您的硬盘驱动器中,可以更好地利用几种缓存和数据获取技术.

但是,在另一侧,如果您的数据没有填充页面大小或更多的东西,则浪费空间.

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

其他推荐答案

是将数据存储/读取/写入磁盘和内存中的大小.

对于不同的工作负载/数据集,不同的页面尺寸可能会更好或更糟.即,有时您可能需要每个页面或更少的行,或者每页更少.话虽如此,默认页面大小适用于大多数应用程序.

请注意,"页面"不是MySQL唯一的.这是所有数据库参数的一个方面.

本文地址:https://www.itbaoku.cn/post/597581.html

问题描述

I can't for the life of me remember what a page is, in the context of a MySQL database. When I see something like 8KB/page, does that mean 8KB per row or ...?

推荐答案

Database pages are the internal basic structure to organize the data in the database files. Following, some information about the InnoDB model:

From 13.2.11.2. File Space Management:

The data files that you define in the configuration file form the InnoDB tablespace. The files are logically concatenated to form the tablespace. [...] The tablespace consists of database pages with a default size of 16KB. The pages are grouped into extents of size 1MB (64 consecutive pages). The “files” inside a tablespace are called segments in InnoDB.

And from 13.2.14. Restrictions on InnoDB Tables

The default database page size in InnoDB is 16KB. By recompiling the code, you can set it to values ranging from 8KB to 64KB.

Further, to put rows in relation to pages:

The maximum row length, except for variable-length columns (VARBINARY, VARCHAR, BLOB and TEXT), is slightly less than half of a database page. That is, the maximum row length is about 8000 bytes. LONGBLOB and LONGTEXT columns must be less than 4GB, and the total row length, including BLOB and TEXT columns, must be less than 4GB.

其他推荐答案

Well,

its not really a question about MySql its more about what page size is in general in memory management.

You can read about that here: http://en.wikipedia.org/wiki/Page_(computer_memory)

Simply put its the smallest unit of data that is exchanged/stored.

The default page size is 4k which is probably fine.

If you have large data-sets or only very few write operations it may improve performance to raise the page size.

Have a look here: http://db.apache.org/derby/manuals/tuning/perf24.html

Why? Because more data can be fetched/addressed at once. If the probability is high that the desired data is in close proximity to the data you just fetched, or directly afterwards (well its not really in 3d space but i think you get what i mean), you can just fetch it along in one operation and take better advantage of several caching and data fetching technologies, in general from your hard drive.

But on the other side you waste space if you have data that doesn't fill up the page size or is just a little bit more or something.

I personally never had a case where tuning the page size was important. There were always better approaches to optimize performance, and if not, it was already more than fast enough.

其他推荐答案

It's the size of which data is stored/read/written to disk and in memory.

Different page sizes might work better or worse for different work loads/data sets; i.e. sometimes you might want more rows per page, or less rows per page. Having said that, the default page size is fine for the majority of applications.

Note that "pages" aren't unique for MySQL. It's an aspect of a parameter for all databases.