2010-02-05 17 views
3

無論MySQL數據庫發生了哪些更改,這些更改是否可在同一事務中讀取?或者我應該提交交易以閱讀更改?從事務中讀取更改

我可以很容易地測試這個。但是在SO中提出一個問題會帶來很多好的建議。感謝您的任何意見。

回答

3

假設你使用InnoDB,你的第一個問題的答案通常是肯定的,暗示你的第二個答案通常是否定的。

默認情況下,MySQL的InnoDB使用一種稱爲consistent non-locking reads技術:

查詢看到了由 交易是 之前所犯的時間點所做的更改,並沒有改變 後來的或未提交 事務做的。此 規則的例外是該查詢看到 由同一事務中的早期語句 所做的更改。

這就是說,有很多東西要了解交易。您可以更改isolation level of a transaction以更徹底地控制交易結果。

關於InnoDB Transaction Model的章節是一個很好的開始。

+0

謝謝!有關由語句設置的鎖的鏈接非常有用。 – Nirmal 2010-02-05 06:53:40