2011-12-08 64 views
1

我想用PT-在線架構的變化而改變大表(〜100M記錄)的模式PT-在線模式變化的影響,此工具的作用的MySql,而性能它的運行?MySQL的 - 在數據庫性能

回答

3

在設計上,該工具將具有對性能沒有顯著影響。首先,讓我們回顧一下該工具的作用:

  • 將觸發器附加到當前表,複製所有更新,刪除並插入新表。
  • 複製現有的數據在塊中,通過關鍵

分區第一部分是要翻倍的所有寫入和有沒有辦法解決這個。第二部分是批量操作,它將潛在地鎖定當前表並佔用大量IO。

幸運的是,第二部分被分成塊,pt-online-schema-change頗爲巧妙之塊之間等待有多大的塊是多久:

  • 它會檢查塊之間從複製,並暫停如果這個差距太大了。它可以遞歸地檢查奴隸。
  • 它檢查加載(通常以正在運行的線程數衡量),並在運行過多查詢(這意味着鎖爭用或CPU/IO使用率過高)時暫停並暫停。如果負載非常高,它甚至會中止。
  • 它配置InnoDB的鎖定設置這樣,這是最有可能是任何鎖爭的犧牲品,所以生產的查詢將平穩運行。
  • 默認情況下,塊大小動態變化,以保持其運行時保持一致,採用前一塊運行時的加權平均。
  • 大塊太大(例如由於具有相同的密鑰行數量龐大)將被跳過結束。

由於這個原因,很可能您的服務器只會受到副本的輕微影響。但是,當然,沒有保證,如果可能的話,您應該在數據庫的暫存版本上運行該工具。在發生問題時,您可以安全地中止工具而不丟失數據。

0

讀寫磁盤,消耗內存和使用CPU,所以是的,它影響性能,同時運行。它怎麼會是另外的呢?

+0

我的問題是Mysql性能會受到多大影響? – Ran

+1

那麼也許你應該問「這是怎麼回事」,而不是「這樣做」......事實上,我現在正在回答你的問題。 – Romain

1

的在線模式變更是相當激烈的,同時運行的所有插入/更新/刪除原來的表中增加了一倍(該工具將觸發器等等這些動作是在新副本中複製),並逐件的每一行件原始表格被複制過來。

如果你關注什麼影響,這可能有你的數據庫上,檢查出的文檔:http://www.percona.com/doc/percona-toolkit/2.2/pt-online-schema-change.html

有幾種方法可以讓工具油門本身,包括檢查線程數,複製延遲,並修改如何每個塊大/每個塊應該花多長時間。