最近在生成环境下的mysql运行下降,有些sql执行也慢,首先检查下慢查询日志是否开启

show variables like ‘slow_query_log%’

在看慢日志设置的时间

show variables like ‘long_query_time%’;

可以看到开启了慢查询,find / -name slow-query.log查找慢日志

发现里面的sql是很慢但是都走了索引但是这些慢的sql都指向一两个表。所以想到可能是每次备份对这几个表的删除操作,但是没有进行碎片整理

进行下碎片整理,按表的引擎来处理

Myisam清理碎片

OPTIMIZE TABLE table_name、

InnoDB碎片清理

看到这段话

if you frequently delete rows (or update rows with variable-length data types), you can end up with a lot of wasted space in your data file(s), similar to filesystem fragmentation.

If you’re not using the innodb_file_per_table option, the only thing you can do about it is export and import the database, a time-and-disk-intensive procedure.

But if you are using innodb_file_per_table, you can identify and reclaim this space!

Prior to 5.1.21, the free space counter is available from the table_comment column of information_schema.tables. Here is some SQL to identify tables with at least 100M (actually 97.65M) of free space:

SELECT table_schema, table_name, table_comment FROM information_schema.tables WHERE engine LIKE ‘InnoDB’ AND table_comment RLIKE ‘InnoDB free: ([0-9]{6,}).*’;

Starting with 5.1.21, this was moved to the data_free column (a much more appropriate place):

SELECT table_schema, table_name, data_free/1024/1024 AS data_free_MB FROM information_schema.tables WHERE engine LIKE ‘InnoDB’ AND data_free > 100*1024*1024;

You can reclaim the lost space by rebuilding the table. The best way to do this is using ‘alter table’ without actually changing anything:

ALTER TABLE foo ENGINE=InnoDB;

This is what MySQL does behind the scenes if you run ‘optimize table’ on an InnoDB table. It will result in a read lock, but not a full table lock. How long it takes is completely dependent on the amount of data in the table (but not the size of the data file). If you have a table with a high volume of deletes or updates, you may want to run this monthly, or even weekly.

所以先进行分析,语句如下

SELECT table_schema, table_name, data_free/1024/1024 AS data_free_MB FROM information_schema.tables WHERE engine LIKE ‘InnoDB’ AND data_free > 100*1024*1024;

返回了两个数据,正是那两张表得data_free大于100M,所以ALTER TABLE tablename ENGINE=InnoDB;

相当于重建表引擎了。再执行速度正常了。

这里要提下如果一个表的表数据大小和索引大小与实际的表数据不符也需要清理下表碎片

在这篇博客中有说http://blog.csdn.net/u011575570/article/details/48092469

结束.欢迎指出不当之处谢谢

参考:http://pengbotao.cn/mysql-suipian-youhua.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

Mysql的表的碎片清理

标签:mysql   表的碎片清理   innodb   myisam

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:http://blog.csdn.net/u011575570/article/details/48092403

mysql 清理表碎片需要停止数据库吗_Mysql的表的碎片清理相关推荐

  1. mysql 分库分表策略_【数据库】分库分表策略

    关系型数据库本身比较容易成为系统瓶颈,单机存储容量.连接数.处理能力都有限.当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库.优化索引,做很多操作时性能仍下降严重.此时就要考 ...

  2. mysql表的组成_数据库中的数据表由什么组成?

    在数据库中,数据表是由表名.表中的字段和表的记录三个部分组成的.在建立表之前都必须先设计它的结构,表结构描述了一个表的框架.设计表结构实际上就是定义组成一个表的字段个数,每个字段的名称.数据类型和长度 ...

  3. mysql建表时外检怎么创建_MySQL创建表时加入的约束以及外键约束的的意义

    1,创建表时加入的约束 a) 非空约束,not null b) 唯一约束,unique c) 主键约束,primary key d) 外键约束,foreign key 1,非空约束,针对某个字段设置其 ...

  4. mysql 查看表v空间自增涨_MySQL InnoDB表空间加密

    从 MySQL5.7.11开始,MySQL对InnoDB支持存储在单独表空间中的表的数据加密 .此功能为物理表空间数据文件提供静态加密.该加密是在引擎内部数据页级别的加密手段,在数据页写入文件系统时加 ...

  5. mysql建表是要注意什么问题_MySQL建表注意事项

    1.建表规范 -- 数据库名丶表名,全部使用小写字母,使用"_"下划线连接且长度小于12,做到见名知意 2.建议使用 innodb 引擎,这也是MySQL的默认引擎 3.字段类型选 ...

  6. mysql如何用jsp代码进行数据库备份_mysql如何用jsp代码进行数据库备份

    mysql如何用jsp代码进行数据库备份 //导出 String mysql="mysqldump -uroot -proot --opt databasename > d:/test ...

  7. mysql同表字段前4位复制_MySQL不同表之前的字段复制

    有时候,我们需要复制某个字段一整列的数据到另外一个新的字段中,这很简单,SQL可以这么写: UPDATE tb_1 SET content_target = content_source; 大概写法如 ...

  8. mysql要将语句反复执行15次_MySQL多表查询疑问

    2019年6月20日,时隔快一个月,时不时想想这个问题,终于发现错在哪里了. 正确的写法应该是:当查询中存在group by子句时,select列表(或是having子句)中只能存在分组函数,或是出现 ...

  9. mysql导入数据库某张表_MSSQLServer2005 导出导入数据库中某张表的数据

    备注:在工作中我们经常会遇到,将数据库中某张数据表中的内容或数据导出来:今天我们就介绍怎样快速有效的进行数据导出,导入.使用的数据库版本为:mssqlserver2005.首先进行登录mssqlser ...

最新文章

  1. 2022-2028年中国聚硫橡胶行业市场研究及前瞻分析报告
  2. python 第一行非零_python – 沿着已排序的二维numpy数组的轴查找第一个非零值
  3. abap 转换成字符串_SAP ABAP 处理字符串串串串串串串串(详细)
  4. css动画Demo---水波动画和边框动画
  5. linux查看apache端口,linux系统下Apache服务启动时80端口报错
  6. linux开机自动启动(自启动)脚本、程序(初始化脚本)(海康摄像头自启动程序)
  7. 怎么wps解除合并单元格_wps表格怎么锁定单元格
  8. problem a: 简单的整数排序_python里的排序
  9. 研发团队绩效_如何在团队内部建立网络绩效文化
  10. JSP断点续传多线程链接下载
  11. html5游戏开发--动静结合(二)-用地图块拼成大地图 初探lufylegend
  12. fun php,fun.php
  13. 每日算法之三十五:Wildcard Matching
  14. mysql+instr查询,mysql中使用instr进行模糊查询方法介绍
  15. Linux内核4.17再获捷报
  16. C#正则判断手机号 邮箱 网址 日期 IP 身份证等
  17. android应用app开发
  18. 杰理之升级复位可以选择软复位跳转和绝对地址跳转【篇】
  19. php开发的app商城,如何利用PHP语言开发手机APP
  20. fred.V7光线追迹软件

热门文章

  1. 使用内容脚本将代码插入页面上下文
  2. 寻求有用的Eclipse Java代码模板[关​​闭]
  3. php 获取header auth,php CURL Auth请求头和响应头获取
  4. python读写文件函数_Python开发【第三篇】:函数读写文件
  5. 问答 | 为什么两轮差速机器人转向运动是圆周运动
  6. 测试Join(插队)
  7. 微信小程序API之getLocal
  8. opencv之CmakeLists.txt配置
  9. Ubuntu替换pip源
  10. java jdk安装 win10,Win10安装多个jdk,共存环境配置,自由切换