Spec-Zone.ru › MySQL 5.7

13.1.30 Заявление DROP TABLESPACE

DROP TABLESPACE tablespace_name
    [ENGINE [=] engine_name]

Это заявление удаляет табличное пространство, которое было ранее создано с помощью CREATE TABLESPACE. Оно поддерживается всеми выпусками MySQL NDB Cluster 7.5, а также InnoDB в стандартном MySQL Server.

ENGINE задаёт движок хранения, который использует табличное пространство, где engine_name — имя движка хранения. В настоящее время поддерживаются значения InnoDB и NDB. Если не задано, используется значение default_storage_engine. Если оно отличается от движка хранения, используемого при создании табличного пространства, то заявление DROP TABLESPACE завершается ошибкой.

Для табличного пространства InnoDB все таблицы должны быть удалены из табличного пространства до операции DROP TABLESPACE. Если табличное пространство не пустое, DROP TABLESPACE возвращает ошибку.

Как и для системного табличного пространства InnoDB, обрезка или удаление InnoDB таблиц, хранящихся в общем табличном пространстве, создаёт свободное место в табличном пространстве, которое может быть использовано только для новых InnoDB данных. Место не возвращается операционной системе, как это происходит для табличных пространств с файлом на таблицу.

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

Примечания

  • Табличные пространства не удаляются автоматически. Табличное пространство должно быть удалено явно с помощью DROP TABLESPACE. DROP DATABASE не имеет никакого эффекта в этом отношении, даже если операция удаляет все таблицы, принадлежащие табличному пространству.

  • Операция DROP DATABASE может удалить таблицы, принадлежащие общему табличному пространству, но не может удалить само табличное пространство, даже если операция удаляет все таблицы, принадлежащие этому табличному пространству. Табличное пространство должно быть удалено явно с помощью DROP TABLESPACE tablespace_name.

  • Аналогично системному табличному пространству, обрезка или удаление таблиц, хранящихся в общем табличном пространстве, создаёт свободное внутреннее пространство в общем табличном пространстве, которое может быть использовано только для новых InnoDB данных. Место не возвращается операционной системе, как это происходит для табличных пространств с файлом на таблицу.

Пример InnoDB

Этот пример демонстрирует, как удалить общее табличное пространство InnoDB. Общее табличное пространство ts1 создаётся с одной таблицей. Перед удалением табличного пространства таблица должна быть удалена.

mysql> CREATE TABLESPACE `ts1` ADD DATAFILE 'ts1.ibd' Engine=InnoDB;

mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY) TABLESPACE ts1 Engine=InnoDB;

mysql> DROP TABLE t1;

mysql> DROP TABLESPACE ts1;

Пример NDB

Этот пример показывает, как удалить табличное пространство NDB myts, имеющее файл данных под названием mydata-1.dat после первоначального создания табличного пространства и предполагает наличие группы файлов журнала под названием mylg (см. Раздел 13.1.15, «Заявление CREATE LOGFILE GROUP»).

mysql> CREATE TABLESPACE myts
    ->     ADD DATAFILE 'mydata-1.dat'
    ->     USE LOGFILE GROUP mylg
    ->     ENGINE=NDB;

Вы должны удалить все файлы данных из табличного пространства с помощью ALTER TABLESPACE, как показано здесь, прежде чем оно может быть удалено:

mysql> ALTER TABLESPACE myts
    ->     DROP DATAFILE 'mydata-1.dat'
    ->     ENGINE=NDB;

mysql> DROP TABLESPACE myts;

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

Spec-Zone.ru

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