2010-12-16 94 views
1

今天我一直在研究一些MySQL性能問題。我使用EXPLAIN來查找表掃描並通過創建索引來修復一些問題。MySQL,索引和「鎖超時超時」

我讀,因爲超快。

但是,從那以後,更新查詢就成了問題。當我重新啓動Mysql時,前幾個插入或更新工作正常。之後,更新查詢開始在60秒後顯示錯誤「超出鎖定等待超時;嘗試重新啓動事務」。

Mysql是否在每次插入/更新時重新創建大型索引?我該如何解決這個問題?

回答

1

是的,MySQL在每次更新時重新創建索引。你需要找到最佳點。只對WHERE條件(或加入ON條件)使用的密鑰添加索引。

如果您將所有內容編入索引,您的更新速度將會過慢。如果你沒有索引,你的閱讀速度會太慢。

如果在將索引縮小到所需的值之後仍然存在性能問題,則應該重新評估數據結構。

+0

我做了你無所不知的話。在EXPAIN指出表正在掃描行之後,我只在位於where子句或ON條件的列上創建了索引。 – koen 2010-12-16 22:45:41

+0

好的,我們需要查看更多關於您的表格結構的信息以進一步幫助。 – Stephen 2010-12-16 23:01:25