美文网首页
MySQL数据库表空间回收问题

MySQL数据库表空间回收问题

作者: frankie_cheung | 来源:发表于2020-07-16 22:08 被阅读0次

    innodb_file_per_table参数

    innodb_file_per_table该参数设置为on则代表数据库的表每个都以后缀为.ibd的文件储存。

    drop table可以删除整个表,释放表空间

    delete删除在数据库层面的理解

    假如你在delete一条数据,innodb只会把删除的该条记录标记为已删除,所以在物理文件中并没有删除,假如再插入数据时,这个已经被标记的位置会复用,即可以给后来者作为一个写入的空间。
    我们知道MySQL中innodb引擎的存储是按照页的格式存贮的,示例如下:


    image.png

    一行记录删除后,会被复用,当一整个数据页被删除后,也会复用。
    且可以被用于任何位置。

    延展理解

    其实数据库的表远没有Linux df -h的那么大,因为出现一些删除和插入,更新操作,导致数据库某些页或者某些记录被标记为可复用,但是数据库的物理文件尚未释放这些空间

    相关文章

      网友评论

          本文标题:MySQL数据库表空间回收问题

          本文链接:https://www.haomeiwen.com/subject/pwzmhktx.html