展开全部

MySQL 的碎片是 MySQL 运维过程中比较常见的问题,碎片的62616964757a686964616fe59b9ee7ad9431333433643731存在十分影响数据库的性能,本文将对 MySQL 碎片进行一次讲解。

判断方法:

MySQL 的碎片是否产生,通过查看

show table status from table_nameG;

这个命令中 Data_free 字段,如果该字段不为 0,则产生了数据碎片。

产生的原因:

1. 经常进行 delete 操作

经常进行 delete 操作,产生空白空间,如果进行新的插入操作,MySQL将尝试利用这些留空的区域,但仍然无法将其彻底占用,久而久之就产生了碎片;

演示:

创建一张表,往里面插入数据,进行一个带有 where 条件或者 limit 的 delete 操作,删除前后对比一下 Data_free 的变化。

删除前:

删除后:

Data_free 不为 0,说明有碎片;

2. update 更新

update 更新可变长度的字段(例如 varchar 类型),将长的字符串更新成短的。之前存储的内容长,后来存储是短的,即使后来插入新数据,那么有一些空白区域还是没能有效利用的。

演示:

创建一张表,往里面插入一条数据,进行一个 update 操作,前后对比一下 Data_free 的变化。

CREATE TABLE `t1` ( `k` varchar(3000) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

更新语句:update t1 set k='aaa';

更新前长度:223 Data_free:0

更新后长度:3 Data_free:204

Data_free 不为 0,说明有碎片;

产生影响:

1. 由于碎片空间是不连续的,导致这些空间不能充分被利用;

2. 由于碎片的存在,导致数据库的磁盘 I/O 操作变成离散随机读写,加重了磁盘 I/O 的负担。

清理办法:MyISAM:optimize table 表名;(OPTIMIZE 可以整理数据文件,并重排索引)

Innodb:

1. ALTER TABLE tablename ENGINE=InnoDB;(重建表存储引擎,重新组织数据)

2. 进行一次数据的导入导出

碎片清理的性能对比:

引用我之前一个生产库的数据,对比一下清理前后的差异。

SQL执行速度:

select count(*) from test.twitter_11;

修改前:1 row in set (7.37 sec)

修改后:1 row in set (1.28 sec)

结论:

通过对比,可以看到碎片清理前后,节省了很多空间,SQL执行效率更快。所以,在日常运维工作中,应对碎片进行定期清理,保证数据库有稳定的性能。

mysql 整理碎片_mysql 如何去整理表数据,碎片整理相关推荐

  1. mysql查看比较大的数据表_mysql 如何查看哪些表数据量比较大

    数据库中有几十上百张表,那么哪些表的数据量比较大呢,总不能一个表一个表的去查询吧,在mysql中也有类似于oracle的数据字典表,只不过mysql没有oracle记录的那么多和详细,但也足够我们查询 ...

  2. mysql 分区合并_mysql中的合并表和分区表详解(经常使用的概念)

    分区表是mysql5.1之后的新特性,合并表已经存在很长时间了.这篇文章主要介绍这两个概念以及他们基本的操作. 一.合并表 合并表说实话是一种将要被淘汰的技术,但是掌握了合并表的概念再去看分区表就比较 ...

  3. mysql中更新的命令是_MySQL 语言中,更新表数据的命令是( )。_学小易找答案

    [简答题]MySQL 语言中包含数都定义语言.数据操纵语言和数据控制语言,分别有哪些功能? [单选题]查询员工工资信息时,结果按工资降序排列,正确的是( ). [简答题]arrayList测验 [填空 ...

  4. mysql 全局锁_Mysql全局锁和表级锁

    以前对Mysql的锁的认识,只了解表锁和行锁,其实Mysql的锁的种类还是不少的,有全局锁,表级锁,行级锁,还有元数据锁,间隙锁,临界锁. 一 全局锁 Mysql的全局锁是对整个实例加锁,加锁之后,数 ...

  5. mysql取模_mysql 取模分表

    取模分表,根据时间维度进行分表自定义的Hash 分表实现原理:利用sqlparser解析sql参数,根据参数修改相关的表名为实际表名. 分表后的数据复制,一般采用insert select语句将原有表 ...

  6. mysql 高效备份_Mysql高性能备份方案解决数据不间断访问(LVM快照方式备份)

    Mysql高性能备份方案解决数据不间断访问(LVM快照方式备份) mysql LVM快照备份特点: 1.在大多数情况下,这种方式几乎算得上是热备.它无需关闭服务,只需要设置只读或者类似这样的限制. 2 ...

  7. Web程序员的Mysql进阶序三之sql多表数据删除、子查询、联合查询

    假设表结构如下: create table test(name varchar(10),sex varchar(10) ); create table test1(name varchar(10),s ...

  8. mysql 快速初始化_MySQL中的批量初始化数据的对比测试(r12笔记第71天)

    一直以来对于MySQL的存储过程性能还是颇有微词的,说实话够慢的.有时候想做一些对比测试,存储过程初始化几万条数据都得好一会儿,这功夫Oracle类似的测试早都做完了,今天就赶个晚班车,把这个没做完的 ...

  9. 数据库mysql中对于drop_数据库之删除表数据drop、truncate和delete的用法

    数据库中删除表数据的关键字,最常用的可能就是delete了,另外其实还有drop和truncate两个关键字. 老大:drop 命令格式:drop table  tb  ---tb表示数据表的名字,下 ...

最新文章

  1. 【EventBus】EventBus 源码解析 ( 事件发送 | postToSubscription 方法 | EventBus 线程模式处理细节 )
  2. 再见BOBO,从此梅阿查再无国王!
  3. 156. Leetcode 53. 最大子数组和 (贪心算法-进阶题目)
  4. 《Oracle数据库管理与维护实战》——1.2 Oracle各版本异同
  5. cxf整合spring发布webservices服务端
  6. CVE-2017-8464 震网三代
  7. java jnlp 运行_java怎么运行jnlp文件 jnlp文件怎么打开
  8. Android sdk platform,sdk tools,sdk Build tools,sdk platform tools 的关系
  9. 奔跑吧DKY——团队Scrum冲刺阶段-Day 4
  10. ORACLE中的各种SCN查询
  11. 自动阅读是如何赚取收益的
  12. 梅科尔工作室-张黎娜-鸿蒙笔记3
  13. GF(Go Frame)开发框架
  14. MAC OS 上好用的文本编辑器除了Sublime Text和BBEdit还有这些好用的推荐一下。
  15. 【揭秘】云服务器1M带宽实际下载速度是多少?
  16. 这50款前端热门工具简直不要太好用了!
  17. Docker容器时间与宿主机不一致?3个解决方案
  18. oracle ora-各种常见java.sql.SQLException归纳
  19. 高光谱计算成像论文阅读-High-Quality Hyperspectral Reconstruction Using a Spectral Prior
  20. magento focalprice 模板去掉 in xxx的分类

热门文章

  1. AMC Problems and Solutions
  2. #趣味编程# 一点有意思的编程语言历史以及科普
  3. 【统计学笔记】第十一章 一元线性回归
  4. c语言atof函数源码,【C语言】编纂函数实现库函数atof
  5. GWD loss 损失函数的示例
  6. 手淘 Android 帧率采集与监控详解
  7. 【IOS】ios界面设计规范
  8. oracle tabe unlock_oracle数据库管理常用语句(不断更新中)
  9. 免杀方法(七)c#xor加载器
  10. POI导出excel因为格式问题无法打开文件