回覆列表
  • 1 # 使用者4254583855753

    在 SQL ANSI標準中,read/write, write/read是相互block,是為了保持資料的一致性。因此所有的資料庫廠商都使用鎖來保證資料的一致性但是具體而言, oracle沒有實現read阻塞write, 而是使用MVCC的技術解決了write/read相互阻塞的問題,導致的結果是oracle中block發生的頻率遠少於sqlserversql server 2000 及以前的版本中,完全實現了read 和write的相互block, 所以sql server中會產生大量的blocking問題。在sql 2005及以後的版本,微軟聽從開放人員的建議,利用MVCC技術也實現了read和write互不block,但是這不是預設開啟的,需要對資料庫做一些設定,而我的觀察是很多的公司任然沒有開啟MVCC。所以通常我們把沒有開啟MVCC特性的,使用原來的鎖機制來保證資料一致性的這種鎖叫悲觀鎖,而對開啟MVCC機制的鎖,叫做樂觀鎖。

  • 2 # 滴逃逃

    資料庫必須有鎖的機制來確保資料的完整和一致性

    鎖的型別:

    (1) 共享鎖:

    共享鎖用於所有的只讀資料操作.

    (2) 修改鎖:

    修改鎖在修改操作的初始化階段用來鎖定可能要被修改的資源,這樣可以避免使用共享鎖造成的死鎖現象

    (3) 獨佔鎖:

    獨佔鎖是為修改資料而保留的。它所鎖定的資源,其他事務不能讀取也不能修改。獨佔鎖不能和其他鎖相容。

    (4) 架構鎖

    結構鎖分為結構修改鎖(Sch-M)和結構穩定鎖(Sch-S)。執行表定義語言操作時,SQL Server採用Sch-M鎖,編譯查詢時,SQL Server採用Sch-S鎖。

    (5) 意向鎖

    意向鎖說明SQL Server有在資源的低層獲得共享鎖或獨佔鎖的意向。

    (6) 批次修改鎖

    批次複製資料時使用批次修改鎖

  • 中秋節和大豐收的關聯?
  • 非營養學專業,可以自學考取營養師證嗎?