iis部署网站 asp 物理路径,各大网站图片,电子商务网站设计目的及要求,汽车企业管理系统今天小编给大家梳理一下MYSQL删除操作Delete、Truncate、Drop用法有什么区别#xff0c;到底该如何合理使用#xff0c;希望对大家能有帮助#xff01;1、执行速度比较Delete、Truncate、Drop关键字都可以删除数据droptruncatedelete2、原理方面2.1 deletedelete属于… 今天小编给大家梳理一下MYSQL删除操作Delete、Truncate、Drop用法有什么区别到底该如何合理使用希望对大家能有帮助1、执行速度比较Delete、Truncate、Drop关键字都可以删除数据droptruncatedelete2、原理方面2.1 deletedelete属于数据库DML操作语言只会删除数据表中的记录会执行事务执行的时候也会触发触发器。InnoDB数据库引擎中执行delete操作只会给删除的记录打上了删除标记并不会真正删除数据只是把删除的数据记录设置为不可见不会释放磁盘空间如果插入新的数据可以覆盖该部分空间。如果开启事务的话执行delete操作会先将要删除数据缓存到rollback segement中等事务commit之后才生效。delete from table_name 不带查询条件会删除表的全部数据MyISAM引擎会立刻释放磁盘空间InnoDB 不会释放磁盘空间;如果带查询条件的话都不会释放磁盘空间可以执行optimize table table_name 会立刻释放磁盘空间。建议如果需要释放存储空间的话可以执行delete后然后执行optimize table table_name 语句达到清理磁盘空间的目的。-- 查询数据库test对应的表t_user 占用的磁盘空间
select concat(round(sum(DATA_LENGTH/1024/1024),2),M) as table_size
from information_schema.tables
where table_schematest AND table_namet_user;说明delete 操作是逐行执行删除的并且同时将每行的的删除操作日志记录在redo和undo表空间中去便于进行回滚rollback和重做操作因此生成的大量操作日志也会占用磁盘空间。2.2 truncatetruncate是数据库DDL定义语言不受事务影响也不会触发 trigger。执行操作后会立即生效无法找回删除的数据。执行truncate table table_name 会立刻释放磁盘空间 不管是 InnoDB和MyISAM 都一样 。truncate可以退快速清空一个表。并且重置auto_increment自动增长的值。针对不同类型的数据存储引擎是有区别的具体如下MyISAMtruncate会重置auto_increment自增序列的值为1。而delete后表仍然保持auto_increment。InnoDBtruncate会重置auto_increment的值为1。delete后表仍然保持auto_increment。但是在做delete整个表之后重启MySQL的话则重启后的auto_increment会被置为1。说明InnoDB的表本身是无法持久保存auto_increment。delete表之后auto_increment仍然保存在内存但是重启后就找不到了只能从1开始。实际上重启后的auto_increment会从 SELECT 1MAX(ai_col) FROM t 开始。使用truncate操作的时候要最好备份表避免出现不可挽回的情况。2.3 dropdrop属于数据库DDL定义语言和truncate一样。执行后会立即生效不可恢复。drop table table_name 执行成功后不管是MyISM还是InnoDB都会立刻释放磁盘空间 并且会删除该数据表上依赖的约束(constrain)、触发器(trigger)、索引(index); 依赖于该表的存储过程/函数将保留,但是会变为失效状态。总结在工作当中执行数据库删除的时候一定要慎重再慎重建议每次进行数据删除的使用最好数据表的备份工作这样就会大大减少你删除跑路的几率。很多时候不要过于相信自己的动手能力老虎还有打盹的时候万一手滑了呢。尽可能养成好的数据库运维习惯这样会让自己少跌跟头你的事业才会更加顺利。IT技术分享社区个人博客网站https://programmerblog.xyz文章推荐程序员效率画流程图常用的工具程序员效率整理常用的在线笔记软件远程办公常用的远程协助软件你都知道吗51单片机程序下载、ISP及串口基础知识硬件断路器、接触器、继电器基础知识