解析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生成带有雪花背景的验证码
Oct 09 PHP
php的控制语句
Oct 09 PHP
信用卡效验程序
Oct 09 PHP
php记录日志的实现代码
Aug 08 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
Apr 01 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
Jun 12 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
Dec 28 PHP
图文详解PHP环境搭建教程
Jul 16 PHP
PHP中explode函数和split函数的区别小结
Aug 24 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
Laravel框架Request、Response及Session操作示例
May 06 PHP
PHP文件操作简单介绍及函数汇总
Dec 11 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
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
番茄的表单验证类代码修改版
2008/07/18 Javascript
理解 JavaScript 预解析
2009/10/25 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
javascript关于继承解析
2016/05/10 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
基于jQuery实现的设置文本区域的光标位置
2018/06/15 jQuery
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
微信小程序实现简易table表格
2020/06/19 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
使用PDB模式调试Python程序介绍
2015/04/05 Python
spyder常用快捷键(分享)
2017/07/19 Python
使用python telnetlib批量备份交换机配置的方法
2019/07/25 Python
使用OpenCV实现仿射变换—缩放功能
2019/08/29 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
Python requests模块session代码实例
2020/04/14 Python
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
巴西手表购物网站:eclock
2019/03/19 全球购物
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
岗位职责范本
2013/11/23 职场文书
八一演出活动方案
2014/02/03 职场文书
岗位职责怎么写
2014/03/14 职场文书
七夕活动策划方案
2014/08/16 职场文书
武侯祠导游词
2015/02/04 职场文书
Golang 并发下的问题定位及解决方案
2022/03/16 Golang