首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >元数据是多少ibdata1空间?

元数据是多少ibdata1空间?
EN

Stack Overflow用户
提问于 2013-01-07 15:30:01
回答 2查看 1.2K关注 0票数 0

我使用的是InnoDB数据库,只有一个文件配置(在/var中),所以没有innodb_file_per_table。

在MySql工作台中,当我查询使用空间的数据库时,使用此查询

代码语言:javascript
复制
SELECT table_schema "Database", sum( data_length + index_length ) / 1024 / 1024 "Data     Base Size in MB" 
FROM information_schema.TABLES GROUP BY table_schema;

它说我有47 GB的数据。然而,ibdata1的大小是99 GB.

我知道ibdata1包含了许多其他的东西,比如表索引、MVCC (多版本控制并发控制)数据和表元数据

,所以我的问题是:,据说52 GB的ibdata1是medatada和其他一些东西,这是正常的吗?通常,ibdata1文件应该包含多少表数据?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-07 15:36:55

不,有那么多元数据是不正常的。不过,如果不使用innodb_file_per_table,那么ibdata文件的大小就会变得非常大,这是很正常的。

当数据库增长时,ibdata文件将增长,但实际上它不会缩小。

因此,例如,如果您曾经有130 GB的数据,并删除了其中的一堆数据,那么在清除数据之后,ibdata文件仍然是130 GB。它将只有一堆“空闲空间”,然后它将用于后续插入。

至于缩小文件,除了清除数据库和恢复数据库之外,没有什么可做的。这个答案对如何做到这一点有一些很好的说明。

如何清除mysql InnoDB存储引擎?

您还可以考虑使用innodb_file_per_table从表中删除数据,然后优化该表实际上会缩小单个表文件的大小。

票数 2
EN

Stack Overflow用户

发布于 2013-01-07 21:17:17

在ibdata1中拥有大量“额外”空间有几个原因,但最有可能的情况是:

  • 您在过去已经删除了大量数据。删除行或删除表时,尽管文件中将提供可用的可用空间,但文件本身不会缩小。
  • 您可能有过多的撤消日志空间(或在过去的某个时间点)。撤消日志是在DELETEUPDATE操作期间保存的,对于非常长时间运行的操作,接触许多行的操作可能会变得相当大。同样,如果文件被展开以保存此数据,它将永远不会收缩。

如前所述,如果您希望定期删除表并希望返回磁盘空间,那么使用innodb_file_per_table可以在这方面有所帮助。我的博客文章InnoDB空间文件布局的基础可能会帮助您理解ibdata1文件中包含的内容。

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

https://stackoverflow.com/questions/14198923

复制
相关文章

相似问题

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