2011-04-25 226 views
0

剛完成重寫許多查詢作爲批量查詢 - 在foreach循環中不再需要DB調用!如何在MySQL中優化緩慢批量INSERT IGNORE

其中一個新的批量查詢,並將忽略插入數據透視表,每次需要1-4秒。它相當大(每次調用約100行),表格也大於200萬行。

這是我的程序當前的瓶頸。我是否應該考慮像鎖定桌子一樣(以前從未這樣做過,但我聽說它是​​......危險的),或者我應該先看看其他選項。

由於它是一個數據透視表,所以有一個唯一的密鑰由兩個我正在更新的行組成。

回答

0

你在使用索引嗎?索引正確的列可以極大地加快速度。如果您正在進行大量更新和插入操作,有時候在完成之前禁用索引是有意義的,因爲重新索引需要時間。我不明白如何鎖定桌子會有所幫助。該表是否由其他用戶或應用程序使用?這將是鎖定速度增加的主要原因。

+0

好吧,這個調用是multi_curl回調函數的一部分,所以有可能有一個實例試圖在另一個實例正在寫入的同時從表中讀取數據。我在想,像鎖定表,刪除索引,做插入,添加索引,解鎖表。但是,正如你所說,索引需要時間。 – jisaacstone 2011-04-25 17:56:23