我们已经使用Percona OSC,而现在进行修改,我们的MySQL架构不锁定表和它一直很大,通常在添加新列或索引“大” InnoDB表(〜380万行)几个小时。为什么Percona pt-online-schema-change表现如此糟糕?
不过,最后更新我试过了(在我们最安静的时期过夜)7小时后运行只有40%完成,与另外11小时估计完成(这不断增加)。 RedHat服务器上的所有可用内存条均为4GB - 我们最近从16GB升级到32GB。
那么这里发生了什么?为什么突然间的时间突然增加了呢?我们刚刚达到percona/mysql /服务器无法应付的某种阈值吗?有没有我们可以调整的配置来提高性能?
该表有32列和12个索引(包括主键和2个其他唯一索引)。我知道这很多,但直到最近它才表现得很好。
表也有几个外键指向它,我们设置使用drop_swap方法来更新。
我使用的完整的命令是:
pt-online-schema-change --execute --ask-pass --set-vars innodb_lock_wait_timeout=50 --alter-foreign-keys-method=drop_swap
--alter "ADD is_current TINYINT(1) DEFAULT '1' NOT NULL" u=admin,p=XXXXXXX,D=xxxxx_live,t=applicant
的innodb_buffer_pool_size当前设置为2147483648 - 这应该增加多少?如果是这样,多少? Web服务器(apache/php/symfony)也在这个盒子上运行。
我在这个特定的表上做出的最后一项更改是将1字段的排序规则更改为utf8_bin(其他字段为utf8_unicode_ci) - 这可能会有所作为吗?