Mysql

percona-online-schema-change 需要很多時間

  • September 21, 2017

我們有一個包含 6 億多條記錄的表,並使用 AWS Aurora 和主從複製。

要求: 我們需要在customer表中添加兩列索引。

Aurora 實例規格: Ram:30.5 GB CPU:4 vCPU

我複制了集群並創建了具有相同配置的實例,並將更新過程執行到新創建的主實例以查看它是如何工作的。但這需要很多時間;(已經 4 天)並且仍在執行。我能做些什麼來加快改變過程嗎?

命令:

pt-online-schema-change --execute --ask-pass --user=admin --statistics --chunk-time=1 --alter 'ADD COLUMN email_sha1 CHAR(40) DEFAULT null, ADD COLUMN email_sha256 CHAR(64) DEFAULT null, ADD INDEX email_sha1(email_sha1) USING BTREE, ADD INDEX email_sha256(email_sha256) USING BTREE'  D=example,t=customer,h=example.public.rds.amazonaws.com

您正在對電話號碼進行雜湊處理?為什麼?索引電話號碼可以說比建構雜湊和索引更好。一方面,電話號碼總是(?)比散列短。

殺死ALTER並重新考慮任務。

問題的可能原因是被索引的列的隨機性——在程序結束時,它將減慢到每行大約 1 個磁碟命中。如果您估計每個磁碟命中 1 毫秒,我估計可能需要一周時間才能完成。

你執行的是什麼版本?它可以添加索引ALTER=INPLACE嗎?這可能讓您 (1) 添加列,然後 (2) 單獨ALTER執行ADD INDEXwith ALTER=INPLACE,而不必擔心需要一周時間。

我仍然質疑列或索引的必要性。

如需進一步討論,請提供SHOW CREATE TABLE

引用自:https://dba.stackexchange.com/questions/186411