首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MariaDB:如何减少ibdata文件大小

MariaDB:如何减少ibdata文件大小
EN

Database Administration用户
提问于 2021-02-04 13:38:48
回答 3查看 2.4K关注 0票数 2

我发现我的MariaDB的ibdata文件不断增加。因此,我搜索了这个,并发现innodb_file_per_table应该设置为1。但是,我的DBMS的配置已经设置为1;

为什么ibdata文件大小不断增加,我还应该为此做些什么。

以下是我的dbms信息。

代码语言:javascript
复制
DBMS: MariaDB
engine: InnoDB Engine
version: 10.3

** my.cnf **
innodb_file_per_table=ON
transaction-isolation=READ-COMMITTED
EN

回答 3

Database Administration用户

回答已采纳

发布于 2021-02-04 14:57:10

想到的第一个想法是:“哇!你一定有相当大的交易。”

根据MysqlPerformanceblog.com的主要原因是Innodb表空间的说法,这些是导致ibdata1增长的主要问题:

  • 大量的事务变化
  • 很长的交易
  • 滞后清除螺纹

ibdata1内部的撤销日志将保存大量信息以支持事务隔离级别。由于您使用的是READ-COMMITTED,这种增长可能更显着。

我以前在DBA StackExchange中讨论过这个问题。

建议#1

由于您使用的是MariaDB,请查看系统表空间之外的撤消日志配置。请阅读MariaDB在诺姆b_撤消_目录诺姆b_撤消_表空间上的文档,然后从那里开始。

建议#2

您可能必须将mysqldump作为您的数据并将其加载到MariaDB的新安装中。有关其他想法,请参阅我在如何在不转储所有数据库的情况下收缩innodb文件ibdata1 1?中的文章。不管怎样,这需要一些工作!

票数 1
EN

Database Administration用户

发布于 2023-04-25 06:08:24

这个主题也在MDEV 21952中进行了讨论。在即将发布的MariaDB服务器10.6.13版本中,MDEV 29593应该改进撤消日志页的重用。从MariaDB服务器10.11 (最新的长期支持版本系列)开始,多亏了MDEV 19229,您可以在SET GLOBAL innodb_fast_shutdown=0; SHUTDOWN;之后更改innodb_undo_tablespaces的值。

驻留在InnoDB系统表空间中的表应该通过以下查询来报告:

代码语言:javascript
复制
SELECT name FROM information_schema.innodb_sys_tables WHERE space=0;

最后但并非最不重要的一点是,MDEV 27734默认设置innodb_change_buffering=none不仅因为它会使系统表空间无法控制地增长,而且还因为各种腐败问题影响了MySQL和MariaDB。

票数 3
EN

Database Administration用户

发布于 2021-02-04 20:28:21

(Rolando的回答指出了该文件增长的方式;我将讨论表是否在ibdata1中而您没有意识到的问题。)

这总是设置好的吗?innodb_file_per_table=ON --我问你,是因为它只适用于打开它之后创建的表。

在每个目录中执行SHOW TABLE STATUS。观察Data_free。您将看到一些可能的值:

  • 0 --小桌
  • 4米,5米,6米,7米-中或大桌子
  • 一些数字,可能很大,在许多表中重复。-可能是用innodb_file_per_table=OFF创建的,也就是说,住在ibdata1里。

上述测试不确定,但速度相对较快。

有一种依赖于版本的方法可以使用information_schema来发现每个表的文件;我不碰巧知道MariaDB 10.3的表和列。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/284699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档