MySQL-pt联机模式更改对数据库性能的影响

MySQL-pt联机模式更改对数据库性能的影响,mysql,percona,pt-online-schema-change,Mysql,Percona,Pt Online Schema Change,我想使用pt online schema change来更改一个大表(~100M条记录)的模式,这个工具在运行时会影响MySql的性能吗?它会将内容读写到磁盘,消耗内存并使用CPU,所以是的,它会在运行时影响性能。否则怎么可能呢?它会将内容读写到磁盘,消耗内存并使用CPU,所以是的,它会在运行时影响性能。否则怎么可能呢?在线模式更改非常激烈,同时运行对原始表的所有插入/更新/删除都会加倍(该工具会添加触发器,以便在新副本上复制这些操作),并逐行复制原始表的每一行 如果您担心这会对您的数据库产生什

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

它会将内容读写到磁盘,消耗内存并使用CPU,所以是的,它会在运行时影响性能。否则怎么可能呢?

它会将内容读写到磁盘,消耗内存并使用CPU,所以是的,它会在运行时影响性能。否则怎么可能呢?

在线模式更改非常激烈,同时运行对原始表的所有插入/更新/删除都会加倍(该工具会添加触发器,以便在新副本上复制这些操作),并逐行复制原始表的每一行

如果您担心这会对您的数据库产生什么影响,请查看以下文档:


有几种方法可以限制工具本身,包括检查线程数、复制延迟,以及修改每个块的大小/每个块应花费的时间。

在线模式更改非常激烈,同时对原始表执行所有插入/更新/删除操作的时间都会加倍(该工具添加触发器,以便在新副本上复制这些操作),并逐行复制原始表的每一行

如果您担心这会对您的数据库产生什么影响,请查看以下文档:


有几种方法可以限制工具本身,包括检查线程数、复制延迟,以及修改每个块的大小/每个块应花费的时间。

根据设计,该工具对性能没有显著影响。首先,让我们回顾一下该工具的功能:

  • 将触发器附加到当前表,以将所有更新、删除和插入复制到新表
  • 将现有数据复制到按键分区的数据块中
第一部分是将所有写操作加倍,这是无法避免的。第二部分是一个批处理操作,可能会锁定当前表并占用大量IO

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

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

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

根据设计,该工具不会对性能产生重大影响mance.首先,让我们回顾一下该工具的功能:

  • 将触发器附加到当前表,以将所有更新、删除和插入复制到新表
  • 将现有数据复制到按键分区的数据块中
第一部分是将所有写操作加倍,这是无法避免的。第二部分是一个批处理操作,可能会锁定当前表并占用大量IO

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

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

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

我的问题是Mysql的性能会有多大影响ted?那么也许你应该问“这是怎么回事”而不是“这是怎么回事”…事实上,我在回答你的问题。我的问题是Mysql性能会受到多大影响?那么也许你应该问“这是怎么回事”而不是“这是怎么回事”…事实上,我在回答你的问题。