【MySQL】数据库delete和trancate区别(约262字)

delete和truncate都是用来删除数据或表的命令,但是它们之间有一些区别。

  • delete属于数据库DML操作语言,只删除数据不删除表的结构,会走事务,执行时会触发trigger;
  • 在InnoDB中,DELETE其实并不会真的把数据删除,mysql实际上只是给删除的数据打了个标记为已删除,因此delete删除表中的数据时,表文件在磁盘上所占空间不会变小,存储空间不会被释放,只是把删除的数据行设置为不可见。虽然未释放磁盘空间,但是下次插入数据的时候,仍然可以重用这部分空间(重用→覆盖);
  • DELETE执行时,会先将所删除数据缓存到rollback segement中,事务commit之后生效;
  • delete from table_name删除表的全部数据,对于MyISAM会立刻释放磁盘空间,InnoDB不会释放磁盘空间;truncate用于删除表中的所有数据,但是保留表的结构。使用truncate命令后,表的结构和数据都会被删除,无法恢复 。

THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容