当前位置: 首页 > 工具软件 > Truncate > 使用案例 >

TRUNCATE

西门智
2023-12-01

MYSQL TRUNCATE

所需权限

需要拥有DROP权限

TRUNCATEDELETE区别

  • 等同与DROP和重新CREATE表,效率比DELETE高,对大表进行操作情况下,效率优势更明显
  • TRUNCATE会进行隐式提交,所以不能够回滚
  • 当session持有一个表锁的话,不能进行TRUNCATE操作
  • 在以InnoDBNDB为存储引擎的表中,如果有其他表以当前表的字段作为外键,不能进行TRUNCATE操作。如果是当前表字段以当前表另一个字段作为外键时,能进行TRUNCATE操作。
  • TRUNCATE操作不会返回具体删除了多少条记录
  • 只要表格式文件***tbl_name.frm***有效,就能通过TRUNCATE操作将表清空
  • AUTO_INCREMENT会被重置为起始值。即使是一般不会重用自增值的MyISAMInnoDB的表也会重置。
  • 与分区表一起使用时,TRUNCATE表保留分区;也就是说会删除和重新创建数据和索引文件,而不影响分区定义(***.par***)文件。
  • 不会触发ON DELETE触发器

其他注意事项

  • 表的TRUNCATE TABLE关闭使用HANDLER OPEN打开的表的所有处理程序。
  • 出于二进制日志记录和复制的目的,将TRUNCATE TABLE视为DROP TABLE,然后是CREATE TABLE,即***DDL***而不是***DML***。 这是由于以下事实:在使用InnoDB和其他事务隔离级别不允许基于语句的日志记录(READ COMMITTEDREAD UNCOMMITTED)的事务存储引擎时,在使用***STATEMENT***或***MIXED***日志记录模式时未记录并复制该语句。但是,它仍以上述方式应用于使用InnoDB的复制从属服务器上。
  • TRUNCATE可以与Performance Schema摘要表一起使用,但是效果是将摘要列重置为0或NULL,而不是删除行。

参考连接:
https://dev.mysql.com/doc/refman/5.7/en/truncate-table.html

 类似资料: