InnoDB“自动扩展”功能
我对 InnoDB 的使用很困惑。 我的服务器存储空间有限,并且我读到 InnoDB 表以 10MB 自动扩展创建默认大小的表。
我不明白“自动扩展”功能。如果一张表超过10MB,MySQL会自动增加内存(10Mb + 10MB)?
那么,我可以更改任何表的默认限制吗?
例如:
- Table1=默认10MB;
- 表2 = 默认0.5MB;
- 等等...
可能吗?
I'm very confused about use of InnoDB.
I've a server with limited storage and I've read that InnoDB tables creates default size table at 10MB autoextend.
I don't understand "autoextend" function. If I exceed 10MB for one table, MySQL automatically increase memory (10Mb + 10MB)?
So, can I change default limit for any table?
For example:
- Table1 = default 10MB;
- Table2 = default 0.5MB;
- etc...
is it possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
针对 MySQL 8.0 进行了更新
如果您未启用
innodb_file_per_table
或显式指定表空间,InnoDB 数据将存储在一组称为系统表空间的文件中。最新版本的 MySQL 默认启用
innodb_file_per_table
。https://dev.mysql。 com/doc/refman/8.0/en/innodb-file-per-table-tablespaces.html
当此文件集没有剩余可用空间时,该文件集中最后一个文件的大小会按
autoextend
参数指定的块增加,默认情况下为 8MB。InnoDB
只会增长集合中的最后一个文件。如果您使用innodb_file_per_table,那么每个表都使用自己的表空间。它始终存储在一个文件中(驻留在 db 目录中)。
该文件以可配置大小的块形式增长,默认情况下为 4M。
在最新版本的 MySQL 中,您还可以显式创建表空间并向其分配表。您显式创建的表空间称为通用表空间。您也可以为它们配置自动扩展选项。
https://dev.mysql。 com/doc/refman/8.0/en/innodb-file-per-table-tablespaces.html
Updated for MySQL 8.0
If you don't enable
innodb_file_per_table
or specify a tablespace for a table explicitly, InnoDB data will be stored in a set of files called a system tablespace.Latest versions of MySQL enable
innodb_file_per_table
by default.https://dev.mysql.com/doc/refman/8.0/en/innodb-file-per-table-tablespaces.html
When this fileset has no free space left, the size of the last file in the set is increased in chunks specified by the
autoextend
parameter, which is 8MB by default.InnoDB
will only grow the last file in the set.If you use
innodb_file_per_table
then each table uses its own tablespace. It is always stored in one file (residing in the db directory).This file grows in chunks of configurable size, which by default is 4M.
In latest versions of MySQL, you can also create tablespaces explicitly and assign tables to them. Tablespaces that you create explicitly are called general tablespaces. You can configure the auto-extend option for them as well.
https://dev.mysql.com/doc/refman/8.0/en/innodb-file-per-table-tablespaces.html