Mysql 磁盘清理相关要点

1. 为啥磁盘还是满的 ?

应该是 MySQL 并没有真正清理掉这部分数据,而是假删除。这种假删除的行为在 Linux 中并不稀罕,属于常规操作,算是一种策思想,所以断定 MySQL 也这么干了。

查看碎片信息命令:

SELECT * from 
(
    SELECT CONCAT(table_schema,'.',table_name) AS 'table_name', 
    table_rows AS 'Number of Rows', 
    CONCAT(ROUND(data_length/(1024*1024),6),' M') AS 'data_size', 
    CONCAT(ROUND(index_length/(1024*1024),6),' M') AS 'index_size' , 
    CONCAT(ROUND(data_free/(1024*1024),6),' M') AS'data_free',
    ENGINE as 'engine'
    FROM information_schema.TABLES 
    WHERE table_schema = #{库名}
) t ORDER BY data_free DESC;
  • data_size :数据的大小
  • index_size :索引的大小
  • data_free :数据在使用中的留存空间
  • engine :表引擎名称
    其中 data_free 代表磁盘碎片的大小, 也就是需要消灭清理的地方。

2. 磁盘清理神器

不同的 MySQL 存储引擎清理方式有所不同。

SHOW ENGINES;  // 查看引擎命令

MySQL 中有多种存储引擎,常用的有 MyISAM 和 InnoDB,先看看这两个有什么特点:

3.1 MyISAM 引擎

MyISAM 基于 ISAM 存储引擎,并对其进行扩展。

  • 支持 B-tree/FullText/R-tree 索引类型
  • 锁级别为表锁,表锁优点是开销小,加锁快;缺点是锁粒度大,发生锁冲动概率较高,容纳并发能力低,这个引擎适合查询为主的业务;
  • 此引擎不支持事务,也不支持外键;
  • BLOB 和 TEXT 列可以被索引;
  • 强调了 快速读取操作,比如他存储表的行数,只需要直接读取已经保存好的值而不需要进行全表扫描。

3.2 InnoDB 引擎

  • 支持事务,支持回滚,支持外键;
  • 支持 Hash/B-tree 索引类型;
  • 锁级别为行锁,行锁优点是适用于高并发的频繁修改,高并发是性能优于 MyISAM;
  • 系统小号较大,不仅缓存自身,也缓存数据,相比于 MyISAM 需要更大的内存。

3.3 操作命令

InnoDB 可以选择的操作命令包括:

OPTIMIZE TABLE tablename
ALTER TABLE tablename ENGINE = InnoDB

实际上运行上述清理命令时,MySQL 会锁定表,清理的数据越大,消耗的时间越久,因此这个操作一定要在夜深人静的时候操作。
命令好像是一句废话,它实际执行的是一个空的 ALTER 命令会重建整个表,删除未使用的空白空间。

4. MySQL 为什么会有碎片

以 InnoDB 存储引擎为例,来看看为什么会出现碎片。

  • 当执行删除一些行,这些行只是标记为“已删除”,而不是真的从索引中物理删除了,因而空间并没有真正的被释放回收。
  • 大量随机删除操作,会造成不连续的空白空间,当插入数据时,这些空白空间会被优先利用起来,但是肯定不会被全部利用起来,也就会存在数据碎片。
  • 大量 UPDATE 操作,InnoDB 的最小物理存储分配单位是页,在更新变长时 UPDATE 也可能导致页分裂,频繁的也分裂,页会变得稀疏,并且被不规则的填充,最终会有碎片,比如原来 256 字节修改后是 128 字节,那么可能出现 128 字节左右的空洞无法被利用。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容