• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • SYBASE事務

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    事務 本篇文章描述了 數據庫 事務隔離級對鎖的影響,通過對比事務隔離級0和1,理解鎖與臟讀的關系。 實驗內容:分別設置0和1級隔離級,執行兩個不同但又有相關的事務。本實驗環境如下: 1、有權訪問用戶數據庫(在此是aca_database)和對數據庫表有修改和查

    事務

      本篇文章描述了數據庫事務隔離級對鎖的影響,通過對比事務隔離級0和1,理解鎖與臟讀的關系。

    實驗內容:分別設置0和1級隔離級,執行兩個不同但又有相關的事務。本實驗環境如下:

    1、  有權訪問用戶數據庫(在此是aca_database)和對數據庫表有修改和查詢權限。

    2、  數據庫中有表auths,包含salary列(數據類型是money),有一定數據量(在此有1萬行)。

    步驟:

    1、 如在同一臺機器,可分別執行兩次“SQL Advantage”,分別用合法帳號登錄,準備各自執行一個事務。

    2、 在各自界面打開用戶數據庫aca_database,設置隔離級為1(此亦為缺省值):

    set transaction isolation level 1,查看當前隔離級別用select @@isolation

    3、 執行第一個事務的前兩句,暫不執行后面的提交或回滾。

    begin transaction

    update auths set salary=salary+100

    commit transaction

    (rollback transaction)

    4、 執行第二個事務 select sum(salary) from auths

    5、  第一個事務正常執行結束,但只在內存緩沖區完成修改,事務并沒有真正結束,相應也不釋放鎖,第二個事務處于等待狀態??蓤绦衧p_lock和sp_who命令查看。

    6、  執行第3步中的提交或回滾命令,第二個事務得到執行。

    7、  改變事務隔離級為0,重復執行3-4步。第一個事務沒有任何變化,第二個事務很快出來根據第一個事務修改數據而成的結果,似乎在執行響應上并不受第一個事務的影響。

    8、  重復第6步結束。

    通過上面的實驗我們知道:

    1、        隔離級0時事務允許臟讀,隔離級1時事務不允許臟讀,而只是等待前一個修改事務真正結束并釋放鎖。

    2、        隔離級為0時,如果在修改事務的最后是回滾操作,則查詢讀事務將不能讀到正確的數據。

    3、        在確信事務中沒有回滾操作的可能,并要求更高的執行效率和并行性,只有這時可考慮設置隔離級為0。

      
      

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>