我正在浏览一些代码并注意到它UPDATE LOW_PRIORITY
并INSERT DELAYED INTO
用于更新数据库.这些陈述的用途是什么?我应该在同一数据库中的各种表的每个insert和update语句中使用它们吗?
使用LOW_PRIORITY关键字,UPDATE的执行将延迟,直到没有其他客户端从表中读取.通常,读取客户端将被保留,直到更新查询完成.如果要使读取客户端优先于更新查询,则应使用LOW_PRIORITY.
该延迟 INSERT语句的选择是一个MySQL扩展到标准SQL,如果您的客户端不能或不必等待INSERT完成,这是非常有用的.这是一个常见的情况,当你使用MySQL进行日志记录,你也周期性地运行需要较长时间才能完成SELECT和UPDATE语句.
LOW_PRIORITY
,HIGH_PRIORITY
并且DELAYED
仅在少数环境中有用.如果你没有大负荷他们无法帮助你.如果你有,不要做任何你不完全理解的事情.
所有这些otpions只适用于MyISAM,而不是InnoDB,而不是视图.
DELAYED
不适用于分区表,它显然是为数据仓库设计的.客户端发送插入,然后忘记它,而不等待结果.因此,您将不知道插入是否成功,是否存在重复值等.当其他线程可以SELECT
从该表中时,它永远不会被使用,因为延迟的插入永远不会并发.
LOW_PRIORITY
等到没有客户端访问该表.但是如果你有高流量,你可能要等到连接超时...这不是你想要的,我想:)
另请注意,DELAYED
将在Oracle MySQL 5.7中删除(但不会在MariaDB中删除).