当前位置:首页 >知识 >MySQL表空间回收的正确姿势 回收随着时间的确姿推移

MySQL表空间回收的正确姿势 回收随着时间的确姿推移

2024-06-30 17:11:20 [百科] 来源:避面尹邢网

MySQL表空间回收的空间正确姿势

作者:LinuxThings 运维 数据库运维 为了缩小磁盘上表数据文件占用的空间,我们在最大的回收一张业务表中用delete命令删除了一半儿的旧数据,删除之后,确姿磁盘上表数据文件并没有缩小,空间即使删除整张表的回收数据,文件依然没有变小,确姿这是空间为什么呢?

[[374540]]

本文转载自微信公众号「Linux开发那些事儿」,作者 LinuxThings  。回收转载本文请联系Linux开发那些事儿公众号。确姿

MySQL表空间回收的正确姿势 回收随着时间的确姿推移

不知道大家有没有遇到这样的空间一种情况,线上业务在MySQL表上做增删改查操作,回收随着时间的确姿推移,表里面的空间数据越来越多,表数据文件越来越大,回收数据库占用的确姿空间自然也逐渐增长

MySQL表空间回收的正确姿势 回收随着时间的确姿推移

为了缩小磁盘上表数据文件占用的空间,我们在最大的一张业务表中用delete命令删除了一半儿的旧数据,删除之后,磁盘上表数据文件并没有缩小,即使删除整张表的数据,文件依然没有变小,这是为什么呢?

MySQL表空间回收的正确姿势 回收随着时间的确姿推移

本文将详细的分析上述问题,并给出正确回收表空间的方法

前置说明

目前大部分MySQL数据库都是用的 InnoDB 引擎,所以如无特殊说明,文中的实例都是基于InnoDB引擎的

在MySQL配置中有个配置项叫 innodb_file_per_table 将它设置为1之后, 每个表的数据会单独存储在一个以 .ibd 为后缀的文件中

如果 innodb_file_per_table 没有开启的话, 表的数据是存储在系统的共享表空间,这样即使删除了表,共享表空间也不会释放这部分空间

所以,通常情况下,都是将 innodb_file_per_table 选项设置为 1, 同时为了能直观的看到表数据文件的大小变化,文中的实例也都是基于开启了 此选项来说明的

问题重现

新建一张表ta,表的结构如下

  1. mysql> show create table ta\G 
  2. (责任编辑:热点)

    推荐文章
    热点阅读