解析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+JS无限级可伸缩菜单详解(简单易懂)
Jan 02 PHP
memcached 和 mysql 主从环境下php开发代码详解
May 16 PHP
实测在class的function中include的文件中非php的global全局环境
Jul 15 PHP
php使用数组填充下拉列表框的方法
Mar 31 PHP
PHP中创建和验证哈希的简单方法实探
Jul 06 PHP
分享10段PHP常用代码
Nov 11 PHP
php把时间戳转换成多少时间之前函数的实例
Nov 16 PHP
PHP静态成员变量
Feb 14 PHP
php json转换相关知识(小结)
Dec 21 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 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常用技巧总结(附函数代码)
2012/02/04 PHP
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
PHP的构造方法,析构方法和this关键字详细介绍
2013/10/22 PHP
Thinkphp中的volist标签用法简介
2014/06/18 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
2016/05/06 PHP
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
Ext JS添加子组件的误区探讨
2013/06/28 Javascript
EasyUI中实现form表单提交的示例分享
2015/03/01 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
angular+bootstrap的双向数据绑定实例
2017/03/03 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
2020/08/10 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
[37:21]完美世界DOTA2联赛PWL S2 Inki vs Magma 第二场 11.22
2020/11/24 DOTA
Django命名URL和反向解析URL实现解析
2019/08/09 Python
使用python 对验证码图片进行降噪处理
2019/12/18 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
美丽的现代设计家具:2Modern
2018/07/26 全球购物
办公室务虚会发言材料
2014/10/20 职场文书
小学生学习保证书
2015/02/26 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
党员理论学习心得体会
2016/01/21 职场文书
高二数学教学反思
2016/02/18 职场文书
你会写请假条吗?
2019/06/26 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS
python实现的web监控系统
2021/04/27 Python
JVM钩子函数的使用场景详解
2021/08/23 Java/Android
flex布局中使用flex-wrap实现换行的项目实践
2022/06/21 HTML / CSS