【发布时间】:2013-06-30 15:57:52
【问题描述】:
我们最近将表切换为使用 InnoDB(来自 MyISAM),这样我们就可以利用更新数据库的能力,同时仍然允许发生 SELECT 查询(即不为每个 @ 锁定整个表987654322@)
我们有一个每周运行的循环,INSERTS 使用 "INSERT INTO ... ON DUPLICATE KEY UPDATE ..." 大约有 1 亿行
我们对目前每秒大约 2000 次插入/更新的更新性能感到非常满意。
但是,在此过程运行时,我们发现常规查询需要很长时间。
例如,这需要大约 5 分钟来执行:
SELECT itemid FROM items WHERE itemid = 950768
(当INSERTs 没有发生时,上述查询需要几毫秒。)
有没有办法强制SELECT 查询获得更高的优先级?否则,我可以在 MySQL 配置中更改任何可以提高性能的参数吗?
理想情况下,我们会在流量较低时执行这些更新,但是每个 SELECT 查询 超过几秒钟似乎会破坏能够同时更新和从数据库中读取的目的。我正在寻找任何建议。
我们使用 Amazon 的 RDS 作为我们的 MySQL 服务器。
谢谢!
【问题讨论】:
-
你的缓冲池有多大,你有多少内存?
-
感谢您的评论。我现在不确定,但我认为我解决了这个问题。我发现只要我查询主键或索引列,结果就会立即返回。我唯一真正的用例是查询索引字段。由于我很好奇并想了解更多信息,我将保留这个问题,但我认为我的直接关注已经解决。
标签: mysql innodb amazon-rds