Spec-Zone.ru › MySQL 9.2

15.1.10 Выражение ALTER TABLESPACE

ALTER [UNDO] TABLESPACE tablespace_name
  NDB only:
    {ADD | DROP} DATAFILE 'file_name'
    [INITIAL_SIZE [=] size]
    [WAIT]
  InnoDB and NDB:
    [RENAME TO tablespace_name]
  InnoDB only:
    [AUTOEXTEND_SIZE [=] 'value']
    [SET {ACTIVE | INACTIVE}]
    [ENCRYPTION [=] {'Y' | 'N'}]
  InnoDB and NDB:
    [ENGINE [=] engine_name]
  Reserved for future use:
    [ENGINE_ATTRIBUTE [=] 'string']

Это выражение используется с NDB и InnoDB табличными пространствами. Оно может использоваться для добавления нового файла данных к табличному пространству NDB или удаления файла данных из него. Также оно может использоваться для переименования табличного пространства NDB Cluster Disk Data, переименования InnoDB общего табличного пространства, шифрования InnoDB общего табличного пространства или пометки InnoDB табличного пространства отката как активного или неактивного.

Ключевое слово UNDO используется с клаузой SET {ACTIVE | INACTIVE} для пометки табличного пространства отката InnoDB как активного или неактивного. Для получения дополнительной информации см. Раздел 17.6.3.4, «Undo Tablespaces».

Вариант ADD DATAFILE позволяет вам указать начальный размер NDB табличного пространства Disk Data с помощью клаузы INITIAL_SIZE, где size измеряется в байтах; значение по умолчанию — 134217728 (128 МБ). Вы можете дополнительно указать size с однобуквенным сокращением порядка величины, подобным тем, которые используются в my.cnf. Обычно это одна из букв M (мегабайты) или G (гигабайты).

На 32-битных системах максимальное поддерживаемое значение для INITIAL_SIZE составляет 4294967296 (4 ГБ). (Ошибка #29186)

INITIAL_SIZE округляется, так же как и для CREATE TABLESPACE.

После создания файла данных его размер изменить нельзя; однако вы можете добавить больше файлов данных в табличное пространство NDB с помощью дополнительных выражений ALTER TABLESPACE ... ADD DATAFILE.

Когда ALTER TABLESPACE ... ADD DATAFILE используется с ENGINE = NDB, файл данных создается на каждом узле данных кластера, но только одна строка генерируется в таблице Information Schema FILES. Для получения дополнительной информации см. описание этой таблицы, а также Раздел 25.6.11.1, «NDB Cluster Disk Data Objects». ADD DATAFILE не поддерживается с InnoDB табличными пространствами.

Использование DROP DATAFILE с ALTER TABLESPACE удаляет файл данных 'file_name' из табличного пространства NDB. Вы не можете удалить файл данных из табличного пространства, которое используется какой-либо таблицей; другими словами, файл данных должен быть пустым (не используются никакие области). См. Раздел 25.6.11.1, «NDB Cluster Disk Data Objects». Кроме того, любой файл данных, подлежащий удалению, должен быть предварительно добавлен в табличное пространство с помощью CREATE TABLESPACE или ALTER TABLESPACE. DROP DATAFILE не поддерживается с InnoDB табличными пространствами.

WAIT анализируется, но иначе игнорируется. Он предназначен для будущего расширения.

Клауза ENGINE, которая определяет используемый движок хранения для табличного пространства, устарела, так как движок хранения табличного пространства известен словарем данных, что делает клаузу ENGINE устаревшей. В MySQL 9.2 она поддерживается только в следующих двух случаях:

  • ALTER TABLESPACE tablespace_name ADD DATAFILE 'file_name'
        ENGINE={NDB|NDBCLUSTER}
    
  • ALTER UNDO TABLESPACE tablespace_name SET {ACTIVE|INACTIVE}
        ENGINE=INNODB
    

Следует ожидать постепенного удаления ENGINE из этих выражений в будущей версии MySQL.

Операции RENAME TO неявно выполняются в режиме автоматического подтверждения, независимо от значения autocommit.

Операция RENAME TO не может быть выполнена, пока LOCK TABLES или FLUSH TABLES WITH READ LOCK действуют для таблиц, расположенных в табличном пространстве.

Заключительные блокировки назначаются таблицам, расположенным в общем табличном пространстве, во время переименования табличного пространства, что предотвращает одновременное выполнение DDL. Одновременное выполнение DML поддерживается.

Для переименования InnoDB общего табличного пространства требуется привилегия CREATE TABLESPACE.

Опция AUTOEXTEND_SIZE определяет величину, на которую InnoDB увеличивает размер табличного пространства при его заполнении. Значение должно быть кратным 4 МБ. Значение по умолчанию — 0, что приводит к расширению табличного пространства в соответствии с неявным поведением по умолчанию. Для получения дополнительной информации см. Раздел 17.6.3.9, «Tablespace AUTOEXTEND_SIZE Configuration».

Клауза ENCRYPTION включает или отключает шифрование данных на уровне страниц для InnoDB общего табличного пространства или mysql системного табличного пространства.

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

Если переменная table_encryption_privilege_check включена, для изменения общего табличного пространства с клаузой ENCRYPTION, значение которой отличается от значения default_table_encryption, требуется привилегия TABLE_ENCRYPTION_ADMIN.

Включение шифрования для общего табличного пространства завершается ошибкой, если какая-либо таблица в табличном пространстве принадлежит схеме, определенной с помощью DEFAULT ENCRYPTION='N'. Аналогично, отключение шифрования завершается ошибкой, если какая-либо таблица в общем табличном пространстве принадлежит схеме, определенной с помощью DEFAULT ENCRYPTION='Y'.

Если выражение ALTER TABLESPACE, выполненное для общего табличного пространства, не включает клаузу ENCRYPTION, табличное пространство сохраняет свой текущий статус шифрования, независимо от значения default_table_encryption.

Когда общее табличное пространство или mysql системное табличное пространство зашифрованы, все таблицы, находящиеся в табличном пространстве, зашифрованы. Аналогично, таблица, созданная в зашифрованном табличном пространстве, зашифрована.

Алгоритм INPLACE используется при изменении атрибута ENCRYPTION общего табличного пространства или mysql системного табличного пространства. Алгоритм INPLACE разрешает одновременное выполнение DML над таблицами, находящимися в табличном пространстве. Одновременное выполнение DDL заблокировано.

Для получения дополнительной информации см. Раздел 17.13, «Шифрование данных InnoDB в состоянии покоя».

Опция ENGINE_ATTRIBUTE используется для задания атрибутов табличного пространства для первичных движков хранения. Опция зарезервирована для будущего использования.

ALTER TABLESPACE ts1 ENGINE_ATTRIBUTE='{"key":"value"}';

Значения ENGINE_ATTRIBUTE могут повторяться без ошибок. В этом случае используется последнее указанное значение.

Значения ENGINE_ATTRIBUTE не проверяются сервером и не очищаются при изменении движка хранения таблицы.

Изменение отдельных элементов значения атрибута JSON запрещено. Вы можете только добавить или заменить атрибут.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/alter-tablespace.html

Spec-Zone.ru

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