解析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桌面中心(四) 数据显示
Mar 11 PHP
mysql 性能的检查和优化方法
Jun 21 PHP
openflashchart 2.0 简单案例php版
May 21 PHP
解析dedeCMS验证码的实现代码
Jun 07 PHP
PHP数据库链接类(PDO+Access)实例分享
Dec 05 PHP
Laravel 5 框架入门(一)
Apr 09 PHP
php使用COPY函数更新配置文件的方法
Jun 18 PHP
thinkphp如何获取客户端IP
Nov 03 PHP
PHP序列化/对象注入漏洞分析
Apr 18 PHP
php处理单文件、多文件上传代码分享
Aug 24 PHP
解决Laravel自定义类引入和命名空间的问题
Oct 15 PHP
PHP接入微信H5支付的方法示例
Oct 28 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
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
2014/02/24 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
共享自己写一个框架DreamScript
2007/01/20 Javascript
ASP中Sub和Function的区别说明
2020/08/30 Javascript
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
2014/05/22 Javascript
jQuery获取样式中颜色值的方法
2015/01/29 Javascript
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
Bootstrap编写导航栏和登陆框
2016/05/30 Javascript
angular.js指令中的controller、compile与link函数的不同之处
2017/05/10 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
2020/06/05 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
Python中列表与元组的乘法操作示例
2018/02/10 Python
用python实现百度翻译的示例代码
2018/03/09 Python
python事件驱动event实现详解
2018/11/21 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
2019/06/24 Python
浅析使用Python搭建http服务器
2019/10/27 Python
关于Keras模型可视化教程及关键问题的解决
2020/01/24 Python
python logging通过json文件配置的步骤
2020/04/27 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
2020/06/10 Python
python3实现飞机大战
2020/11/29 Python
python3处理word文档实例分析
2020/12/01 Python
大学生就业协议书范本(适用于公司企业)
2014/10/07 职场文书
依法行政工作汇报
2014/10/28 职场文书
玄武湖导游词
2015/02/05 职场文书
个人年终总结结尾
2015/03/06 职场文书
出纳岗位职责范本
2015/03/31 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
Python实现日志实时监测的示例详解
2022/04/06 Python