mysql delete之后 释放磁盘空间

一、起因:收到运维需求需要清理两张监控告警的日志表,数据删除之后,发现磁盘空间并未释放。

二、分析:InnoDB 数据库在使用 delete 进行删除操作的时候,只会将已经删除的数据标记为删除,并没有把数据文件删除,因此并不会彻底的释放空间。这些被删除的数据会被保存在一个链接清单中,当有新数据写入的时候,MySQL 会重新利用这些已删除的空间进行再写入。

三、解决:官方推荐可以使用 OPTIMIZE TABLE 命令来优化表,该命令会重新利用未使用的空间,并整理数据文件的碎片。但是会锁表,解决锁表问题,可以用PT(pt-osc)工具 或者 GH(gh-ost)工具。感兴趣的同学请自行百度相关知识。

语法如下:

OPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL]
    TABLE tbl_name [, tbl_name] ...
  注释:OPTIMIZE TABLE 将重新组织表数据和相关索引数据的物理存储空间,减少存储空间并提高I/O访问效率。对每个表所做的影响取决于该表所使用的存储引擎。该命令对视图无效。

四、举例说明:

1.查看优化前表占用空间大小:
root@dbs00 13:58:46:monitor$ ls -alth
total 7.1G
-rw-r-----  1 mysql mysql 5.1G Nov 21 13:59 job_status_trace_log.ibd
-rw-r-----  1 mysql mysql 1.2G Nov 21 13:58 job_execution_log.ibd

2.使用OPTIMIZE 命令:

system@localhost 14:22:  [monitor]> optimize table job_execution_log;

3.查看优化之后的磁盘空间占用大小:

root@dpsvstadbs00 14:25:10:monitor$ ls -alth
total 868M
-rw-r-----  1 mysql mysql 368K Nov 21 14:26 job_exect_log.ibd
-rw-r-----  1 mysql mysql  17M Nov 21 14:26 job_trace_log.ibd

4.可以使用SQL 语句查看表占用空间的大小(默认M为单位)
system@localhost 17:52:  [monitor]> select table_name,(data_length+index_length)/1048576,table_rows from information_schema.tables where t
able_schema='monitor' and table_name='job_status_trace_log';
| table_name           | (data_length+index_length)/1048576 | table_rows |
+----------------------+------------------------------------+------------+
| job_trace_log |                             9.0625 |      10401 |
+----------------------+------------------------------------+------------+
1 row in set (0.00 sec)

补充:

1、对于 InnoDB 存储引擎 MySQL,OPTIMIZE 命令,将会被映射为 ALTER TABLE ... FORCE,并将重建表,更新索引统计信息,释放未使用的索引空间,这就意味着在一定程度上 OPTIMIZE 操作会造成一定的表阻塞(具体可以参加官网)。

2、OPTIMIZE 操作会锁表 !!最好避开你得服务可用时间 做清理,或者 用PT/GH工具

3、OPTIMIZE 操作相当于物理删除,一旦删除,恢复就很麻烦。

官网地址:https://dev.mysql.com/doc/refman/5.7/en/optimize-table.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343