DROP TABLESPACE tablespace_name
[ENGINE [=] engine_name]
此语句删除以前使用创建的表空间CREATE TABLESPACE
。所有 MySQL NDB Cluster 7.5 版本都支持它,
InnoDB
标准 MySQL 服务器也支持它。
ENGINE
设置使用表空间的存储引擎,其中engine_name
是存储引擎的名称。当前,值
InnoDB
和NDB
受支持。如果未设置,
default_storage_engine
则使用的值。如果它与用于创建表空间的存储引擎不同,则DROP TABLESPACE
语句失败。
对于InnoDB
表空间,必须在DROP
TABLESPACE
操作之前从表空间中删除所有表。如果表空间不为空,则
DROP TABLESPACE
返回错误。
与InnoDB
系统表空间一样,截断或删除InnoDB
存储在通用表空间中的表会在表空间
.ibd 数据文件中创建可用空间,该空间只能用于新InnoDB
数据。空间不会像 file-per-table 表空间那样通过此类操作释放回操作系统。
要删除的NDB
表空间不得包含任何数据文件;换句话说,在删除
NDB
表空间之前,必须先使用
ALTER TABLESPACE
... DROP DATAFILE
.
笔记
表空间不会自动删除。必须使用 显式删除表空间
DROP TABLESPACE
。DROP DATABASE
在这方面没有影响,即使该操作删除了属于该表空间的所有表。操作可以删除属于通用表空间的
DROP DATABASE
表,但不能删除表空间,即使该操作删除了属于该表空间的所有表。必须使用 显式删除表空间。DROP TABLESPACE
tablespace_name
与系统表空间类似,截断或删除存储在通用表空间中的表会在通用表空间 .ibd 数据文件内部创建只能用于新
InnoDB
数据的可用空间。空间不会像 file-per-table 表空间那样释放回操作系统。
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
空间后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;