截断[表]tbl_name.
截断表
清空一个表。它要求降低
特权。逻辑上,截断表
类似于a删除
删除所有行或一系列的声明下拉表
和创建表
陈述。
为了达到高绩效,截断表
绕过删除数据的DML方法。因此,它不会导致在删除
触发到火灾,它无法执行Innodb.
具有父子外键关系的表,并且不能像DML操作一样滚动。然而,截断表
对于使用原子ddl支持的存储引擎的表上的操作,如果服务器在操作期间停止,则会完全提交或回滚。有关更多信息,请参见第13.1.1节“原子数据定义陈述支持”。
虽然截断表
类似于删除
,它被归类为DDL语句而不是DML语句。它不同于删除
通过以下方式:
截断操作删除并重新创建表,比逐个删除行更快,特别是对于大表。
截断操作会导致隐式提交,因此无法回滚。看第13.3.3节“导致隐含提交的陈述”。
如果会话持有活动的表锁,则无法执行截断操作。
截断操作不会返回有意义的值为已删除的行数。通常的结果是“0行受影响,“哪一个应该被解释为“无信息。“
只要表定义有效,就可以将表重新创建为空表
截断表
,即使数据或索引文件已损坏。任何
自动递增
值重置为其启动值。即使是真的myisam.
和Innodb.
,通常不会重复使用序列值。与分区表一起使用时,
截断表
保留分区;也就是说,数据和索引文件被删除并重新创建,而分区定义不受影响。这
截断表
声明没有援引在删除
触发器。截断损坏
Innodb.
表支持。
截断表
被处理为二进制记录和复制作为DDL而不是DML的目的,并且始终以语句记录。
截断表
对于一个表关闭了与打开的表的所有处理程序处理程序开放
。
在MySQL 5.7和更早的版本中,系统中有一个较大的缓冲池和Innodb_Adaptive_Hash_Index.
启用,A截断表
由于删除表的自适应哈希索引条目(Bug#68184)时,操作可能导致系统性能暂时降低系统性能。重新绘制截断表
至下拉表
和创建表
在MySQL 8.0中,避免有问题的LRU扫描。
截断表
可以与性能架构摘要表一起使用,但效果是将摘要列重置为0或空值
,不要删除行。看第27.12.20节“绩效架构摘要表”。
截断的A.Innodb.
驻留在文件pher-per-table表空间中的表丢弃了现有的表空间并创建一个新的表空间。如MySQL 8.0.21,如果用早期版本创建表空间并将其驻留在未知目录中,Innodb.
在默认位置创建新表空间,并将以下警告写入错误日志:数据目录位置必须位于已知目录中。数据目录位置将被忽略,文件将放入默认的Datadir位置。已知的目录是由此定义的目录datadir.
那innodb_data_home_dir
, 和innodb_directories
变量。具有截断表
在其当前位置创建表空间,将目录添加到innodb_directories
在运行之前设置截断表
。