Dou*_*ram 3 mysql myisam locking
我有一台服务器,可以接收来自世界各地数千个地点的数据。该服务器定期连接到我的数据库服务器并快速连续插入记录,一次一行。最多可以有 6 个这样的进程 (perl) 同时运行,每个进程可能有超过 50,000 个插入语句,随后,表被锁定。
我想弄清楚是什么导致锁定?我是否最好创建一个多插入,比如,一次 100 行,然后首尾相连?我用什么作为指导方针?
DB 服务器有 100GB RAM 和 12 个处理器。它很少使用,但是当这些插入内容出现时,每个人都会冻结几分钟,这会干扰人们运行报告等。
感谢您的任何建议。我知道我需要错开插入,我只是问什么是推荐的方法来做到这一点。
您无法摆脱所有锁定。但是,有一些方法可以加快您正在执行的操作:
INSERTs
。一次 100 行的运行速度将提高 10 倍。pt-online-schema-change
. 然后将多个INSERTs
放入一个事务中(BEGIN
... COMMIT
)。CREATE TEMPORARY TABLE
),然后INSERT INTO real_table SELECT * FROM tmp_table
. 即使在 MyISAM 上,由于 6 个锁而不是 6*50K,它的运行速度也会明显加快。阅读有关concurrent_insert
如何避免 50K 表锁定到 tmp 表的信息。请向我们展示SHOW CREATE TABLE
. 可能还有其他重大问题,尤其是索引。
归档时间: |
|
查看次数: |
6847 次 |
最近记录: |