网易首页 > 网易号 > 正文 申请入驻

新来个技术总监:发现谁再用 delete 删数据直接开除!

0
分享至

Java精选面试题(微信小程序):5000+道面试题和选择题,真实面经简历模版,包含Java基础、并发、JVM、线程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架构设计、大厂真题等,在线随时刷题!

源于一个读者实际工作中遇到的问题,老大一直强调线上不允许用 delete 来删除 Mysql 数据库的数据(有一次发飚了,说如果再发现谁这样操作直接开除)。为什么 MySQL 不建议使用 delete 删除数据呢?

这就得从以下几方面说起!

MySQL 是一种关系型数据库管理系统,它的数据存储是基于磁盘上的文件系统实现的。MySQL 将数据存储在表中,每个表由一系列的行和列组成。每一行表示一个记录,每一列表示一个字段。表的结构由其列名、数据类型、索引等信息组成。

MySQL 的数据存储采用了多种技术来优化性能和存储效率。以下是 MySQL 数据存储的一些关键特性

存储引擎

MySQL 支持多种不同的存储引擎,每种引擎都有不同的性能和存储特性。常见的存储引擎有 InnoDB、MyISAM、Memory 等。不同的存储引擎支持不同的数据存储方式,如 B树索引、哈希索引、全文索引等。、

数据页

MySQL 使用数据页来管理存储在磁盘上的数据。数据页是 MySQL 存储引擎中最基本的存储单元,通常情况下每个数据页的大小为 16KB。数据页包含多个记录,每个记录对应一行数据。

索引

MySQL 使用索引来优化数据的检索效率。索引是一种特殊的数据结构,它能够快速地查找表中的数据。MySQL 支持多种类型的索引,如 B 树索引、哈希索引、全文索引等。B 树索引是 MySQL 中最常用的索引类型,它能够快速地查找表中的数据。

事务

MySQL 支持事务,事务可以保证数据的一致性、可靠性和安全性。MySQL 的事务是基于 ACID 模型实现的,它能够确保数据在事务中的操作要么全部成功,要么全部回滚。事务的支持使得 MySQL 在多用户并发访问时能够保证数据的完整性和一致性。

总之,MySQL 的数据存储基于磁盘上的文件系统实现,采用多种技术来优化性能和存储效率,如存储引擎、数据页、索引、事务等。这些特性使得 MySQL 成为一种高性能、可靠和安全的关系型数据库管理系统。

MySQL删除数据的方式都有哪些?

咱们常用的三种删除方式:通过 delete、truncate、drop 关键字进行删除;这三种都可以用来删除数据,但场景不同。

执行速度:drop > truncate >> DELETE

从原理上理解

DELETE

DELETE from TABLE_NAME where xxx

DELETE 属于数据库DML操作语言,只删除数据不删除表的结构,会走事务,执行时会触发trigger;

在 InnoDB 中,DELETE其实并不会真的把数据删除,mysql 实际上只是给删除的数据打了个标记为已删除,因此 delete 删除表中的数据时,表文件在磁盘上所占空间不会变小,存储空间不会被释放,只是把删除的数据行设置为不可见。**虽然未释放磁盘空间,但是下次插入数据的时候,仍然可以重用这部分空间(重用 → 覆盖)。

DELETE执行时,会先将所删除数据缓存到rollback segement中,事务commit之后生效;

delete from table_name删除表的全部数据,对于MyISAM 会立刻释放磁盘空间,InnoDB 不会释放磁盘空间;

对于delete from table_name where xxx带条件的删除, 不管是InnoDB还是MyISAM都不会释放磁盘空间;

delete操作以后使用optimize table table_name会立刻释放磁盘空间。不管是InnoDB还是MyISAM 。所以要想达到释放磁盘空间的目的,delete以后执行optimize table 操作。

示例:查看表占用硬盘空间大小的SQL语句如下:(用M做展示单位,数据库名:csjdemo,表名:demo2)

select concat(round(sum(DATA_LENGTH/1024/1024),2),'M') as table_size     from information_schema.tables        where table_schema='csjdemo' AND table_name='demo2';
图片

然后执行空间优化语句,以及执行后的表Size变化:

optimize table demo2
图片

再看看这张表的大小,就只剩下表结构size了。

delete 操作是一行一行执行删除的,并且同时将该行的的删除操作日志记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,生成的大量日志也会占用磁盘空间

drop

Drop table Tablename

