innodb 中文參考手冊 --- 犬犬(心帆)翻譯 8 innodb 事務模式與鎖定 在 innodb 事務處理模式中, the goal has been to combine the best properties of a multiversioning database to traditional two-phase locking. innodb 進行行級的鎖定,并以與 oracle 非鎖定讀取(non-locking)類似的方式讀取數據。 innodb 中的鎖定表的存儲是如此(space-efficiently)而不再需要擴大鎖定: 典型特色是一些用戶可能鎖定數據庫中的任意行或任意行的子集,而不會引起 innodb 內存運行溢出。
在 innodb 中,所有的用戶操作均是以事務方式處理的。如果 mysql 使用了自動提交(autocommit)方式,每個 sql 語句將以一個單獨的事務來處理。mysql 通常是以自動提交方式建立一個服務連接的。
select * from t; empty set; commit; select * from t; --------------------- | 1 | 2 | --------------------- 因而,只有當用戶 b 提交了他的插入,并且用戶 a 也提交了他的事務從而使時間點越過 b 提交時的時間點之后,用戶 a 才能看到用戶 b 所插入的新行。 如果你希望查看數據庫“最新的(freshest)”狀態,你必須使用 read committed 事務隔離級,或者你可以使用讀鎖: select * from t lock in share mode;