<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    lqxue

    常用鏈接

    統計

    book

    tools

    最新評論

    數據庫事務和鎖

    簡述

        關系型數據庫有四個顯著的特征,即安全性、完整性、并發性和監測性。數據庫的安全性就是要保證數據庫中數據的安全,防止未授權用戶隨意修改數據庫中的數 據,確保數據的安全。在大多數數據庫管理系統中,主要是通過許可來保證數據庫的安全性。完整性是數據庫的一個重要特征,也是保證數據庫中的數據切實有效、 防止錯誤、實現商業規則的一種重要機制。在數據庫中,區別所保存的數據是無用的垃圾還是有價值的信息,主要是依據數據庫的完整性是否健全。在SQL Server 7.0中,數據的完整性是通過一系列邏輯來保障的,這些邏輯分為三個方面,即實體完整性、域完整性和參考完整性。對任何系統都可以這樣說,沒有監測,就沒 有優化。這句話用在數據庫管理系統方面,也是切合實際的。只有通過對數據庫進行全面的性能監測,也才能發現影響系統性能的因素和瓶頸,才能針對瓶頸因素, 采取切合實際策略,解決問題,提高系統的性能。并發性也是一個非常重要的概念,它是用來解決多個用戶對同一數據進行操作時的問題。特別是對于網絡數據庫來 說,這個特點更加突出。提高數據庫的處理速度,單單依靠提高計算機的物理速度是不夠的,還必須充分考慮數據庫的并發性問題,提高數據庫并發性的效率。那么 如何保證并發性呢?在這個面向下一世紀的數據庫產品SQL Server 7.0中,通過使用事務和鎖機制,解決了數據庫的并發性問題。

    事 務和鎖是兩個緊密聯系的概念事務就是一個單元的工作,包括一系列的操作這些操作要么全部成功,要么全部失敗。事務確保多個數據的修改作為一個單元來處 理。例如,在銀行業務中,有一條記帳原則,即有借有貸,借貸相等。那么為了保證這種原則,就得有確保借和貸的登記要么同時成功,要么同時失敗。如果出現只 記錄了借,或者只記錄了貸,那么就違反了記帳原則,就會出現記錯帳的情況。SQL Server通過支持事務機制管理多個事務,保證事務的一致性。事務使用鎖,防止其他用戶修改另外一個還沒有完成的事務中的數據。對于多用戶系統來說,鎖 機制是必須的。在SQL Server 7.0中,使用事務日志來保證修改的完整性和可恢復性。

        SQL Server有多種鎖,允許事務鎖定不同的資源。鎖就是保護指定的資源,不被其他事務操作。為了最小化鎖的成本,SQL Server自動地以與任務相應等級的鎖來鎖定資源對象。鎖定比較小的對象,例如鎖定行,雖然可以提高并發性,但是卻有較高的開支,因為如果鎖定許多行, 那么需要占有更多的鎖。鎖定比較大的對象,例如鎖定表,會大大降低并發性,因為鎖定整個表就限制了其他事務訪問該表的其他部分,但是成本開支比較低,因為 只需維護比較少的鎖。

        事務和鎖具有以下特點:

    • 事務是一個單元的工作,要么全做,要么全不做
    • 事務保證操作的一致性和可恢復性
    • 每一條Transact-SQL語句都可以是一個事務
    • 實際使用的事務是用戶定義的事務,它包括一系列操作或者語句
    • 在多服務器環境中,使用用戶定義的分布式事務,保證操作的一致性
    • 鎖是保證并發控制的手段
    • 可以鎖定的資源包括行、頁、簇、表和數據庫
    • 鎖的類型主要包括共享鎖和排它鎖
    • 特殊類型的鎖包括意圖鎖、修改鎖和模式鎖
    • 共享鎖允許其他事務繼續使用鎖定的資源
    • 排它鎖只允許一個事務訪問數據
    • 系統本身可以處理死鎖
    • 用戶可以根據實際情況定制鎖的一些特征

    事務

    事務的定義

        事務是指一個單元的工作,這些工作要么全做,要么全部不做。作為一個邏輯單元,必須具備四個屬性:原子性、一致性、獨立性和持久性。原子性是指事務必須是 一個自動的單元工作,要么執行全部數據的修改,要么全部數據的修改都不執行。一致性是指當事務完成時,必須使所有數據都具有一致的狀態。在關系型數據庫 中,所有的規則必須應用到事務的修改上,以便維護所有數據的完整性。所有的內部數據結構,例如樹狀的索引與數據之間的鏈接,在事務結束之后,必須保證正 確。獨立性是指并行事務的修改必須與其他并行事務的修改相互獨立。一個事務看到的數據要么是另外一個事務修改這些事務之前的狀態,要么是第二個事務已經修 改完成的數據,但是這個事務不能看到正在修改的數據。這種特征也稱為串行性。持久性是指當一個事務完成之后,它的影響永久性的產生在系統中,也就是這種修 改寫到了數據庫中。

        事務機制保證一組數據的修改要么全部執行,要么全部不執行。SQL Server使用事務保證數據的一致性和確保在系統失敗時的可恢復性。事務是一個可以恢復的單元的工作,由一條或者多條Transact-SQL語句組 成,可以影響到表中的一行或者多行數據。事務打開以后,直到事務成功完成之后提交為止,或者到事務執行失敗全部取消或者滾回去為止。



    悲觀鎖定 假定任何時刻存取數據時,都可能有另一個客戶也正在存取同一筆數據,因而對數據采取了數據庫層次的鎖定狀態,在鎖定的時間內其它的客戶不能對資 料進行存取,對于單機或小系統而言,這并不成問題,然而如果是在網絡上的系統,同時間會有許多聯機,如果每一次讀取數據都造成鎖定,其后繼的存取就必須等 待,這將造成效能上的問題,造成后繼使用者的長時間等待。
    樂觀鎖定(optimistic locking)則樂觀的認為資料的存取很少發生同時存取的問題,因而不作數據庫層次上的鎖定,為了維護正確的數據,樂觀鎖定使用應用程序上的邏輯實現版本控制的解決。
    例如若有兩個客戶端,A客戶先讀取了賬戶余額1000元,之后B客戶也讀取了賬戶余額1000元的數據,A客戶提取了500元,對數據庫作了變更,此時 數據庫中的余額為500元,B客戶也要提取300元,根據其所取得的資料,1000-300將為700余額,若此時再對數據庫進行變更,最后的余額就會不 正確。
    在不實行悲觀鎖定策略的情況下,數據不一致的情況一但發生,有幾個解決的方法,一種是先更新為主,一種是后更新的為主,比較復雜的就是檢查發生變動的數據來實現,或是檢查所有屬性來實現樂觀鎖定。

     

    posted on 2007-04-06 16:57 lqx 閱讀(392) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 免费无码又爽又黄又刺激网站| 亚洲伦理一二三四| 一区二区免费在线观看| 免费国产在线观看| 男女交性无遮挡免费视频| 亚洲国产激情一区二区三区| 国产区图片区小说区亚洲区| 亚洲成人国产精品| 国产精品永久免费| 亚洲成AV人片在线观看WWW| 久草免费福利资源站| 亚洲精品视频在线播放| 999久久久免费精品国产 | 日韩免费精品视频| 波多野结衣亚洲一级| 卡一卡二卡三在线入口免费| 偷自拍亚洲视频在线观看99| 亚洲AⅤ视频一区二区三区| a毛片成人免费全部播放| 亚洲处破女AV日韩精品| 蜜桃AV无码免费看永久| 亚洲国产精品一区二区三区在线观看 | 日本免费一区二区三区四区五六区| 亚洲国产婷婷六月丁香| 最近中文字幕mv免费高清视频8| 亚洲码在线中文在线观看| 成年人性生活免费视频| 黄色三级三级免费看| 精品国产综合成人亚洲区| 日韩在线播放全免费| 蜜桃传媒一区二区亚洲AV| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 亚洲色大成网站www永久网站 | 亚洲人成精品久久久久| 69式国产真人免费视频| 美女隐私免费视频看| 亚洲黄色一级毛片| 无码不卡亚洲成?人片| 99久久精品免费精品国产| 亚洲精品一卡2卡3卡四卡乱码| 国产亚洲成人久久|