属于数据库DDL定义语言,同Truncate,执行后立即生效,无法找回

drop table table_name 立刻释放磁盘空间 ,不管是 InnoDB 和 MyISAM; drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index); 依赖于该表的存储过程/函数将保留,但是变为 invalid 状态。

小心使用 drop ,要删表跑路的兄弟,请在订票成功后在执行操作!

可以这么理解,一本书,delete是把目录撕了,truncate是把书的内容撕下来烧了,drop是把书烧了

truncate

属于数据库DDL定义语言不走事务,原数据不放到 rollback segment 中,操作不触发 trigger。执行后立即生效,无法找回

truncate table table_name 立刻释放磁盘空间 ,不管是 InnoDB和MyISAM 。truncate table其实有点类似于drop table 然后creat,只不过这个create table 的过程做了优化,比如表结构文件之前已经有了等等。所以速度上应该是接近drop table的速度;

truncate 能够快速清空一个表。并且重置auto_increment的值。

但对于不同的类型存储引擎需要注意的地方是:

  • 对于MyISAM,truncate会重置auto_increment(自增序列)的值为1。而delete后表仍然保持auto_increment。

  • 对于InnoDB,truncate会重置auto_increment的值为1。delete后表仍然保持auto_increment。但是在做delete整个表之后重启MySQL的话,则重启后的auto_increment会被置为1。

  • 也就是说,InnoDB 的表本身是无法持久保存auto_increment。delete表之后 auto_increment仍然保存在内存,但是重启后就丢失了,只能从1开始。实质上重启后的auto_increment会从 SELECT 1+MAX(ai_col) FROM t 开始。

小心使用 truncate,尤其没有备份的时候,如果误删除线上的表,记得及时跑路。

为什么不建议使用DELETE 删除数据

了解上面的一些原理之后,可以知道!

  • 无法恢复数据

在使用DELETE操作删除数据时,如果没有事先备份数据,一旦误操作就会导致数据无法恢复。因此,在进行任何数据操作之前,最好先备份数据,以便在出现错误时可以轻松地恢复数据。

  • 删除数据会导致索引失效,影响查询性能。

  • 删除数据会导致表空间的浪费,因为删除的数据并不会立即释放,而是留在表中,只是被标记为“已删除”。

  • 数据不一致。

如果在删除数据时表中存在外键关联,使用DELETE操作可能会导致其他表中的数据不一致。例如,如果一个表有一个外键,指向另一个表中的一行,如果从主表中删除行而不更新外键引用,则外键引用将成为无效引用。这可能会导致查询时出现错误,或者在更新时导致数据不一致。

总结

在工作当中执行数据库删除的时候一定要慎重再慎重,建议每次进行数据删除的使用最好数据表的备份工作,这样就会大大减少你删除跑路的几率。很多时候不要过于相信自己的动手能力,老虎还有打盹的时候,万一手滑了呢。尽可能养成好的数据库运维习惯,这样会让自己少跌跟头,你的事业才会更加顺利。

来源:www.rstk.cn/news/98507.htmlblog.csdn.net/qq_39390545/article/details/107144859

公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!

最近有很多人问,有没有读者交流群!加入方式很简单,公众号Java精选,回复“加群”,即可入群!

文章有帮助的话,点在看,转发吧!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
赌王千金何超莲上海被偶遇,个子小小却比例超好,身材也太顶了吧

赌王千金何超莲上海被偶遇,个子小小却比例超好,身材也太顶了吧

木子爱娱乐大号
2026-06-29 17:26:11
2003年,河南老农钓到一只乌龟,背上插4支箭,专家估值超过18亿

2003年,河南老农钓到一只乌龟,背上插4支箭,专家估值超过18亿

万象硬核本尊
2026-06-29 14:24:37
全红婵大变样!留起了长发,近170cm颜值惊人,“差点没认出来”

全红婵大变样!留起了长发,近170cm颜值惊人,“差点没认出来”

澳洲红领巾
2026-06-29 15:23:43
日本7-1巴西!盐贝健人社交媒体被冲,两队球迷高强度互喷

日本7-1巴西!盐贝健人社交媒体被冲,两队球迷高强度互喷

懂球帝
2026-06-29 11:26:16
全社会已处于量变到质变的临界点

全社会已处于量变到质变的临界点

大树乡谈
2026-06-28 22:52:35
迎来第一波“失业潮”的不是教师,不是医生,而是这四个行业!

迎来第一波“失业潮”的不是教师,不是医生,而是这四个行业!

