mysql 碎片率_计算MySQL表碎片的SQL整理

本文介绍了如何利用MySQL的数据字典`information_schema.tables`和`information_schema.INNODB_SYS_TABLESPACES`来计算表的碎片率,并提供了一个SQL查询示例,帮助识别和修复高碎片率的表。通过对比逻辑大小和物理文件大小,可以确定表的碎片程度,进而优化数据库性能。
摘要由CSDN通过智能技术生成

这是学习笔记的第 2111 篇文章

6e5fc55e4912452e703ef208a8056226.gif

  在之前整理过一版MySQL的数据字典,整理了一圈,发现远比想象的复杂。 

81f4fdb46b733239896a10d747b59c85.png

当然整理的过程不光是知识梳理的过程,也是转化为实践场景的一个过程,通过这样一个体系,对于整个MySQL对象生命周期管理有了较为深入的认识,这里我来抛砖引玉,来作为深入学习MySQL数据字典的一个入口,这个问题就是:如何较为准确的计算MySQL碎片情况?

我想碎片的情况在数据库中是很少有清晰的界定,不过它的的确确会带来副作用,通过修复碎片情况我们可以提高SQL的执行效率,同时能够释放大量的空间。

 最近在思考中感悟到:我们所做的很多事情,难点主要都在于查找,比如我告诉你test库的表test_data存在大量碎片,需要修复一下,这个难度是完全可控的,我们可以很麻利的处理好,但是如果我告诉你需要收集下碎片情况,然后做一下改进,而不告诉你具体的情况,其实难度就会高几个层次。

我们这个场景主要会用到两个数据字典表:

information_schema.tables

information_schema.INNODB_SYS_TABLESPACES 

我们依次来看一下两个数据字典的输出信息:

查询常规的数据字典tables得到的信息基本可以满足我们的大多数需求。

mysql> select *from information_schema.tables where table_name='tgp_redis_command'\G

*************************** 1. row ***************************

  TABLE_CATALOG: def

   TABLE_SCHEMA: tgp_db

     TABLE_NAME: tgp_redis_command

     TABLE_TYPE: BASE TAB

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值