MySQL - pt-online-schema-change对db性能的影响

时间:2011-12-08 11:40:09

标签: mysql percona pt-online-schema-change

我想使用pt-online-schema-change来更改大表的架构(~100M记录),这个工具在运行时会影响MySql的性能吗?

3 个答案:

答案 0 :(得分:3)

通过设计,该工具对性能没有显着影响。首先,让我们回顾一下该工具的作用:

  • 将触发器附加到当前表,以将所有更新,删除和插入复制到新表。
  • 以块为单位复制现有数据,按键
  • 进行分区

第一部分是将所有写入加倍,并且没有办法解决这个问题。第二部分是批处理操作,可能会锁定当前表并耗尽大量IO。

幸运的是,第二部分被拆分为块,pt-online-schema-change非常聪明地知道块有多大以及它们在块之间等待多长时间:

  • 它检查块之间的从属复制,如果滞后太大则暂停。它能够递归检查奴隶。
  • 它检查加载(通常通过运行的线程数量来衡量)并在运行的查询太多时暂停(这意味着锁争用或高CPU / IO使用率)。如果负载非常高,它甚至可以中止。
  • 它配置 InnoDB锁定设置,使其最有可能成为任何锁争用的受害者,因此生产查询将顺利运行。
  • 默认情况下,使用以前的块运行时的加权平均值,块大小动态更改以保持运行时的一致性。
  • 太大的块(例如由于具有相同键的大量行)将跳过结束。

因此,您的服务器可能只会受到副本的轻微影响。但是,当然,无法保证,如果可能,您应该在数据库的暂存版本上运行该工具。如果出现问题,您可以安全地中止该工具而不会丢失数据。

答案 1 :(得分:1)

在线架构更改非常激烈,而对原始表的所有插入/更新/删除运行都加倍(该工具添加了触发器,因此这些操作在新副本上重复),并且每个行的每一行都是一块一块的表被复制了。

如果您担心这可能对您的数据库产生什么影响,请查看文档:{​​{3}}

有几种方法可以让工具自行调节,包括检查线程数,复制延迟,以及修改每个块的大小/每个块应该花多长时间。

答案 2 :(得分:0)

读取和写入磁盘,消耗内存并使用CPU,所以是的, 会影响运行时的性能。怎么会这样呢?