gpt4 book ai didi

mysql - InnoDB "autoextend"函数

转载 作者:搜寻专家 更新时间:2023-10-30 22:20:25 25 4
gpt4 key购买 nike

我对 InnoDB 的使用感到很困惑。我有一台存储空间有限的服务器,我读到 InnoDB 表会创建默认大小为 10MB 的自动扩展表。

我不明白“自动扩展”功能。如果一张表超过 10MB,MySQL 会自动增加内存 (10Mb + 10MB)?

那么,我可以更改任何表的默认限制吗?

例如:

  • 表 1 = 默认 10MB;
  • 表 2 = 默认 0.5MB;
  • 等...

这可能吗?

最佳答案

针对 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

InnoDB creates tables in file-per-table tablespaces by default. This behavior is controlled by the innodb_file_per_table variable. Disabling innodb_file_per_table causes InnoDB to create tables in the system tablespace.

当此文件集没有可用空间时,集合中最后一个文件的大小将按 autoextend 参数指定的 block 增加,默认情况下为 8MB。

InnoDB 只会增长集合中的最后一个文件。

如果您使用 innodb_file_per_table,那么每个表都使用自己的表空间。它总是存储在一个文件中(驻留在 db 目录中)。

此文件以可配置大小的 block 增长,默认情况下为 4M。

在最新版本的 MySQL 中,您还可以显式创建表空间并将表分配给它们。您显式创建的表空间称为通用表空间。您也可以为它们配置自动扩展选项。

https://dev.mysql.com/doc/refman/8.0/en/innodb-file-per-table-tablespaces.html

From MySQL 8.0.23, the amount by which a file-per-table or general tablespace is extended is configurable by specifying the AUTOEXTEND_SIZE option. Configuring a larger extension size can help avoid fragmentation and facilitate ingestion of large amounts of data.

关于mysql - InnoDB "autoextend"函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4815379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com