Mysql
percona-online-schema-change 需要很多時間
我們有一個包含 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 INDEX
withALTER=INPLACE
,而不必擔心需要一周時間。我仍然質疑列或索引的必要性。
如需進一步討論,請提供
SHOW CREATE TABLE
。