2011-05-22 64 views
4

当使用MySQL的INSERT DELAYED语句时,有没有办法在继续之前强制执行所有插入?或者查找插入是否完成?MySQL INSERT DELAYED - 如何确定何时插入完成

+1

如果你要对行继续之前插入,你为什么要使用延迟的条款? – 2011-05-22 19:28:58

+0

@Lasse,如果'insert-delayed'和需要测试的下一个动作之间存在明显的时间间隔,这可能仍然有意义。 – Johan 2011-05-22 19:51:51

+0

** DELAYED插入和替换已在MySQL 5.6 **中弃用。 **在MySQL 5.7中,不支持DELAYED **。服务器识别但忽略DELAYED关键字,将插入处理为非延迟插入,并生成ER_WARN_LEGACY_SYNTAX_CONVERTED警告(“不再支持INSERT DELAYED。语句已转换为INSERT”)。 DELAYED关键字计划在未来版本中删除。资料来源:https://dev.mysql.com/doc/refman/5.7/en/insert-delayed.html – simhumileco 2017-08-31 14:30:32

回答

5

你可以做一个

SHOW STATUS LIKE 'Not_flushed_delayed_rows' 

为更多信息

SHOW STATUS LIKE '%delay%' 

注意INSERT DELAYED有你需要知道的请阅读下面的第一个链接,更多的一些问题找出来信息。

FLUSH TABLES 

将强制立即插入延迟的行。

请参见:http://dev.mysql.com/doc/refman/5.5/en/insert-delayed.html
和:http://dev.mysql.com/doc/refman/5.5/en/show-status.html

+0

从MySQL 5.6.6开始,INSERT DELAYED已被弃用,并将在未来版本中删除。改为使用INSERT(不带DELAYED)。 – zloctb 2015-06-12 08:05:29

1

那么,如果你需要知道他们什么时候完成,为什么要标记他们DELAYED?

此外,使用这些可能是危险的,例如,因为

待定INSERT DELAYED如果表被写锁定,并 ALTER TABLE被用来修改 表结构语句 丢失。

要强制执行所有DELAYED语句,请致电FLUSH TABLES

Manual link

+0

>那么,如果你需要知道它们何时完成,为什么要将它们标记为DELAYED? - 我知道这似乎不合逻辑,请耐心等待... – jms 2011-05-22 19:32:52

+0

@jms,不用担心评论,'INSERT DELAY'只适用于不支持事务的引擎(MyISAM等),所以你的数据不是无论如何确保不一致。如果你有重要的数据使用像InnoDB这样的交易支持引擎。 – Johan 2011-05-22 19:38:10

相关问题