13.1.30 DROP TABLESPACE 语句
DROP TABLESPACE tablespace_name
[ENGINE [=] engine_name]
该语句删除先前使用CREATE TABLESPACE创建的 table 空间。所有 MySQL NDB Cluster 7.5 版本以及标准 MySQL Server 中的InnoDB
都支持它。
ENGINE
设置使用 table 空间的存储引擎,其中* engine_name
*是存储引擎的名称。当前,支持值InnoDB
和NDB
。如果未设置,则使用值default_storage_engine。如果它与用于创建 table 空间的存储引擎不同,则DROP TABLESPACE
语句失败。
对于InnoDB
table 空间,必须在进行DROP TABLESPACE
操作之前从 table 空间中删除所有 table。如果 table 空间不为空,则DROP TABLESPACE
返回错误。
与InnoDB
系统 table 空间一样,截断或删除存储在常规 table 空间中的InnoDB
table 会在 table 空间.ibd 数据文件中创建可用空间,该空间只能用于新的InnoDB
数据。空间不会通过像每 table 文件 table 空间那样的操作释放回 os。
要删除的NDB
table 空间不得包含任何数据文件;换句话说,在删除NDB
table 空间之前,必须首先使用ALTER TABLESPACE ...删除数据文件删除其每个数据文件。
Notes
-
table 空间不会自动删除。必须使用
DROP TABLESPACE
明确删除 table 空间。即使该操作删除了属于该 table 空间的所有 table,DROP DATABASE对此也没有影响。 -
DROP DATABASE操作可以删除属于常规 table 空间的 table,但是即使操作删除了属于该 table 空间的所有 table,也不能删除该 table 空间。必须使用
DROP TABLESPACE tablespace_name
明确删除 table 空间。 -
与系统 table 空间类似,删节或删除存储在常规 table 空间中的 table 会在常规 table 空间.ibd 数据文件内部内部创建可用空间,该可用空间仅可用于新的
InnoDB
数据。每个 table 文件 table 空间的空间不会释放回 os。
InnoDB Example
本示例演示如何删除InnoDB
常规 table 空间。通用 table 空间ts1
是使用单个 table 创建的。在删除 table 空间之前,必须删除 table。
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 Example
此示例说明如何在首先创建 table 空间之后删除具有数据文件mydata-1.dat
的NDB
table 空间myts
,并假设存在名为mylg
的日志文件组(请参见第 13.1.15 节“ CREATE LOGFILE GROUP 语句”)。
mysql> CREATE TABLESPACE myts
-> ADD DATAFILE 'mydata-1.dat'
-> USE LOGFILE GROUP mylg
-> ENGINE=NDB;
您必须先使用ALTER TABLESPACE从 table 空间中删除所有数据文件,如下所示,然后才能将其删除:
mysql> ALTER TABLESPACE myts
-> DROP DATAFILE 'mydata-1.dat'
-> ENGINE=NDB;
mysql> DROP TABLESPACE myts;