我在MySQL中有一个表,出于性能/存储的原因,我需要重建它。是否可以使用pt-online-schema-change而不做任何更改,或者总是需要更改?如果是前者,我可以在Liquibase XML中指定它吗?
8ehkhllq1#
是的,我经常这样做来整理碎片和恢复磁盘空间在一个表后,大量的更新或删除.任何无操作改变将工作相同的pt-online-schema-change,但我使用选项--alter=FORCE,因为它是ALTER TABLE <name> FORCE的助记符,这将是一个无操作表重组,如果不使用pt-online-schema-change.我对Liquibase不够熟悉,不知道如何使用它来运行pt-online-schema-change任务。
--alter=FORCE
ALTER TABLE <name> FORCE
rbpvctlc2#
InnoDB表很少需要OPTIMIZE TABLE。大的DELETEs应该用几种更优化的方法中的一种来执行,其他一些方法本质上会导致碎片整理作为副作用。Big Deletes
OPTIMIZE TABLE
DELETEs
z9ju0rcb3#
可以使用pt-online-schema-change重建表。请使用以下方法:
pt-online-schema-change
pt-online-schema-change --execute --alter "ENGINE=InnoDB;" D=<db_name>r,t=<table_name>
3条答案
按热度按时间8ehkhllq1#
是的,我经常这样做来整理碎片和恢复磁盘空间在一个表后,大量的更新或删除.任何无操作改变将工作相同的pt-online-schema-change,但我使用选项
--alter=FORCE
,因为它是ALTER TABLE <name> FORCE
的助记符,这将是一个无操作表重组,如果不使用pt-online-schema-change.我对Liquibase不够熟悉,不知道如何使用它来运行pt-online-schema-change任务。
rbpvctlc2#
InnoDB表很少需要
OPTIMIZE TABLE
。大的
DELETEs
应该用几种更优化的方法中的一种来执行,其他一些方法本质上会导致碎片整理作为副作用。Big Deletes
z9ju0rcb3#
可以使用
pt-online-schema-change
重建表。请使用以下方法: