我们最近将表切换为专门使用 InnoDB(来自 MyISAM),这样我们就可以利用对数据库进行更新的能力,同时仍然允许SELECT
查询发生(即不锁定每个表的整个表INSERT
)
我们有一个每周运行的周期,INSERTS
大约有 1 亿行使用"INSERT INTO ... ON DUPLICATE KEY UPDATE ..."
我们对当前每秒大约 2000 次插入/更新的更新性能相当满意。
但是,在此过程运行时,我们观察到常规查询需要很长时间。
例如,这需要大约 5 分钟来执行:
SELECT itemid FROM items WHERE itemid = 950768
(当INSERT
s 没有发生时,上述查询需要几毫秒。)
有没有办法强制SELECT
查询获得更高的优先级?否则,我可以在 MySQL 配置中更改任何可以提高性能的参数吗?
理想情况下,我们会在流量较低时执行这些更新,但是每个 SELECT 查询超过几秒钟的时间似乎会破坏能够同时更新和从数据库读取的目的。我正在寻找任何建议。
我们使用 Amazon 的 RDS 作为我们的 MySQL 服务器。
谢谢!