mysql 删除记录会删除次级索引吗?

2019-09-04 16:52:15 +08:00
 Aresxue

mysql 的默认删除是将行记录中的 delete_mask 从 0 修改为 1,这样该行就可以被复用了,但是非聚簇索引存在别的页,会根据行记录的聚簇索引反向查到所有非聚簇索引然后把它们删除吗?

4170 次点击
所在节点    MySQL
5 条回复
vino2014zly
2019-09-04 17:59:51 +08:00
设想一下如果不删除,查询走覆盖索引的时候咋办?
Aresxue
2019-09-04 19:04:18 +08:00
@vino2014zly 走了之后并找不到聚簇索引,不影响结果集,但是对性能会有影响。
ilumer
2019-09-05 09:37:11 +08:00
@Aresxue 走了索引覆盖 就和聚簇索引没啥关系了
Aresxue
2019-09-06 09:40:18 +08:00
@ilumer 索引覆盖是比较理想的情况,在实际中一般还要根据指针再去找聚簇索引获取整个行。我的疑惑点在于这些二级索引此时是如何处理的,如果是和其他行共有的二级索引也不可能直接删除吧?但是如果二级索引没有指向聚簇索引的记录了此时是不是会删除?删除是当前线程去操作还是异步 purge 线程去清理。
ilumer
2019-09-06 11:05:14 +08:00
@Aresxue 超纲了 菜鸡不会 瞎猜不会删除

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/597918

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX