Spec-Zone.ru › MySQL 8.4

17.6.3.9 Настройка параметра AUTOEXTEND_SIZE табличного пространства

По умолчанию, когда файловому или общему табличному пространству требуется дополнительное место, оно расширяется постепенно в соответствии со следующими правилами:

  • Если размер табличного пространства меньше одного extents, оно расширяется по одной странице за раз.

  • Если размер табличного пространства больше одного extent, но меньше 32 extents, оно расширяется по одному extent за раз.

  • Если размер табличного пространства превышает 32 extent, оно расширяется по четыре extent за раз.

Сведения о размере extent см. в разделе 17.11.2 «Управление пространством файлов».

Размер расширения файлового или общего табличного пространства можно настроить, указав опцию AUTOEXTEND_SIZE. Увеличение размера расширения может помочь избежать фрагментации и упростить загрузку больших объемов данных.

Чтобы настроить размер расширения для файлового табличного пространства, укажите значение AUTOEXTEND_SIZE в операторе CREATE TABLE или ALTER TABLE:

CREATE TABLE t1 (c1 INT) AUTOEXTEND_SIZE = 4M;

ALTER TABLE t1 AUTOEXTEND_SIZE = 8M;

Чтобы настроить размер расширения для общего табличного пространства, укажите значение AUTOEXTEND_SIZE в операторе CREATE TABLESPACE или ALTER TABLESPACE:

CREATE TABLESPACE ts1 AUTOEXTEND_SIZE = 4M;

ALTER TABLESPACE ts1 AUTOEXTEND_SIZE = 8M;
Примечание

Опцию AUTOEXTEND_SIZE также можно использовать при создании табличного пространства отката, но поведение расширения для табличных пространств отката отличается. Дополнительные сведения см. в разделе 17.6.3.4 «Табличные пространства отката».

Значение AUTOEXTEND_SIZE должно быть кратно 4М. Указание значения AUTOEXTEND_SIZE, не кратного 4М, приводит к ошибке.

Значение AUTOEXTEND_SIZE по умолчанию равно 0, что приводит к расширению табличного пространства в соответствии с описанным выше поведением по умолчанию.

Максимальное разрешенное значение AUTOEXTEND_SIZE составляет 4 ГБ. Максимальный размер табличного пространства описан в разделе 17.21 «Пределы InnoDB».

Минимальное значение AUTOEXTEND_SIZE зависит от размера страницы InnoDB, как показано в следующей таблице:

Размер страницы InnoDB Минимальный размер AUTOEXTEND_SIZE
4K 4M
8K 4M
16K 4M
32K 8M
64K 16M

Размер страницы InnoDB по умолчанию составляет 16K (16384 байта). Чтобы определить размер страницы InnoDB для вашей копии MySQL, выполните запрос к параметру innodb_page_size:

mysql> SELECT @@GLOBAL.innodb_page_size;
+---------------------------+
| @@GLOBAL.innodb_page_size |
+---------------------------+
|                     16384 |
+---------------------------+

При изменении параметра AUTOEXTEND_SIZE для табличного пространства первое последующее расширение увеличивает размер табличного пространства до кратного значению параметра AUTOEXTEND_SIZE. Последующие расширения будут производиться с заданным размером.

При создании файлового или общего табличного пространства с ненулевым значением AUTOEXTEND_SIZE, табличное пространство инициализируется с указанным значением размера AUTOEXTEND_SIZE.

ALTER TABLESPACE нельзя использовать для настройки параметра AUTOEXTEND_SIZE файлового табличного пространства. Для этого необходимо использовать оператор ALTER TABLE.

Для таблиц, созданных в файловых табличных пространствах, оператор SHOW CREATE TABLE отображает опцию AUTOEXTEND_SIZE только в том случае, если она настроена на ненулевое значение.

Чтобы определить значение AUTOEXTEND_SIZE для любого табличного пространства InnoDB, выполните запрос к таблице схемы информации INNODB_TABLESPACES. Например:

mysql> SELECT NAME, AUTOEXTEND_SIZE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES 
       WHERE NAME LIKE 'test/t1';
+---------+-----------------+
| NAME    | AUTOEXTEND_SIZE |
+---------+-----------------+
| test/t1 |         4194304 |
+---------+-----------------+

mysql> SELECT NAME, AUTOEXTEND_SIZE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES 
       WHERE NAME LIKE 'ts1';
+------+-----------------+
| NAME | AUTOEXTEND_SIZE |
+------+-----------------+
| ts1  |         4194304 |
+------+-----------------+
Примечание

Значение AUTOEXTEND_SIZE, равное 0, которое является значением по умолчанию, означает, что табличное пространство расширяется в соответствии с описанным выше поведением расширения по умолчанию.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-tablespace-autoextend-size.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API