詳見:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt382
Oracle默認情況下(沒有事務) 保證了SQL語句級別的讀一致性,即在一條SQL語句執行期間,它只會看到執行前點的數據狀態,而不會看到執行期間數據被其他SQL改變的狀態。
所以如果執行多條SQL的時候呢?比如你做一個報表查詢,在執行完第一條sql的時候,執行第二條查詢SQL,而這個之間有數據被改變了,第二條數據查詢就有可能不一致
而Oracle的只讀查詢則保證了事務級別的讀一致性,即在該事務范圍內執行的多條SQL都只會看到執行前點的數據狀態,而不會看到事務期間的任何被其他 SQL改變的狀態。
沒有事務的時候,在執行一條sql語句看到執行前點的數據狀態,保證數據一致性
只讀事務,在執行多條sql語句看到執行前點的數據狀態,保證數據一致性