我的ibdata文件非常大,至less在我看来非常大。 这是过度还是不好?
-rw-rw---- 1 mysql mysql 15G Apr 18 10:11 ibdata1
如果您在show table status
上运行show table status
,并且Data_free
字段占ibdata1
文件大小的绝大部分,则可能会浪费大量空间。 大量的插入/删除会导致这个问题。 如果是这种情况,并且短暂的插入和删除操作占据了大部分数据,那么每个表格都有一个很好的文件格式。
这不是一个自动的“是”,但。 世界上有很多关于InnoDB文件内部碎片的讨论,但是把它们作为file-per-table放入文件系统只是将碎片移动到文件系统级而不是数据库级。
把你的InnoDB文件想象成文件系统而不是文件。 如果你有很多文件,你需要一个大的文件系统。
大多数情况下,文件系统在处理太字节的数据和无数的文件方面做得非常好。 有时他们会遇到索引较差的问题(例如,在性能影响之前,对目录中文件数量的限制),但是现代文件系统的大部分可以很好地进入太字节范围。
InnoDB的function相同。 你的数据文件的大小可能是巨大的…和大型文件系统一样,这可能会导致备份数据时出现问题。 然而,就像把你的文件系统分割成多个分区不能解决这个问题一样,试图操纵innodb也是一样。 虽然你可以使用innodb_file_per_table ,但我很less推荐它。
就像你的文件系统一样,更好的答案是知道内部的限制,并在内部工作。 理解索引并适当地应用它们。 不要试图分裂InnoDB,这并不意味着这一点。
由于我正在努力地build设性地传达这个概念,所以下面这个快速阅读这个词比我更好: 太字节不是大数据,PB是 。
我记得一个非常古老的MySQL营销幻灯片,客户正在运行数TB的数据仓库。 多年前。 InnoDB或MyISAM,都可以工作。 这是标准的MySQL的东西。
不要冒汗15GB的数据库。
ibdata文件不会缩小 – 如果您最近删除了一些表或删除了很多行 – 您的configuration中的innodb将不会释放可用空间回到文件系统。 我build议你:
通过这种方式,只要你删除innodb表/数据库,你将能够回收空间,关联的idb文件将被立即删除。