解析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 相关文章推荐
模拟SQLSERVER的两个函数:dateadd(),datediff()
Oct 09 PHP
一篇不错的PHP基础学习笔记
Mar 18 PHP
网页上facebook分享功能具体实现
Jan 26 PHP
php去除字符串中空字符的常用方法小结
Mar 17 PHP
php实现数组按指定KEY排序的方法
Mar 30 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
May 13 PHP
php实现zip文件解压操作
Nov 03 PHP
php基于CodeIgniter实现图片上传、剪切功能
May 14 PHP
php英文单词统计器
Jun 23 PHP
PHP实现中国公民身份证号码有效性验证示例代码
May 03 PHP
PHP PDOStatement::setFetchMode讲解
Feb 03 PHP
laravel 修改记住我功能的cookie保存时间的方法
Oct 14 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
php&java(二)
2006/10/09 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
js 获取子节点函数 (兼容FF与IE)
2010/04/18 Javascript
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
2011/08/28 Javascript
基于jQuery的公告无限循环滚动实现代码
2012/05/11 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
2015/10/09 Javascript
JavaScript函数的一些注意要点小结及js匿名函数
2015/11/10 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
jquery操作ID带有变量的节点实例
2016/12/07 Javascript
@ResponseBody 和 @RequestBody 注解的区别
2017/03/08 Javascript
JS触摸与手势事件详解
2017/05/09 Javascript
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
[30:00]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第二场 11.28
2020/12/01 DOTA
从零学Python之入门(二)基本数据类型
2014/05/25 Python
Python中random模块生成随机数详解
2016/03/10 Python
谈谈python中GUI的选择
2018/03/01 Python
Python绘制3D图形
2018/05/03 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
硕士研究生求职自荐信范文
2014/03/11 职场文书
年终总结会主持词
2014/03/25 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis
MySQ InnoDB和MyISAM存储引擎介绍
2022/04/26 MySQL
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL