UPDATE LOW_PRIORITY和INSERT DELAYED INTO的优点是什么?

时间:2010-07-13 07:25:11

标签: mysql

我正在浏览一些代码并注意到UPDATE LOW_PRIORITYINSERT DELAYED INTO用于更新数据库。这些陈述的用途是什么?我应该在同一数据库中各种表的每个insert和update语句中使用它们吗?

4 个答案:

答案 0 :(得分:22)

使用LOW_PRIORITY关键字,UPDATE的执行会延迟,直到没有其他客户端从表中读取。通常,读取客户端将被保留,直到更新查询完成。如果要使读取客户端优先于更新查询,则应使用LOW_PRIORITY。

INSERT语句的DELAYED选项是标准SQL的MySQL扩展,如果您的客户端无法或不需要等待INSERT完成,则非常有用。当您使用MySQL进行日志记录时,这是一种常见情况,您还会定期运行需要很长时间才能完成的SELECT和UPDATE语句。

答案 1 :(得分:7)

LOW_PRIORITYHIGH_PRIORITYDELAYED仅适用于少数圈地。如果你没有大负荷他们无法帮助你。如果你有,不要做任何你不完全理解的事情。

所有这些otpions只适用于MyISAM,而不是InnoDB,而不是视图。

DELAYED不适用于分区表,它显然是为数据仓库设计的。客户端发送插入,然后忘记它,而不等待结果。因此,您不会知道插入是否成功,是否存在重复值等。当该表中的其他线程SELECT时,它永远不会被使用,因为延迟的插入永远不会并发。

LOW_PRIORITY等待,直到没有客户端访问该表。但是如果你有高流量,你可能要等到连接超时...这不是你想要的,我想:)

另请注意,{MySQL} 5.7中将删除DELAYED(但不会在MariaDB中删除)。

答案 2 :(得分:-1)

如果您对MySQL的UPDATEs读取密集型环境需要1800秒,那么建议使用UPDATE LOW_PRIORITY。

答案 3 :(得分:-2)

这需要使用然后你在服务器上有很大的负担。 而且你现在有些UPDATE或INSERT现在是高优先级,而且可以在加载时动作。

浓淡生成一些统计信息或项目的SQL。这是缓慢的,不需要立即执行。