INSERT DELAYED 语法
DELAYED选项是标准的MYSQL扩展。
如果你不需要等待INSERT语句的完成,就立刻返回,那么 INSERT DELAYED非常适合。
通常情况下:使用MYSQL记录日志,但是在这个过程中又有SELECT或者UPDATE语句花费非常长的时间。
当使用INSERT DELAYED的时候,客户端会立刻收到ok的反馈,被插入的行会进行排队,然后的等待table没有别的进程使用的时候,再将行写入table中。
另外一个使用INSERT DELAYED的好处是,从不同客户端的延迟插入的行,会绑定在一起,作为一个block,写入表中。这比起分开的客户端别分插入table要快的多。
注意:当table没有别的进程在使用的时候,INSERT DELAYED要比普通的 INSERT慢得多,原因是:服务器需要一些额外的负载来处理被延迟写入的行。举个例子:服务器需要一个独立的线程来维护每个表。
队列中的行数据是放在内存中的,也就意味着,如果是强制关闭进程(KILL -9),那么队列中的数据就会丢失。
使用INSERT DELAYED有以下几个约束:
INSERT DELAYED只适用于MYISAM,MEMORY表,ARCHIVE表,BLACKHOLE表。
如果INSERT DELAYED的表被LOCK TABLE那么,会发生错误。