2011-11-16 368 views
1

MYSQL Innodb的更新問題:更新在MySQL的InnoDB萬條記錄

有一次,我收到了創紀錄的響應(狀態),我需要更新到一個非常大的表的響應(大約100萬條記錄,並會繼續增加),並且這種情況會持續發生,每秒可能會達到100次。我可以知道會有任何性能問題嗎?或者我可以修改任何設置以避免表鎖定或查詢速度緩慢問題。

謝謝。

+0

請記住**接受**對您最有幫助的答案。 –

回答

0

您在數據庫上擁有的任何索引(特別是聚簇索引)都會減慢您的寫入速度。

索引加速閱讀,但他們放慢了寫作。大多數數據庫讀取的內容比寫入的內容要多,但聽起來像是你的寫入更多。

2

這聽起來像是一個設計問題。

取而代之的是存儲百萬條數據記錄的標誌(狀態記錄更新發生變化),您應該在數據記錄中存儲一個指向狀態記錄的引用。所以,當你更新狀態記錄時,不需要進一步的數據庫操作。另外,當你掃描數據記錄時,你應該加入狀態記錄(如果需要顯示的話)。如果狀態記錄更改經常發生,那麼要比更新數百萬條數據記錄更好。也許,我錯了,你應該解釋db(結構,表記錄數)以獲得更準確的答案。

1

如果您使用MyISAM存儲引擎存儲您的表格,那麼您的表格將爲lock with every update

但是,InnoDB存儲引擎的能力爲locking individual rows

如果你同時需要UPDATE多條記錄,InnoDB可能會更好。