[英]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.