10bet网址
MySQL 8.0参考手册
相关文件10bet官方网站 下载本手册 本手册摘录

13.1.37截断表声明

截断[表]tbl_name.

截断表清空一个表。它要求降低特权。逻辑上,截断表类似于a删除删除所有行或一系列的声明下拉表创建表陈述。

为了达到高绩效,截断表绕过删除数据的DML方法。因此,它不会导致在删除触发到火灾,它无法执行Innodb.具有父子外键关系的表,并且不能像DML操作一样滚动。然而,截断表对于使用原子ddl支持的存储引擎的表上的操作,如果服务器在操作期间停止,则会完全提交或回滚。有关更多信息,请参见第13.1.1节“原子数据定义陈述支持”

虽然截断表类似于删除,它被归类为DDL语句而不是DML语句。它不同于删除通过以下方式:

  • 截断操作删除并重新创建表,比逐个删除行更快,特别是对于大表。

  • 截断操作会导致隐式提交,因此无法回滚。看第13.3.3节“导致隐含提交的陈述”

  • 如果会话持有活动的表锁,则无法执行截断操作。

  • 截断表失败了Innodb.表或NDB.表如果有的话外钥匙来自引用该表的其他表的约束。允许同一表的列之间的外键约束。

  • 截断操作不会返回有意义的值为已删除的行数。通常的结果是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在运行之前设置截断表