一個系統項目做大了,就會遇到性能問題.數據庫的優化將是解決性能問題的關鍵之一.
爲什麼數據庫讀取慢,事務級別正是此問題的關鍵之一.
也就是說,一些非重要的查詢可以使用低級事務進行查詢,就不會受到其它事務的阻塞等待.
1.Read Uncommitted 指定語句可以讀取已由其他事務修改但尚未提交的行.最低等級的事務隔離,僅僅保證了讀取過程中不會讀取到非法數據.
conn.BeginTransaction(IsolationLevel.ReadUncommitted)
命令:
SET TRANSACTION ISOLATION LEVEL Read Uncommitted
2.Read Committed:大多數主流數據庫的默認事務等級,保證了一個事務不會讀到另一個並行事務已修改但未提交的數據,避免了“髒讀取”
conn.BeginTransaction(IsolationLevel.ReadCommitted)
SET TRANSACTION ISOLATION LEVEL Read Committed
3. Repeatable Read:保證了一個事務不會修改已經由另一個事務讀取但未提交(回滾)的數據。避免了“髒讀取”和“不可重複讀取”的情況,但是帶來了更多的性能損失
conn.BeginTransaction(IsolationLevel.RepeatableRead)
SET TRANSACTION ISOLATION LEVEL Repeatable Read
4.Serializable:最高等級的事務隔離,上面3種不確定情況都將被規避。這個級別將模擬事務的串行執行。
conn.BeginTransaction(IsolationLevel.Serializable)
SET TRANSACTION ISOLATION LEVEL Serializable