MariaDB InnoDB 空洞清理

news/2024/9/24 1:38:56/

1、背景

        数据库占用服务器内存越来越高,除了bin-log文件之外,还发现了一些带有text或者longtext数据类型字段的表,这种表也会占用很高的服务器磁盘空间

数据库版本:

表引擎: InnoDB

数据量:清理之前1500万,清理之后600万

2、清理

        建议在系统运行中,时刻关注类似表空间是否增大,如发现异常,需要及时处理。

        1、查询数据库空洞的SQL

    SELECT table_schema,TABLE_NAME , concat(data_free/1024/1024,"M") FROM `information_schema`.tables WHERE data_free >8*1024*1024 AND ENGINE ='innodb'  ORDER BY data_free DESC;

        table_schema:库名
        TABLE_NAME:表名
        concat:空洞空间大小

        2、清理方法

        OPTIMIZE TABLE your_table_name;  这种方法不支持InnoDB引擎的表

        ALTER TABLE your_table_name ENGINE=InnoDB; InnoDB引擎的表建议使用这种方法

3、注意事项

        1、锁表问题

        因为作者这边的表是InnoDB引擎,所以这里只验证了ALTER TABLE这种方式,在执行了SQL之后,任然有数据进入操作的表,说明不会造成锁表。

        2、服务器磁盘空间是否充足

        ALTER TABLE 会创建一个新的临时表,并将原表中的数据复制到新表中,然后删除原表,将新表重命名为原表的名字,在复制到新表过程中,原表未被删除的数据会占用磁盘空间,作者这边的表是有500多个G,所以在执行这个SQL之前,要确保服务器还有额外的500个G的磁盘空间

        3、系统业务

        执行过程中,会占用数据库服务器的资源,交换空间基本上是拉满了,内存空间占用也比较高,如果此时还有其他业务在频繁访问数据库的话,可能造成很严重的后果,所以建议选择业务低峰时期来执行

4、结语

        内心非常忐忑,整个执行过程花了2小时,原本被清理的表占用了580个G左右,清理了900万左右的数据之后,执行了ALTER TABLE之后,新的表还有300多个G,也就是说在处理过程中,看着磁盘空间一点一点的减少(总共需要占用900多个G),心头慌得一批,担心服务器啥时候崩掉了。

        


http://www.ppmy.cn/news/1429367.html

相关文章

java-spring-mybatis -学习第一天-基础知识讲解

目录 前置条件(创建一个项目) Mybatis 定义 可能出现的问题 这边如果连接不上数据库 ​编辑 Dao接口设计 Mybatis流程 创建实体类 User 和其属性 创建Mapper的接口类 测试类测试 实例数据库数据的更新 实例数据库数值的删除 最重要的是有一个原始的数据库 -我这边…

Gitlab: Python项目CI/CD实践

目录 1. 说明 2. 准备工作 2.1 服务器 2.2 开发机hosts文件 2.3 项目 3. 步骤过程 3.1 建仓Fastapi T1 3.2 开发机测试构建与推送 ​编辑 3.3 在工作站添加gitlab-runner 3.4 提交代码,查看Pipelines结果 3.5 观察部署情况 4. 参考 1. 说明 分别以一个…

【Pytorch】torch.cat()函数

作用 用于在指定的维度上拼接tensor(张量)。 导入 import torch用法 tensor1 torch.tensor([[1, 2], [3, 4]]) tensor2 torch.tensor([[5, 6], [7, 8]]) result torch.cat((tensor1, tensor2), dim0)# result: # tensor([[1, 2], # [3, 4]…

【MySQL】查询(进阶)

文章目录 前言1、新增2、聚合查询2.1聚合函数2.1.1count2.1.2sum2.1.3avg2.1.4max和min 2.2、GROUP BY子句2.3HAVING 3、联合查询/多表查询3.1内连接和外连接3.2自连接3.3子查询3.4合并查询 前言 在前面的内容中我们已经把查询的基本操作介绍的差不多了,接下来我们…

VUE运行找不到pinia模块

当我们的VUE运行时报错Module not found: Error: Cant resolve pinia in时 当我们出现这个错误时 可能是 没有pinia模块 此时我们之要下载一下这个模块就可以了 npm install pinia

【精】Devops实战学习CI/CD落地方案#CI篇#

目录 先有个大概了解 基本概念 CI/CD Devops 阿里云效 devops产品 K8s jenkins docker git maven 知行合一,上手操作 实操记录 安装VMware 安装并配置虚拟机 安装并配置docker docker安装 修改镜像源(关键且易出错) CentOS…

算法课程笔记——蓝桥云课第二次直播

注意是‘’ 都正确 可以理解为a的首地址也是数字&#xff0c;向右1 %p逻辑地址 Cin cout字符串“”单个字符本身‘’&#xff0c;其他时候不用加 这样就可以 逆运算 bool比较真假<从小到大排 11/25 都输出最省事 变成长度为n1的数组 考虑到整个都可能为一个颜色&#xff0c;…

ssm068海鲜自助餐厅系统+vue

海鲜自助餐厅系统的设计与实现 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管…