大量删除数据必然会在数据文件中造成不连续的空白空间,而当插入数据时,这些空白空间则会被利用起来 。

对于不同的存储引擎整理碎片的方式不一样。

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写的。

mysql索引碎片产生原因_解析mysql 表中的碎片产生原因以及清理相关推荐

  1. mysql索引如何分裂节点_从MySQL Bug#67718浅谈B+树索引的分裂优化(转)

    原文链接:http://hedengcheng.com/?p=525 问题背景 今天,看到Twitter的DBA团队发布了其最新的MySQL分支:Changes in Twitter MySQL 5. ...

  2. mysql索引和redis比较_聊聊Mysql索引和redis跳表

    摘要 面试时,交流有关mysql索引问题时,发现有些人能够涛涛不绝的说出B+树和B树,平衡二叉树的区别,却说不出B+树和hash索引的区别.这种一看就知道是死记硬背,没有理解索引的本质.本文旨在剖析这 ...

  3. mysql索引背后的数据结构_图解Mysql索引的数据结构!看不懂你来找我

    听说微信搜索<Java鱼仔>会变更强哦! 本文收录于JavaStarter ,里面有我完整的Java系列文章,学习或面试都可以看看哦 (一)关于索引 索引是帮助Mysql更加高效获取数据的 ...

  4. mysql索引与事务笔记_《MySQL技术内幕:InnoDB存储引擎》读书笔记五-锁、索引及事务...

    1.锁mysql 1)锁是数据库系统区别于文件系统的一个关键特性,数据库使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性.算法 2)每一种数据库实现锁的方式都不一样.sql 共享锁:容 ...

  5. mysql杠杆加号什么意思_对tb_book表中的数据,按ID序号进行升序排列,查询语句是什么?_学小易找答案...

    [单选题]修改数据库表结构用以下哪一项 ( ) [单选题]对于一个微小物理量,通常采用将其进行放大的方法实现测量,以下哪个不是物理实验方法? [单选题]扭摆实验中,为了测出金属匀质细杆绕质心对称轴的转 ...

  6. mysql 取出20条数据_“取出数据表中第10条到第20条记录”的sql语句+select top 使用方法...

    1.首先.select top使用方法: select * from table --  取全部数据.返回无序集合 select top n * from table -- 依据表内数据存储顺序取前n ...

  7. java产生死锁的主要原因_详解java中产生死锁的原因及如何避免

    1. Java中导致死锁的原因 Java中死锁最简单的情况是,一个线程T1持有锁L1并且申请获得锁L2,而另一个线程T2持有锁L2并且申请获得锁L1,因为默认的锁申请操作都是阻塞的,所以线程T1和T2 ...

  8. mysql按中文拼音字母排序_解析MySQL按常规排序、自定义排序和按中文拼音字母排序的方法...

    MySQL常规排序.自定义排序和按中文拼音字母排序,在实际的SQL编写时,我们有时候需要对条件集合进行排序.下面给出3种比较常用的排序方式,一起看看吧 MySQL常规排序.自定义排序和按中文拼音字母排 ...

  9. mysql 按时间累计计算_精通MySQL索引背后的数据结构及算法原理

    本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,mysql支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree ...

最新文章

  1. ajax实现给JavaScript中全局变量赋值(转)
  2. python之禅中文-Python之禅与翻译之美
  3. leetcode算法题--计算各个位数不同的数字个数
  4. 计算几何-经典算法-凸包
  5. 基于android的视频采集系统的设计与实现,基于Android的视频通话系统的设计与实现.docx...
  6. Python笔记-Flask返回字符串、Json、模板数据
  7. 爱奇艺数据中台负责人马金韬:数据中台建设与应用
  8. 华为P30 Pro真机上手谍照曝光 这颜值打几分?
  9. JAVA day10、11、12 飞机大战
  10. [No0000105]java sdk 开发环境变量powershell 自动配置脚本
  11. 华为最新解bl解锁码计算工具_黔隆科技刷机教程红米note4X低配版忘记密码刷机解锁降级救砖解屏幕锁账户锁教程...
  12. fastjson list转json
  13. 【宋红康 MySQL数据库 】【高级篇】【01】CentOS7下MySQL的安装与使用
  14. 基于文字识别与情感语义分析的(熊猫头)Emoji表情包搜索神器 —— 可以识别本地表情包或者爬取网络表情包
  15. 徐思201771010132《面向对象程序设计(java)》第四周学习总结
  16. unity 录屏插件总结 以及 AVProMovieCapture 5.0.0 安卓录制失败问题
  17. 上海宝付谈谈故宫瘫痪,程序员怎么办
  18. GMT格林威治时间标准时北京时间
  19. 一年回顾_2016年:一年回顾
  20. 如何判别lib文件是静态库还是动态库的导入文件呢

热门文章

  1. jquery 隐藏表格某列
  2. delphi编码规范文档
  3. leetCode第五题-求字符串最长回文字符串
  4. go语言中goroutine池
  5. STM32时钟树学习笔记
  6. 函数的多态性以及虚函数
  7. java中static{}语句块详解
  8. Linux (redhat 6.5)服务器上安装Webmin
  9. Java对象的四种引用方式
  10. 为什么wait、notify、notifyAll方法定义在Object中而不是Thread类中