在使用MyISAM时避免锁定SELECT:s在MySQL中

时间:2009-08-02 09:38:37

标签: mysql myisam

MyISAM使用表级锁定,这意味着当INSERT / UPDATE:s正在运行时,SELECT:s被阻止。

为了缓解SELECT:s的问题,我建议使用以下参数配置MySQL:

  • low_priority_updates=1
  • concurrent_insert=2

使用low_priority_updates=1concurrent_insert=2会有什么缺点?

1 个答案:

答案 0 :(得分:2)

这是一个great post from the MySQL Performance Blog,其中包含了一些

  

锁定优先级。默认情况下,MySQL将更新视为更高优先级   操作。您可以使用SELECT   HIGH_PRIORITY或UPDATE LOW_PRIORITY   调整,或你可以简单地设置   low_priority_updates选项。无论如何   默认行为表示任何UPDATE   被长期阻止的陈述   运行选择也将进一步阻止   从这张表中选择 - 他们会   必须等到UPDATE执行   正在等待SELECT到   完成。这通常不计算在内   为了和人们的想法 - “好的。我写了我的   脚本所以它做短暂的更新所以它   不会阻止任何事情“ - 它仍然   如果有,可能会导致总阻塞   长选择跑步。

另一个post benchmarks concurrent_inserts并强调了可能的缺点,尽管现在已经有3年了。