• java面试一日一题:mysql执行delete数据真的被删除了吗


    问题:请讲下mysql执行了delete操作,数据真的被删除了吗

    分析:这个问题考察对mysql底层存储的理解。

    回答要点:

    主要从以下几点去考虑,

    1、肯定没有真正删除?

    2、为什么这样设计?

    mysql执行delete操作后,存储在硬盘上的数据没有被删除,只不过在记录行上做了逻辑删除,即通过删除标识位实现。

    因为移除它们之后,很多其他的记录需要在磁盘上重新排列,这样会消耗大量的性能,比如如果是一张大表,存在索引,删除了其中一行,那么整个索引结构就会发生变化,随之而来的是要改变索引结构,必将带来磁盘IO,大家都知道磁盘IO是很浪费性能的。所有被删除的记录都会组成一个垃圾链表,这个链表中记录占用的空间叫做可重用空间,之后有新记录插入的时候可能把已删除记录占用的空间覆盖掉。

    一个爱写文章的程序员,欢迎关注我的公众号“北漂程序员”。我有故事,你有酒吗
  • 相关阅读:
    words you learn through youtube and so on in daily life
    python 随笔
    Zookeeper 指南
    Mac 后台服务
    Elasticsearch 指南
    架构之灰度部署
    架构之CDN缓存
    架构之微服务(zookeeper)
    架构之微服务(etcd)
    架构之微服务设计(Nginx + Upsync)
  • 原文地址:https://www.cnblogs.com/teach/p/14664926.html
Copyright © 2020-2023  润新知