解析mysql 表中的碎片产生原因以及清理


Posted in PHP onJune 22, 2013

大量删除数据必然会在数据文件中造成不连续的空白空间,而当插入数据时,这些空白空间则会被利用起来 。
对于不同的存储引擎整理碎片的方式不一样。
myisam
可以有以下方式:
mysql> show table status from test like 'testusers'\G
*************************** 1. row ***************************
  ....
           Rows: 3
 Avg_row_length: 45
         Data_free: 40
.....
因为在中间删除,所以留下了空白
mysql> optimize table testusers;
+----------------+----------+----------+----------+
| Table          | Op       | Msg_type | Msg_text |
+----------------+----------+----------+----------+
| test.testusers | optimize | status   | OK       |
+----------------+----------+----------+----------+
1 row in set (0.00 sec)
mysql> show table status from test like 'testusers'\G
*************************** 1. row ***************************
   ...
           Rows: 3
 Avg_row_length: 32
    Data_length: 96
      Data_free: 0
1 row in set (0.00 sec)
在optimize后,Data_free已经变为0.碎片数据被清除。
同样还可以用以下方式,效果和optimize一样
./bin/mysqlcheck  -uroot -proot --socket=./tmp/mysql.sock  -o test testusers
innodb
对于innodb 使用optimize和mysqlcheck都不起作用,可以如下进行
对于小表的话直接用ALTER TABLE table_name ;回收表空间,对于大表就不能直接采用这种方式,因为会造成长时间的锁表。可以采用新建表转移数据,然后删除旧表的形式,然后再重命名表。

另外有个python可以查看innodb表空间信息,可以在网上找哈,用python写的。

PHP 相关文章推荐
生成静态页面的PHP类
Nov 25 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
Jun 27 PHP
yii框架配置默认controller和action示例
Apr 30 PHP
ThinkPHP视图查询详解
Jun 30 PHP
CI框架装载器Loader.php源码分析
Nov 04 PHP
PHP中array_slice函数用法实例详解
Nov 25 PHP
关于URL最大长度限制的相关资料查证
Dec 23 PHP
PHP也能干大事 随机函数
Apr 14 PHP
php实现文件与16进制相互转换的方法示例
Feb 16 PHP
浅谈laravel框架sql中groupBy之后排序的问题
Oct 17 PHP
PHP连接MySQL数据库三种实现方法
Dec 10 PHP
如何用Laravel包含你自己的帮助函数
May 27 PHP
解析thinkphp中的M()与D()方法的区别
Jun 22 #PHP
AJAX的跨域访问-两种有效的解决方法介绍
Jun 22 #PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
Jun 21 #PHP
PHP中mb_convert_encoding与iconv函数的深入解析
Jun 21 #PHP
解析php获取字符串的编码格式的方法(函数)
Jun 21 #PHP
浅析PHP页面局部刷新功能的实现小结
Jun 21 #PHP
解析php中var_dump,var_export,print_r三个函数的区别
Jun 21 #PHP
You might like
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
node.js中的fs.ftruncate方法使用说明
2014/12/15 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
Node.js与Sails redis组件的使用教程
2017/02/14 Javascript
angular2 ng2 @input和@output理解及示例
2017/10/10 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
vue-cli扩展多模块打包的示例代码
2018/04/09 Javascript
vue 如何从单页应用改造成多页应用
2020/10/23 Javascript
[02:02]DOTA2英雄基础教程 斯拉达
2013/12/11 DOTA
Python群发邮件实例代码
2014/01/03 Python
使用python获取CPU和内存信息的思路与实现(linux系统)
2014/01/03 Python
Python记录详细调用堆栈日志的方法
2015/05/05 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
Python分析学校四六级过关情况
2017/11/22 Python
python实现媒体播放器功能
2018/02/11 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
利用Pandas读取文件路径或文件名称包含中文的csv文件方法
2018/07/04 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
Python实现图片添加文字
2019/11/26 Python
如何理解python对象
2020/06/21 Python
Python数据可视化实现漏斗图过程图解
2020/07/20 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
python实现跨年表白神器--你值得拥有
2021/01/04 Python
哈萨克斯坦最大的时装、鞋子和配饰在线商店:Lamoda.kz
2019/11/19 全球购物
C#实现对任一张表的数据进行增,删,改,查要求,运用Webservice,体现出三层架构
2014/07/11 面试题
开学典礼感言
2014/02/16 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
大学生军训自我鉴定范文
2014/09/18 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
《地震中的父与子》教学反思
2016/02/16 职场文书
《牧场之国》教学反思
2016/02/22 职场文书