当前位置: 首页 > news >正文

MySQL碎片清理

为什么产生?

经过大量增删改的表,都可能存在碎片

MySQL数据结构是B+树,
删除某一记录,只会标记为删除,后续插入一条该区间的记录,就会复用这个位置。
删除整个数据页的记录,则整个页标记为“可复用”,但磁盘文件的大小是不会变的。

产生碎片就要定期清理

官方建议不要频繁(每小时或每天)进行碎片整理,一般根据实际情况,只需要每周或者每月整理一次即可。
建议:碎片空间大或者占比>50% 再做整理。

# 查询现状碎片情况
SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_ROWS, AUTO_INCREMENT, TABLE_COMMENT, DATA_FREE, ROUND(data_free / 1024 / 1024 / 1024, 2) AS free_G
FROM `information_schema`.tables
WHERE 1 = 1AND `TABLE_SCHEMA` NOT IN ('information_schema', 'mysql')
HAVING free_G > 1
ORDER BY `DATA_FREE` DESC
LIMIT 10;

如何清理?

官方做法

ALTER TABLE tbl_name ENGINE=INNODB

You can also use ALTER TABLE tbl_name FORCE to perform a “null” alter operation that rebuilds the table.

会重建表,这个过程会不会锁表?影响数据读写?

搜集相关知识,有人提供方案

ALTER TABLE tbl_name ENGINE=INNODB, ALGORITHM=INPLACE

锁表时间很短,几乎不影响业务读写,属于Online DDL
详情参考资料3
COPY
INPLACE
至于 inplace 和 copy 的差异简单来讲:

copy 基于临时表,锁表时间长,容易丢数据
inplace 基于临时文件,锁表时间短,不易丢数据。

那么需要指定 ALGORITHM 吗?
搜索MySQL官方文档,发现

The ALGORITHM clause is optional. If the ALGORITHM clause is omitted, MySQL uses ALGORITHM=INPLACE for storage engines and ALTER TABLE clauses that support it. Otherwise, ALGORITHM=COPY is used.

不指定ALGORITHM的情况下,如果alter语句支持 inplace,就使用inplace,否则就用copy

哪些表操作支持呢?

官方给了回答
online-ddl-tablespace-operations
所以整理碎片 直接执行即可

ALTER TABLE tbl_name ENGINE=INNODB

开源工具

除了mysql官方的实现方式,业界也有一些知名开源工具解决大表的变更,gh-ost就是一例。

关键步骤如下:详细点击

创建影子表
存量数据同步
增量数据同步-by binLog
锁表,更换表名
删除原表

gh-ost

参考资料

  • MySQL整理碎片
  • MySQL Online DDL
  • mysql重建表
  • mysql在线修改表结构的影响
    -MySQL Online DDL工具gh-ost
  • gh-ost漏洞

相关文章:

MySQL碎片清理

为什么产生? 经过大量增删改的表,都可能存在碎片 MySQL数据结构是B树, 删除某一记录,只会标记为删除,后续插入一条该区间的记录,就会复用这个位置。 删除整个数据页的记录,则整个页标记为“可…...

elasticsearch操作(API方式)

