MySQL---删除时做了什么


 1.delete操作会生成插入相同记录的记录复用和page复用
2.delete会产生page空洞,随机insert也会产生page空洞(页分裂),索引update分解为delete和insert也会产生空洞
3.重建表可以使数据在page上更紧凑
4.alter table tb_name engine=innodb 在非online ddl 时server层生成临时表且mdl写锁,阻塞其他会话dml操作,锁阻塞时间久。在online ddl时,时innodb引擎操作步骤:
a.扫描表页,获取表的dml读锁;
b.将表页复制到一个临时文件,以b+树格式存储;
c.在扫描和复制page的过程生成row.log日志记录ddl复制过程的dml操作;
d.将row.log操作日志应用到临时文件;
e.获取dml的写锁,临时文件与表文件替换

5.ddl online时,innodb表加全文索引时,会阻塞dml操作,其实效果与非online ddl一样的。ddl online一定是inplace;inplace 的ddl不一定是online,例如:添加fulltext索引和spatial索引
6.optimize table 重建表及索引,收集统计信息
alter table tb engine=innodb 重建表其实也收集统计信息
analyze table tb 重新收集统计信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值