2010-12-16 91 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