【面试题】MySQL删除大量数据后,数据库文件为何纹丝不动?

一、问题背景

“删了90%数据,数据库文件为啥纹丝不动?这是MySQL的bug吗?”

这个问题也戳中了很多人的痛点——明明删了大把数据,硬盘空间死活不释放!

你是不是也遇到过:

  • 执行DELETE后,磁盘空间未释放
  • .ibd文件大小不变,运维报警频发
  • 明明数据量减少,统计信息却 “岿然不动”

别慌,这真不是Bug! 而是 InnoDB 存储引擎的底层设计机制决定的。今天就来扒开 InnoDB 的底层逻辑,教你 3 招驯服 “顽固” 的数据库文件。

二、删数据≠丢空间:MySQL 的 “假删除” 套路

先看一组颠覆认知的实验:

Step 1:创建 200 万条数据的表

-- 创建测试数据库
CREATEDATABASEtest;
-- 创建测试表
CREATETABLE test_demo (
    idINT PRIMARY KEY AUTO_INCREMENT,
    nameVARCHAR(100),
    contentTEXT,
    create_time DATETIME
) ENGINE=InnoDB;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔向理想的星辰大海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值