2011-05-22 66 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

相關問題