首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何优化和修复InnoDB表?更改和优化表失败

如何优化和修复InnoDB表?更改和优化表失败
EN

Database Administration用户
提问于 2012-08-27 15:06:37
回答 1查看 10.7K关注 0票数 5

我刚刚切换了我的Wordpress数据库来使用InnoDB引擎。

在使用MyISAM时,我经常运行OptimizeRepair table。然而,在InnoDB中,这些方法不起作用。

我手动运行了OPTIMIZE TABLE和建议的ALTER TABLE,但它们都没有消除开销。我在服务器上运行了mysqltuner,其中显示了14个零碎的表--总共有14个表。即使在运行optimizealter tables之后,所有14个表仍然是支离破碎的!

如何正确地使用OPTIMIZEREPAIR InnoDB表?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2012-08-27 15:47:07

哎哟,你把innodb_file_per_table关掉了

我以前写过这方面的文章。您必须转换InnoDB基础结构。

一旦您这样做,无论何时您对表进行优化到InnoDB,它实际上都会缩小。

如果不执行InnoDB基础设施清理,ibdata1文件的大小实际上会增加。更糟糕的是,我认为mysqltuner.pl正在使用一种奇怪的算法来确定InnoDB碎片。我倾向于忽略它。

我以不同的方式检查碎裂。

回到2012年4月19日,我回答了一个类似的问题:如何从InnoDB表中删除碎片?

下面是我在前面那篇文章中说过的话:

在运行上述步骤之后,如何确定哪些表需要碎片整理?这是可能的,但你会有脚本它。下面是一个示例:假设您有表mydb.mytable。启用innodb_file_per_table后,文件/var/lib/mydb/mytable.ibd必须从OS中检索两个数字文件大小:您可以从操作系统中确定文件大小,比如ls /var/lib/mydb/mydb/mytable.ibd awk '{print $5}‘来自INFORMATION_SCHEMA的文件大小:您可以从以下information_schema.tables中确定文件大小:从information_schema.tables中选择(data_length+index_length) tblsize =’mydb‘和table_name='mytable';只需从OS值中减去INFORMATION_SCHEMA值,然后将差异除以INFORMATION_SCHEMA值。

从那里你将决定有多大的百分比认为有必要拆除那张表。换句话说,如果.ibd文件的文件大小与来自INFORMATION_SCHEMA.TABLES的数字有很大的差异,那么继续使用OPTIMIZE TABLE。不管文件大小如何,如果碎片小于1%,请不要担心。

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

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

复制
相关文章

相似问题

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