簡體   English   中英

mysql插入是否總是連續的?

[英]Are mysql inserts are always consecutive?

insert into tbl(name)values('john'),('bale'),('ron')

如果一個人運行此查詢,而另一個人在世界的不同地方運行

insert into tbl(name)values('johnny'),('baleton'),('ronny')

這是在上一次查詢之后但在服務器上完成之前的幾秒鍾 Wil插入的值是連續的嗎? 像這樣

'john','bale','ron','johnny','baleton','ronny'

或者它可能不是tbl具有id|name作為列。

我相信MySQL中的每個查詢都發生在單個事務中(如果啟用了自動提交)。 如果您自己管理您的交易,那么情況就更加明顯了。 我相信由於這個原因,記錄將按順序插入。

編輯:

我認為這完全是關於autoincrement否則問題沒有意義,正如原始問題中的評論所解釋的那樣。

我糾正了。 文件指出

When accessing the auto-increment counter, InnoDB uses a special table-level AUTO-INC lock that it keeps to the end of the current SQL statement, not to the end of the transaction.

所以是的,仍然有序。 不適用於事務范圍而是單個SQL語句。

MySQL(至少使用InnoDB引擎)將下一個Auto Increment值(ai_max + ai_increment)分配給讀取INSERT表的第一個語句(非事務)。 因此,如果另一個語句出現,嘗試INSERT,並在第一個語句之前完成,它將獲得NEXT AI值(ai_max + 2 * ai_increment),而不是分配給第一個語句的值。

這與數據庫得到的“按順序”相同。

有關MySQL InnoDB自動增量的更多信息,請參閱MySQL開發人員的參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM