事务的隔离级别(Transaction isolation levels)5
生活随笔
收集整理的這篇文章主要介紹了
事务的隔离级别(Transaction isolation levels)5
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
SERIALIZABLE隔離級別可以確保,如果一個查詢語句多次執行,不會有數據改變。換句話說,在一個事務里執行相同的查詢語句兩次,查詢出來的數據是一樣的,我們將不會看到phantoms。
舉個例子
-- Open two new connections -- Step 1: -- In the first connection, start a transaction USEIsolationDB ; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE ; BEGIN TRAN SELECT * FROM IsolationTest WHERE col1 BETWEEN 20 AND 40 ; --<EXECUTE>第一步,先查詢一下,事務是開著的狀態,即使查詢語句已經結束了。
-- Step 2: -- In the second connection, insert new data USE IsolationDB INSERT INTO IsolationTest VALUES (35, 'Another New Row' ) ; -- Notice that the INSERT will block --<EXECUTE>第二步,插入一條新記錄,發現這個insert是一直處于堵塞狀態,執行不了。
-- Step 3: -- Go back to the first connection and rerun the SELECT SELECT * FROM IsolationTest WHERE col1 BETWEEN 20 AND 40 ; --<EXECUTE> -- Notice no new rows第三步,再次執行那個查詢語句,返回的結果是一樣的。
為了阻止phantoms,是需要代價的。除了要鎖住所有的正在被讀取的數據外,還要執行SERIALIZABLE隔離級別。
轉載于:https://my.oschina.net/cfanyjr/blog/184367
總結
以上是生活随笔為你收集整理的事务的隔离级别(Transaction isolation levels)5的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 捕获Home键和ACTI
- 下一篇: 20140120收藏夹