Mysql中的低优先级查询

Rob*_*y75 13 mysql

是否可以为MySQL中的查询分配较低的优先级,类似于nice命令行上的命令(在Linux中)?如果没有,是否有可以做类似的数据库?

jul*_*enc 16

您可以在查询中使用LOW_PRIORITYHIGH_PRIORITY,具体取决于您执行的查询类型:

INSERT [LOW_PRIORITY | HIGH_PRIORITY] INTO ...
SELECT [HIGH_PRIORITY] * FROM ...
UPDATE [LOW_PRIORITY] table ...
Run Code Online (Sandbox Code Playgroud)

Mysql 5.7文档INSERT查询实例:

如果使用LOW_PRIORITY关键字,则INSERT的执行将延迟,直到没有其他客户端从表中读取.这包括在现有客户端正在读取时开始读取的其他客户端,以及INSERT LOW_PRIORITY语句正在等待.因此,发出INSERT LOW_PRIORITY语句的客户端可能需要等待很长时间.

但也有人说:

这仅影响仅使用表级锁定的存储引擎(例如MyISAM,MEMORY和MERGE)

因此innodb,除非您想使用LOCK_TABLES并因此降低其性能,否则您将无法使用此功能.

  • 我[刚刚在 dba stackexchange 上读到](http://dba.stackexchange.com/a/56379/8378) 如果您的数据库总是忙于运行正常或 HIGH_PRIORITY 查询,那么 LOW_PRIORITY 查询可能永远不会运行...所以值得深思! (2认同)
  • 该答案指出您可以将 LOW_PRIORITY 用于 INSERT、SELECT 和 UPDATE。至少从 MySQL 5.7 开始,此选项不适用于 SELECT 语句。见 https://dev.mysql.com/doc/refman/5.7/en/select.html (2认同)