首页 > 数据库 >mysql磁盘碎片整理

mysql磁盘碎片整理

时间:2024-08-27 15:50:52浏览次数:7  
标签:结转 record xx 分区表 mysql 整理 数据 磁盘碎片

背景

数据结转过程中经常进行 delete 操作,产生空白空间,如果进行新的插入操作,MySQL将尝试利用这些留空的区域,但仍然无法将其彻底占用,于是造成了数据的存储位置不连续,以及物理存储顺序与理论上的排序顺序不同,久而久之就产生了碎片。

碎片治理思路

根据线上处理经验总结比对4种处理磁盘碎片优缺点

 

  优势 缺点 备注
将数据量巨大的表设计成分区表,按时间分区 通过结转分区数据,删除分区释放磁盘碎片,磁盘IO抖动秒级别,对线上业务影响小   估算数据量,每个分区不超过3亿数据350G为佳;库存流水,订单表这些表应该在创建时就应该设计成分区表,避免以后磁盘碎片痛点
重建表存储引擎,重新组织数据(ALTER TABLE tablename ENGINE=InnoDB;)   整理过程加锁,周期长,且对线上业务影响较大:10亿数据量,1000G,tp99会持续超过60s 谨慎操作
主从切换(DBA可使用一个磁盘更大的干净的库,进行主从切换)   涉及面广,牵扯范围较大,处理时长在分钟级 谨慎操作
创建临时表进行数据双写最后进行数据库表名切换 零延迟,无抖动,对线上无任何影响 需要磁盘空间较大  

 

创建分区表

 


 

上述分区表,在某一分区内数据结转完成后,

ALTER TABLE warehouse_stock_flow drop PARTITION p24;

当然不是所有的表都是可以创建分区表的。如果某一张数据表在很长一段时间内没有进行数据结转,且无法创建分区表的话,可以利用以下方法。

 

表名切换

如果某一张数据表在很长一段时间内没有进行数据结转,可以创建临时表,通过大数据将某一结转周期内数据推送至临时表,在代码层面进行数据的双写,最后再通过表名更换的方式进行表名转换。其实,治理磁盘碎片最好的方法就是删除表,不同业务对数据的要求不同。如果有可能的话新建一个临时表。

利用rename语句对数据库表信息进行修改,不会锁表,可以达到零延迟,无抖动,对线上无任何影响。

 


 

rename table xx_record to xx_record_temp1,xx_temp to xx_record,xx_record_temp1 to xx_record_temp;

总结

不管是使用云还是商城数据库,只要使用mysql,必然会遇到Mysql碎片问题痛点,数据量大的业务表应该设计成分区表方便磁盘碎片整理,降低维护成本和业务影响。碎片清理前后,IO性能会上升,SQL执行效率更快。所以,在日常运维工作中,应对碎片进行定期清理,保证数据库有稳定的性能和充足的空间。

扩展

提到提高IO性能,在紧急情况下还可以考虑开启刷盘(设置 sync_binlog=0;innodb_flush_log_at_trx_commit=0),但开启刷盘会有数据丢失风险(集团数据库模板配置参数默认sync_binlog=1;innodb_flush_log_at_trx_commit=1)。

附件

mysql数据库核心参数介绍:https://www.cnblogs.com/klvchen/p/10861850.html

标签:结转,record,xx,分区表,mysql,整理,数据,磁盘碎片
From: https://www.cnblogs.com/Jcloud/p/18382834

相关文章

  • mysql8.0.39采用克隆方式快速搭建主从同步
    mysql8.0.39采用克隆方式快速搭建主从同步备注:基于物理文件拷贝,数据量越大,越能体现出这种优势。8.0.17以上都可以使用 一、环境192.168.0.101主库192.168.0.102从库Serverversion:8.0.39 二、查看是否已经安装克隆插件#如果没有同步账号,可以新建一个dropus......
  • Mysql特性总结
    1.发展史:瑞典几个开发者研发,2000年开源源代码,后面发展为Mysql,再后来更新mariaDB,2.功能比较具备所有数据库管理系统所需要的相关功能。数据存储引擎Innodb PostGreSQL支持四种隔离级别每种数据库管理系统都有自身的优势,也有其自身的限制。产品定位不同。mysql安装包......
  • WAMP(Windows + Apache + MySQL + PHP)是在 Windows 系统上搭建本地 Web 开发环境的一种
    WAMP(Windows+Apache+MySQL+PHP)是在Windows系统上搭建本地Web开发环境的一种方式。下面是WAMP中一些常见的问题及其解决方法:启动问题启动后WAMP托盘图标显示橙色描述:WAMP启动后托盘图标显示为橙色,表示某些服务没有正常启动。解决方法:检查Apache或MySQL......
  • XAMPP 是一个非常流行的本地开发环境,用于搭建 PHP、MySQL、Apache 等服务
    XAMPP是一个非常流行的本地开发环境,用于搭建PHP、MySQL、Apache等服务。在使用XAMPP的过程中,可能会遇到各种问题。这里总结了一些常见的问题及其解决方法:安装与配置问题安装失败描述:安装过程中出现错误或安装完成后无法正常启动。解决方法:确保安装过程中没有中断。......
  • 【java计算机毕设】网上商城MySQL springcloud vue HTML maven项目设计源码带项目报告
    目录1项目功能2项目介绍3项目地址 1项目功能【java计算机毕设】网上商城MySQLspringcloudvueHTMLmaven项目设计源码带项目报告PPT前后端可分离也可不分离 2项目介绍系统功能:网上商城包括管理员、用户两种角色。管理员功能包括个人中心模块用于修改个人......
  • 亲测好用,吐血整理 ChatGPT 3.5/4.0 新手使用手册~ 【2024.09 更新】
    废话不多说,直接分享正文~以下是小编为大家搜集到的最新的ChatGPT国内站,各有优缺点。1、AIPlus(稳定使用)推荐指数:⭐⭐⭐⭐⭐     yixiaai.com该网站已经稳定运营了1年多了。2023年3月份第一批上线的网站。网站支持GPT-3.5、4.0及4o、4omini模型,手机和电脑都能用......
  • ThinkPHP 6 + PHP7.4.3nts +nginx 使用mysql和oracle数据库
    ThinkPHP6+PHP7.4.3nts+nginx使用mysql和oracle数据库.前言业务需求,之前使用的php7.3.4nts,mysql自己写的代码,需要对接第三方系统,第三方使用的oracle数据库。之前也是各种的网查,稀里糊涂的成功了。上周五又需要对接,这次用的是php7.4.3nts,各种试了两三天不行,昨晚就突然可以......
  • MySQL数据库定时备份的几种实现方法
    MySQL数据库定时备份的几种实现方法更新时间:2024年07月22日10:44:48  作者:师小师 本文主要介绍了MySQL数据库定时备份的几种实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧+目录......
  • Re正则库整理
    re库整理Python语言专门提供了re模块,用于实现正则表达式的操作。在实现时,可以使用re模块提供的方法(如search()、match()、findall()等)进行字符串处理,也可以先使用re模块的compile()方法将模式字符串转换为正则表达式对象,然后再使用该正则表达式对象的相关方法来操作字符......
  • 基于Java+SpringBoot+Mysql实现高校教务信息系统功能设计与实现二
    一、前言介绍:1.1项目摘要高校教务信息系统课题的提出,主要源于高校日常管理工作的复杂性和重要性。作为高校的基本任务,人才培养离不开教学与管理工作的有效组织和协调。教务管理作为高校日常管理的核心组成部分,涉及教学资源的合理配置、教学过程的科学规划以及教学质量的......