职场资深秘书
2026-06-28 14:27:05
谢娜北京演唱会取消 票款全额退 交通住宿全报销

谢娜北京演唱会取消 票款全额退 交通住宿全报销

阿废冷眼观察所
2026-06-29 15:45:37
不止佛得角队长,还有身价8000万欧元的阿什拉夫!本届世界杯已有5名球员卷入性侵风波

不止佛得角队长,还有身价8000万欧元的阿什拉夫!本届世界杯已有5名球员卷入性侵风波

红星新闻
2026-06-29 13:58:13
“一”字涨停,逾45万手封单!500亿龙头,A股人气第一

“一”字涨停,逾45万手封单!500亿龙头,A股人气第一

新浪财经
2026-06-29 12:15:48
董路坚决拒绝和解!5800万金额未能达成共识,三方相关主体全部乱了阵脚

董路坚决拒绝和解!5800万金额未能达成共识,三方相关主体全部乱了阵脚

林子说事
2026-06-28 20:27:14
好一招声东击西!普京不简单,沉默7天的卢卡申科,突然现身北京

好一招声东击西!普京不简单,沉默7天的卢卡申科,突然现身北京

今夜繁星坠落
2026-06-29 13:00:33
2分钟内就相撞!东沙爆发对峙,海巡署舰开足马力冲向大陆海警船

2分钟内就相撞!东沙爆发对峙,海巡署舰开足马力冲向大陆海警船

阿龙聊军事
2026-06-28 08:23:30
凌晨1点,日本大战巴西,赛前传来3个坏消息!世界杯16强希望渺茫

凌晨1点,日本大战巴西,赛前传来3个坏消息!世界杯16强希望渺茫

锐评利物浦
2026-06-29 10:12:53
宁愿热死也不买中国空调?德媒怒斥中国正在“摧毁”欧洲

宁愿热死也不买中国空调?德媒怒斥中国正在“摧毁”欧洲

小柱解说游戏
2026-06-29 07:44:48
非法收受财物1.98亿余元 桂林市委原书记周家斌被判处无期徒刑

非法收受财物1.98亿余元 桂林市委原书记周家斌被判处无期徒刑

新京报
2026-06-29 17:06:34
克里姆林宫突传噩耗,普京的“接班人”离世,50年老友为何走散?

克里姆林宫突传噩耗,普京的“接班人”离世,50年老友为何走散?

流史岁月
2026-06-29 16:23:01
1分35秒念完稿子就跑!洪明甫半夜开辞职发布会 民众暴怒:侮辱人

1分35秒念完稿子就跑!洪明甫半夜开辞职发布会 民众暴怒:侮辱人

风过乡
2026-06-29 07:59:07
四渡赤水打的是国民党,电影《四渡》居然要和日本IP作战……

四渡赤水打的是国民党,电影《四渡》居然要和日本IP作战……

影视口碑榜
2026-06-29 13:38:35
中国若退出本届亚运会

中国若退出本届亚运会

安安说
2026-06-29 10:57:08
8999元成历史!iPhone 18 Pro涨价不可逆:内存问题解决也不降回原价

8999元成历史!iPhone 18 Pro涨价不可逆:内存问题解决也不降回原价

快科技
2026-06-27 20:18:14
2026-06-29 19:56:49
Java精选
Java精选
一场永远也演不完的戏
1795文章数 3859关注度
往期回顾 全部

科技要闻

杀疯了!深圳一天出两家200亿具身智能公司

头条要闻

媒体:中国再对日本出重拳 一红一黄两张牌同时打出

头条要闻

媒体:中国再对日本出重拳 一红一黄两张牌同时打出

体育要闻

他和伊朗队,再次赢得全世界的尊重

娱乐要闻

跟风电影《给阿公的牛肉丸》开机

财经要闻

近20家半导体企业开启新一轮涨价潮

汽车要闻

全新宝马iX3长轴版将于成都车展预售 四季度交付

态度原创

艺术
健康
家居
手机
亲子

艺术要闻

赵孟頫行书的巅峰之作,水平超越《圣教序》

狂吃“糯叽叽”小心肠梗阻!

家居要闻

传奇筑 日常诗

手机要闻

屏幕反人类,但AI绝了!酷派小方块上手:没法当主力机用

亲子要闻

宝蓝在客厅玩堆纸杯的游戏,好不容易都堆好,结果全被叔叔推倒了

无障碍浏览 进入关怀版