记MySQL表空间碎片清理过程
清除MySQL表空间碎片的详细方法
- 1. 背景
- 2. 碎片信息查询
- 3. 碎片整理前后的查询性能比对
- 3.1 碎片整理前
- 3.2 整理碎片
- 3.3 碎片整理后
- 4. 整理表碎片会锁表吗?
- 参考
1. 背景
一张任务表的记录条数达到1.7亿,查询性能差。为提升性能将历史数据抽取到大数据,在MySQL表中删除历史数据,只保留最新3个月的数据(约2300w)。由于删除了大量记录,因此产生了很多表碎片,为了不影响查询性能,并释放表空间,决定进行碎片整理。
mysql version: 5.7.26-log
2. 碎片信息查询
SHOW TABLE STATUS LIKE 'tablename'
Data_free一栏为碎片空间,由于删除了大量数据,碎片空间约为148G,碎片率(碎片空间/总使用空间)约为3.2。
3. 碎片整理前后的查询性能比对
表碎片空间太大会增加访问表时的IO次数,影响MySQL查询性能;而且会占用磁盘空间,影响磁盘空间使用率。
影响磁盘空间使用率比较好理解,但是对查询性能的影响到底有多大却不太好评估,只能具体问题具体分析。
以我们的场景为例,简单做一下验证。
3.1 碎片整理前
当前记录月2300w,createtime、order_type有独立索引,碎片整理前下面的查询语句耗时约300ms。
select * from tablename where createtime > '2022-03-29' and createtime < '2022-03-30' and order_type = 1 limit 100
3.2 整理碎片
执行碎片整理,表使用innodb引擎,整个执行过程约12分钟。如果是主从结构,从库的碎片清理会相对滞后。
alter table tablename engine=InnoDB
3.3 碎片整理后
碎片整理完成后对性能影响不大。
原因分析:
- 因为删除数据时主要是通过主键进行删除,而且删除的都是连续数据,所以对IO性能影响较小,因此对查询性能影响不大。
那么什么情形下会影响查询性能呢?
- 依据MySQL的官方文档,在对二级索引进行无序新增、删除时对查询性能的影响会比较大。
4. 整理表碎片会锁表吗?
DBA给的回复是一般不会,
记MySQL表空间碎片清理过程相关推荐
- MySQL表空间碎片整理
MySQL可以使用alter table tn engine=innodb语句进行表空间碎片整理.而页内记录并不是物理有序的,并且删除记录后,被删除的记录放到页内free链表,可能会产生很多空洞.al ...
- mysql 清理表碎片需要停止数据库吗_Mysql的表的碎片清理
最近在生成环境下的mysql运行下降,有些sql执行也慢,首先检查下慢查询日志是否开启 show variables like 'slow_query_log%' 在看慢日志设置的时间 show va ...
- 清除mysql数据碎片_MySQL 清除表空间碎片方法总结
mysql数据库会生成空间碎片了,这些空间碎片对于我们来讲影响不大但如果空间碎片多了会导致mysql查询缓存了,下面一起来看MySQL 清除表空间碎片方法吧,具体的如下所示. 碎片产生的原因 (1)表 ...
- MySQL表空间简介
本文主要介绍一下MySQL中的几种表空间概念及相关操作. 基础材料: CentOS7.5 MySQL 5.7.24 ######################################### ...
- mysql 表空间监控shell_一种通过zabbix监控mysql表空间的方法
一种通过zabbix监控mysql表空间的方法[ 技术领域: ][0001]本发明涉及计算机自动化运维与监控领域,具体地说是一种通过ZABBIX监控MYSQL表空间的方法.[ 背景技术: ][0002 ...
- oracle 表空间 碎片,Oracle表空间碎片整理
作为影响数据库性能的一个因素,数据库表空间碎片,应当引起DBA的重视,及时发现并整理碎片是DBA基本维护内容,以提高数据库性能. Oracle数据库表空间.段.区.块简述 表空间(tablesapce ...
- Oracle表空间碎片查询以及整理
一.查看表空间碎片的方法 查看fsfi值 /* Formatted on 2017/9/21 13:42:29 (QP5 v5.240.12305.39476) */ select a.tablesp ...
- Oracle一次缩小表空间的处理过程
Oracle一次缩小表空间的处理过程 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩ ...
- mysql 表空间收缩_mysql表碎片清理和表空间收缩
mysql表碎片清理和表空间收缩(即清理碎片后report_site_day.ibd文件磁盘空间减小,该方案基于独立表空间存储方式) OPTIMIZETABLE [tablename],当然这种方式只 ...
- mysql怎么把值更新成space,MySQL表的碎片整理和空间回收小结
MySQL表碎片化(Table Fragmentation)的原因 关于MySQL中表碎片化(Table Fragmentation)产生的原因,简单总结一下,MySQL Engine不同,碎片化的原 ...
最新文章
- 服务器上装centos系统花屏,CentOS系统如何解决鼠标花屏的问题
- BZOJ 4817: [Sdoi2017]树点涂色
- 关于一次装机后的个人总结
- 高斯信道、单径Rayleigh信道和多径衰落信道下基带模型的多用户BPSK直接序列扩频系统MATLAB仿真(m序列、Gold序列和正交Gold序列)
- [Objective-C语言教程]数据封装(27)
- 警惕Python编程中异常处理结构可能的坑
- grpc框架_grpc的入门使用
- 国外高手又一力作,CAML Builder
- Cache和DMA一致性 iCache和dCache一致性
- 2021年下半年信息安全工程师下午真题及答案解析
- Unity3d 无人机
- pdg file的打开
- AngularJs参数传递
- python为什么运行不了_终端里为什么无法运行python?
- Allegro可供产品包含L、XL和GXL三个级别
- 修改管理员信息php,修改管理员_ThinkPHP_大笨熊_IT技术平台
- 使用CH340串口模块对STM32进行程序下载
- php中e代表什么意思,计算机的e是什么意思
- windowd 10 2016 LTS 激活方法
- java.lang.IllegalArgumentException: Result Maps collection does not contain value for com.sjm.emp.da