DB2資料庫與Oracle併發控制 鎖 的大比拼。

2022-03-21 03:12:35 字數 1796 閱讀 5072

以下的文章主要向大家描述的是db2資料庫和oracle的併發控制(鎖)的比較,以下就是對db2資料庫和oracle的併發控制(鎖)的比較的描述,望會對你有所幫助,以下就是文章的主要內容講述。

1 引言

在關聯式資料庫(db2,oracle,sybase,informix和sql server)最小的恢復和交易單位為乙個事務(transactions),事務具有acid(原子性,一致性,隔離性和永久性)特徵。關聯式資料庫為了確保併發使用者在訪問同一資料庫物件時的正確性(即無丟失更新、可重複讀、不讀"髒"資料,無"幻像"讀),db2資料庫中引入了併發(鎖)機制。基本的鎖型別有兩種:排它鎖(exclusive locks記為x鎖)和共享鎖(share locks記為s鎖)。

排它鎖:若事務t對資料d加x鎖,則其它任何事務都不能再對d加任何型別的鎖,直至t釋放d上的x鎖;一般要求在修改資料前要向該資料加排它鎖,所以排它鎖又稱為寫鎖。

共享鎖:若事務t對資料d加s鎖,則其它事務只能對d加s鎖,而不能加x鎖,直至t釋放d上的s鎖;一般要求在讀取資料前要向該資料加共享鎖,所以共享鎖又稱為讀鎖。

2 db2 多粒度封鎖機制介紹

2.1 鎖的物件

db2支援對錶空間、表、行和索引加鎖(大型機上的db2資料庫還可以支援對資料頁加鎖)來保證資料庫的併發完整性。不過在考慮使用者應用程式的併發性的問題上,通常並不檢查用於表空間和索引的鎖。該類問題分析的焦點在於表鎖和行鎖。

2.2 鎖的策略

db2可以只對錶進行加鎖,也可以對錶和表中的行進行加鎖。如果只對錶進行加鎖,則表中所有的行都受到同等程度的影響。如果加鎖的範圍針對於表及下屬的行,則在對錶加鎖後,相應的資料行上還要加鎖。究竟應用程式是對錶加行鎖還是同時加表鎖和行鎖,是由應用程式執行的命令和系統的隔離級別確定。

2.2.1 db2表鎖的模式

db2在表一級加鎖可以使用以下加鎖方式:

表一:db2資料庫表鎖的模式

下面對幾種表鎖的模式進一步加以闡述:

is、ix、six方式用於表一級並需要行鎖配合,他們可以阻止其他應用程式對該錶加上排它鎖。

如果乙個應用程式獲得某錶的is鎖,該應用程式可獲得某一行上的s鎖,用於唯讀操作,同時其他應用程式也可以讀取該行,或是對錶中的其他行進行更改。

如果乙個應用程式獲得某錶的ix鎖,該應用程式可獲得某一行上的x鎖,用於更改操作,同時其他應用程式可以讀取或更改表中的其他行。

如果乙個應用程式獲得某錶的six鎖,該應用程式可以獲得某一行上的x鎖,用於更改操作,同時其他應用程式只能對錶中其他行進行唯讀操作。

s、u、x和z方式用於表一級,但並不需要行鎖配合,是比較嚴格的表加鎖策略。

如果乙個應用程式得到某錶的s鎖。該應用程式可以讀表中的任何資料。同時它允許其他應用程式獲得該錶上的唯讀請求鎖。如果有應用程式需要更改讀該表上的資料,必須等s鎖被釋放。

如果乙個應用程式得到某錶的u鎖,該應用程式可以讀表中的任何資料,並最終可以通過獲得表上的x鎖來得到對錶中任何資料的修改權。其他應用程式只能讀取該表中的資料。u鎖與s鎖的區別主要在於更改的意圖上。u鎖的設計主要是為了避免兩個應用程式在擁有s鎖的情況下同時申請x鎖而造成死鎖的。

如果乙個應用程式得到某錶上的x鎖,該應用程式可以讀或修改表中的任何資料。其他應用程式不能對該錶進行讀或者更改操作。

如果乙個應用程式得到某錶上的z鎖,該應用程式可以讀或修改表中的任何資料。其他應用程式,包括未提交讀程式都不能對該錶進行讀或者更改操作。

in鎖用於表上以允許未提交讀這一概念。

2.2.2 db2行鎖的模式

db2與mysql編目 DB2 資料庫編目

方法一 命令執行方法 db2 catalog tcpip node node name remote server ip server server port l node name 所要編目的節點名,任意起。節點名在一台機器上必須是唯一的,不能跟已有的節點名重複。可通過db2 list node ...

建立 DB2 資料庫

可以使用 tivoli privacy manager 資料庫建立程式或使用資料庫產品介面可以建立 tivoli privacy manager 資料庫 表和配置資料庫。使用 db2 資料庫建立程式 使用 tivoli privacy manager 資料庫建立程式來建立 tivoli privac...

DB2 資料庫物件

資料庫物件 sql可分為三大類 1 ddl,資料定義語言,用於建立 修改 刪除資料庫物件 2 dml,資料操縱語言,用於選擇 插入 更新和刪除資料庫記錄 3 dcl,資料控制語言,用於提供資料物件訪問控制 資料型別 1 內建資料型別 2 用於自定義資料型別 a 自定義區分型別,udt允許在已有的內建...