[英]MySQL alter table enable keys not as fast as promised
所以我有一個大表,有超過20億條記錄和5個多列密鑰。
我可以使用兩種方法插入數據:
方法1
load data infile ...;
方法2
alter table disable keys;
load data infile ...;
alter table enable keys;
如果我從空表開始,對於20億條記錄,方法1需要大約60小時(估計,可能更多),而方法2需要12小時來插入數據,3小時重新創建密鑰。 到現在為止還挺好。
但是,如果我已經擁有了20億條記錄,並嘗試再插入500萬條記錄,則方法1需要大約3個小時,而方法2需要30分鍾插入數據,並且需要7個小時才能重新創建密鑰。 我確認在整個密鑰重新生成期間,它Repair by sorting
使用了Repair by sorting
,所以它不像是Repair with keycache
重新Repair with keycache
。
我想知道為什么會這樣。 MySQL聲稱禁用密鑰非常適合插入批量數據,但這顯然取決於上下文。 如果要從頭開始重新生成所有鍵,為什么不需要大約3個小時,就像我開始使用空表一樣? 或者如果它逐個插入密鑰,為什么不花費大約3個小時,這是方法1所花費的?
歡迎評論
如果您正在處理數十億條記錄,並使用MySQL 5.1或更高版本,那么您可能會發現分區將有利於提高性能......在分區表中處理索引時,索引也會被分區; 並且因為每個索引僅針對總數據的分區/子集構建,所以重建的分類開銷應該顯着減少。
“沒有那么快的承諾” -呃,你有500萬點的記錄,當然這將需要更長的時間比插入20條記錄。
您描述的速度非常合理恕我直言 - 只需使用最快的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.