解析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 显示客户端IP与服务器IP的代码
Oct 12 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
Oct 06 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
Aug 01 PHP
php读取目录所有文件信息dir示例
Mar 18 PHP
php过滤HTML标签、属性等正则表达式汇总
Sep 22 PHP
php上传图片客户端和服务器端实现方法
Mar 30 PHP
php读取torrent种子文件内容的方法(测试可用)
May 03 PHP
php实现页面纯静态的实例代码
Jun 21 PHP
Laravel框架用户登陆身份验证实现方法详解
Sep 14 PHP
PHP7扩展开发之hello word实现方法详解
Jan 15 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
实例讲解通过​PHP创建数据库
Jan 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
让你的网站首页自动选择语言转跳
2006/12/06 PHP
PHP内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
2013/06/19 PHP
浅析php过滤html字符串,防止SQL注入的方法
2013/07/02 PHP
js几个验证函数代码
2010/03/25 Javascript
JavaScript 拾碎[三] 使用className属性
2010/10/16 Javascript
使用jquery与图片美化checkbox和radio控件的代码(打包下载)
2010/11/11 Javascript
提取字符串中年月日的函数代码
2013/11/05 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
2016/08/29 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
2017/02/03 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
javascript 取小数点后几位几种方法总结
2017/08/02 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
js如何找出字符串中的最长回文串
2018/06/04 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
2020/08/13 Javascript
Python中实现参数类型检查的简单方法
2015/04/21 Python
python基于urllib实现按照百度音乐分类下载mp3的方法
2015/05/25 Python
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
分析Python中解析构建数据知识
2018/01/20 Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
2018/06/22 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
元旦晚会邀请函
2014/01/27 职场文书
安全大检查反思材料
2014/01/31 职场文书
新年爱情寄语
2014/04/08 职场文书
十岁生日答谢词
2015/01/05 职场文书
教师个人学习总结
2015/02/11 职场文书
Nginx防盗链与服务优化配置的全过程
2022/01/18 Servers
python在package下继续嵌套一个package
2022/04/14 Python