说明:es操作索引库、文档,除了使用它们自带的命令外(参考:http://t.csdn.cn/4zpmi),在IDEA中可以添加相关的依赖,使用对应的API来操作。 准备工作 搭建一个SpringBoot项目,DAO使用…...

Vue2.0 使用 echarts

目录 1. 配置 渲染2. 数据渲染 1. 配置 渲染 安装 echarts 依赖 npm install echarts -Smain.js,引入 echarts import * as echarts from echarts// 在import的后面,echarts的前面加一个 * as Vue.prototype.$echarts echarts从 echarts 官网直接复制…...

企业微信,阿里钉钉告警群机器人

链接:如何通过企业微信群接收报警通知_云监控-阿里云帮助中心...

linux下的tomcat

springboot项目端口是8080,部署到linux运行之后,为什么能检测到tomcat 手动安装tomcat,以下是在 Linux 系统上安装 Tomcat 的步骤: 下载 Tomcat 安装包。您可以从 Tomcat 官方网站(https://tomcat.apache.org/ ↗&…...

Vue源码学习 - new Vue初始化都做了什么?

目录 前言一、创建一个 Vue 实例二、找到 Vue 构造函数三、源码分析 - Vue.prototype._init四、源码分析 - 调用 $mount 方法,进入挂载阶段五、总结 前言 使用Vue也有一段时间了,最近去阅读了Vue的源码,想总结分享下学到的新东西。 如果觉得…...

新零售数字化商业模式如何建立?新零售数字化营销怎么做?

随着零售行业增速放缓、用户消费结构升级,企业需要需求新的价值增长点进行转型升级,从而为消费者提供更为多元化的消费需求、提升自己的消费体验。在大数据、物联网、5G及区块链等技术兴起的背景下,数字化新零售系统应运而生。 开利网络认为&…...

C++语法(26)--- 特殊类设计

C语法(25)--- 异常与智能指针_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/131537799?spm1001.2014.3001.5501 目录 1.特殊类设计 1.设计一个类,不能被拷贝 C98 C11 2.设计一个类,只能在堆上…...

YAML+PyYAML笔记 2 | YAML缩进、分离、注释简单使用

2 | YAML缩进、分离、注释简单使用 1 简介2 缩进3 分离4 多行文本4.1 折叠块4.2 字面块4.3 引用块 5 注释5.1 行内注释5.2 块注释5.3 完美注释示例 1 简介 YAML 不是一种标记语言,而是一种数据格式;使用缩进和分离来表示数据结构,不需要使用…...

Array(20) 和 Array.apply(null, {length: 20})

1.Array(20) 其结果是: 创建了一个长度为20,但元素均为 empty 的数组。 2.Array.apply(null, { length: 20 }) 其结果是: 创建了一个长度为20,但元素均为 undefined 的数组。 3.异同 3.1相同 console.log(arr1[0] arr2[0]) /…...

Mind+积木编程控制小水泵给宠物喂水

前期用scratch,带着小朋友做了大鱼吃小鱼、桌面弹球、小学生计算器3个作品,小朋友收获不小。关键是小家伙感兴趣,做出来后给家人炫耀了一圈后,兴趣大增,嚷嚷着要做更好玩的。 最近,娃妈从抖音上买了个小猫喝…...

【Linux从入门到精通】进程的控制(进程替换)

本篇文章会对进程替换进行讲解。希望本篇文章会对你有所帮助 文章目录 一、进程替换概念 二、进程替换函数 2、1 execl 2、2 execlp 2、3 execv 2、3 execle 2、4 execve 三、总结 🙋‍♂️ 作者:Ggggggtm 🙋‍♂️ 👀 专栏&…...

rancher平台上强制删除pod服务操作

背景: 在日常paas平台运维工作中需要对rancher平台进行巡检的工作,在巡检时发现在rancher管理界面无法删除异常的pod服务, 处理: 像这样的情况就是k8s集群的pod无法通过默认的方式去删除掉pod服务,这时候只能是手工强制…...

【Docker】Docker的通信安全

Docker的通信安全 前言一、Docker 容器与虚拟机的区别1. 隔离与共享2. 性能与损耗 二、Docker 存在的安全问题1. Docker 自身漏洞2. Docker 源码问题 三、Docker 架构缺陷与安全机制1. 容器之间的局域网攻击2. DDoS 攻击耗尽资源3. 有漏洞的系统调用4. 共享 root 用户权限 四、…...

c# 函数中可选参数太多,想设置最后一个参数,又不想修改前面默认参数

C#中,你可以使用命名参数来指定你想要设置的可选参数,而保留其他参数的默认值不变。通过使用命名参数,你可以根据需要选择要为哪些参数提供值,而无需按照它们在函数签名中的顺序提供参数值。 以下是一个示例,演示如何…...

openvino资料(1)

1、c++ - OpenVino model outputs zeroes - Stack Overflow 2、https://chinait-intel.oss-cn-beijing.aliyuncs.com/OpenVINO/Ubuntu20.04%E7%8E%AF%E5%A2%83%E4%B8%8B%E4%BD%BF%E7%94%A8OpenVINO%E9%83%A8%E7%BD%B2BiSeNetV2%E6%A8%A1%E5%9E%8B.pdf 3、c++ - How to cre...

第71篇:某银行外网打点到内网核心区红队评估复盘

Part1 前言 大家好,我是ABC_123。本期分享一篇ABC_123曾经做的针对一家银行的红队评估项目,持续时间两周,难度非常大,但是最终打到了银行核心业务区,今天就复盘一下全过程,希望红蓝双方都能得到一些启示&a…...

网络安全 Day21-数据库知识

数据库知识 1. 什么是数据库2. 为什么需要数据库(分类不清晰)3. 数据库的种类3.1 关系型数据库3.2 NOSQL 数据库3.3 new sql (国产数据库)分布式数据库3.4 云数据库 4. mysql 关系型数据库5. 安装mariadb6. 为mariadb设置密码7. M…...

python测试开发面试常考题:装饰器

目录 简介 应用 第一类对象 装饰器 描述器descriptor 资料获取方法 简介 Python 装饰器是一个可调用的(函数、方法或类),它获得一个函数对象 func_in 作为输入,并返回另一函数对象 func_out。它用于扩展函数、方法或类的行为。 装饰器模式通常用…...

语音同声翻译软件让你不再为语言障碍困扰

从前有一个叫黄俊的小伙子,他有一个大梦想:环游世界!但是,他只会说中文,而去到外国又怎么跟当地人交流呢?为了实现自己的梦想,黄俊开始了寻找能帮他解决问题的捷径。这时,方娜向他介…...

别再为OpenBCI_GUI安装发愁了!保姆级教程带你从Processing配置到成功运行(附常见错误解决)

别再为OpenBCI_GUI安装发愁了!保姆级教程带你从Processing配置到成功运行(附常见错误解决) 第一次接触OpenBCI_GUI时,我完全理解那种面对陌生环境的无助感。作为一个开源脑机接口平台的核心组件,OpenBCI_GUI确实功能强…...

Qwen3-ASR性能优化:基于CNN的语音特征提取技术

Qwen3-ASR性能优化:基于CNN的语音特征提取技术 语音识别技术发展到今天,已经不再是实验室里的新奇玩具,而是我们日常生活中随处可见的实用工具。从手机语音助手到会议记录软件,从智能家居控制到车载语音交互,语音识别…...

告别手动抓包!用Playwright+Python自动嗅探网页M3U8视频流(附完整代码)

自动化嗅探网页M3U8视频流:Playwright与Python的完美结合 在当今数字化时代,视频内容已成为网络信息的主要载体之一。对于开发者而言,如何高效地从网页中提取视频资源一直是个值得探讨的话题。传统的手动F12抓包方式不仅效率低下,…...

多智能体强化学习调参新思路:为什么你的MAPPO在离散环境不收敛?

多智能体强化学习调参新思路:为什么你的MAPPO在离散环境不收敛? 当你在连续环境中轻松实现MAPPO(Multi-Agent Proximal Policy Optimization)的收敛后,转向离散环境时却遭遇了令人沮丧的失败——这不是个例。许多中高级…...

PHP中HTML标签过滤的5种有效方法

什么是XSS攻击? XSS(Cross-Site Scripting)攻击是指攻击者在网页中插入恶意脚本,当其他用户浏览该页面时,恶意脚本会被执行,从而盗取用户信息、会话令牌或进行其他恶意操作。 方法一:htmlspeci…...

天华新能年营收75亿:净利同比降56% CFO离职 宁德时代是二股东

雷递网 雷建平 4月3日苏州天华新能源科技股份有限公司(简称:“天华新能”)日前发布财报。财报显示,天华新能2025年营收为75亿元。天华新能最近两年利润处于持续下滑状态,其中,2025年净利下降55.6%&#xff…...

小白程序员必看!从零理解并动手搭建智能体,附收藏指南

小白程序员必看!从零理解并动手搭建智能体,附收藏指南 本文深入浅出地讲解了智能体的定义、运行逻辑及搭建方法,适合小白和程序员学习。文章从智能体的标准定义入手,通过腾讯元宝的实例,阐述了智能体的核心运行逻辑——…...

OpenClaw性能调优实战:Qwen3-32B在RTX4090D上的量化推理加速

OpenClaw性能调优实战:Qwen3-32B在RTX4090D上的量化推理加速 1. 为什么需要性能调优? 去年冬天,当我第一次在RTX4090D上部署Qwen3-32B模型时,本以为24GB显存足以轻松应对各种任务。但现实很快给我上了一课——一个简单的网页内容…...

OpenClaw压力测试:千问3.5-27B持续运行48小时稳定性报告

OpenClaw压力测试:千问3.5-27B持续运行48小时稳定性报告 1. 测试背景与设计思路 上周在星图平台部署了千问3.5-27B镜像后,我决定对OpenClaw框架进行极限压力测试。这个想法源于实际需求——作为独立开发者,经常需要AI助手连续处理夜间数据抓…...

CSDN首页发布文章意见反馈

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...