
4.5 鎖升級
每個鎖在內存中都需要一定的內存空間,為了減少鎖需要的內存開銷,DB2提供了鎖升級的功能。鎖升級是通過對錶加上非意圖性的表鎖,同時釋放行鎖來減少鎖的數目,從而達到減少鎖需要的內存開銷的目的。鎖升級是由資料庫管理器自動完成的,有兩個資料庫的配置參數直接影響鎖升級的處理:
locklist–在一個資料庫全局內存中用於鎖存儲的內存。單位為頁(4K)。
maxlocks–一個應用程序允許得到的鎖佔用的內存所佔locklist大小的百分比。
鎖升級會在這兩種情況下被觸發:
·某個應用程序請求的鎖所佔用的內存空間超出了maxlocks與locklist的乘積大小。這時,資料庫管理器將試圖通過為提出鎖請求的應用程序申請表鎖,並釋放行鎖來節省空間。
·在一個資料庫中已被加上的全部鎖所佔的內存空間超出了locklist定義的大小。這時,資料庫管理器也將試圖通過為提出鎖請求的應用程序申請表鎖,並釋放行鎖來節省空間。
·鎖升級雖然會降低OLTP應用程序的並發性能,但是鎖升級後會釋放鎖佔有內存並增大可用的鎖的內存空間。
鎖升級是有可能會失敗的,比如,現在一個應用程序已經在一個表上加有IX鎖,表中的某些行上加有X鎖,另一個應用程序又來請求表上的IS鎖,以及很多行上的S鎖,由於申請的鎖數目過多引起鎖的升級。資料庫管理器試圖為該應用程序申請表上的S鎖來減少所需要的鎖的數目,但S鎖與表上原有的IX鎖衝突,鎖升級不能成功。
4.6 注意事項
DB2與oracle鎖的區別和比較
1.Oracle通過具有意向鎖的多粒度封鎖機制進行並發控制,保證數據的一致性。其DML鎖(數據鎖)分為兩個層次(粒度):即表級和行級。通常的DML操作在表級獲得的只是意向鎖(RS或RX),其真正的封鎖粒度還是在行級;DB2也是通過具有意向鎖的多粒度封鎖機制進行並發控制,保證數據的一致性。其DML鎖(數據鎖)分為兩個層次(粒度):即表級和行級。通常的DML操作在表級獲得的只是意向鎖(IS,SIX或IX),其真正的封鎖粒度也是在行級;另外,在Oracle資料庫中,單純地讀數據(SELECT)並不加鎖,這些都提高了系統的並發程度,Oracle強調的是能夠“讀“到數據,並且能夠快速的進行數據讀取。而DB2的鎖強調的是“讀一致性“,進行讀數據(SELECT)時會根據不同的隔離級別(RR,RS,CS)而分別加S,IS,IS鎖,只有在使用UR隔離級別時才不加鎖。從而保證不同應用程序和用戶讀取的數據是一致的。
2. 在支持高並發度的同時,DB2和Oracle對鎖的操縱機制有所不同:Oracle利用意向鎖及數據行上加鎖標誌位等設計技巧,減小了Oracle維護行級鎖的開銷,使其在資料庫並發控制方面有著一定的優勢。而DB2中對每個鎖會在鎖的內存(locklist)中申請分配一定位元組的內存空間,具體是X鎖64位元組內存,S鎖32位元組內存(註:DB2 V8之前是X鎖72位元組內存而S鎖36位元組內存)。
3. Oracle資料庫中不存在鎖升級,而DB2資料庫中當資料庫表中行級鎖的使用超過locklist*maxlocks會發生鎖升級。
4. 在Oracle中當一個session對錶進行insert,update,delete時候,另外一個session仍然可以從Orace回滾段或者還原表空間中讀取該表的前映象(before image); 而在DB2中當一個session對錶進行insert,update,delete時候,另外一個session仍然在讀取該表數據時候會處於lock wait狀態,除非使用UR隔離級別可以讀取第一個session的未提交的值;所以Oracle同一時刻不同的session有讀不一致的現象,而DB2在同一時刻所有的session都是“讀一致“的。
第5章 許可權管理
5.1 許可權級別架構
許可權級別按照
圖 2 所示的層次結構進行安排。在這個層次結構的頂部是 SYSADM 許可權級別,這是用戶在 DB2 UDB 中可以擁有的最高的許可權級別。具有 SYSADM 許可權的用戶可以執行所有可用的 DB2 操作。SYSCTRL 和 SYSMAINT 許可權級別提供了 SYSADM 許可權的子集,可以管理系統,但是不允許訪問表中的任何數據。SYSMON 許可權提供了使用資料庫系統監視器的能力。DBADM 許可權允許用戶在一個實例中的特定資料庫上執行管理任務,還允許完全訪問這個資料庫中的數據和對象。LOAD 許可權允許用戶運行 LOAD 實用程序,這是 DB2 UDB 的高速批量數據裝載器。
|
許可權級別 |
說明和用途 |
|
SYSADM |
DB2 UDB 中最高的管理許可權級別 具有 SYSADM 許可權的用戶可以運行實用程序,發出資料庫和資料庫管理器命令,以及訪問這個資料庫管理器實例中任何資料庫中任何錶中的數據 提供控制這個實例中所有資料庫對象的能力,包括資料庫、表、視圖、索引、包、模式、伺服器、別名、數據類型、函數、過程、觸發器、表空間、資料庫分區組、緩衝池和事件監視器 供需要對實用程序和數據的完全訪問權的 DB2 UDB 管理員使用 |
|
SYSCTRL |
最高的系統控制許可權級別 提供對資料庫管理器實例和它的資料庫執行維護和實用操作的能力 不允許直接訪問資料庫中的數據 具有連接資料庫的隱式特權,並可以執行具有 SYSMAINT 和 SYSMON 許可權的用戶能夠執行的功能 供管理一個包含敏感數據的資料庫管理器實例的用戶使用 |
|
SYSMAINT |
次高的系統控制許可權級別 提供對資料庫管理器實例和它的資料庫執行維護和實用操作的能力 不允許直接訪問資料庫中的數據 具有連接資料庫的隱式特權,並可以執行具有 SYSMON 許可權的用戶能夠執行的功能 供維護一個包含敏感數據的資料庫管理器實例中的資料庫的用戶使用 |
|
SYSMON |
提供獲得資料庫管理器實例及其資料庫的快照的能力 供維護一個包含敏感數據的資料庫管理器實例中的資料庫,但是只需要診斷數據來進行問題判斷的用戶使用 不允許改變系統資源的使用 |
|
DBADM |
對於一個實例中的一個特定資料庫 允許用戶運行某些實用程序、發出資料庫命令以及訪問資料庫中任何錶中的數據 供需要完全訪問資料庫對象和數據,但是不需要完整的維護許可權的管理員使用 |
|
LOAD |
允許用戶調用 LOAD 實用程序 根據 LOAD 操作的模式,用戶還需要被裝載的表上的 INSERT 和 DELETE 特權 供只想批量裝載一組新數據的用戶使用 |
表 2. 每個許可權級別允許的操作的比較
|
功能 |
SYSADM |
SYSCTRL |
SYSMAINT |
SYSMON |
DBADM |
LOAD |
|
MIGRATE DATABASE |
YES |
NO |
NO |
NO |
NO |
NO |
|
GRANT/REVOKE DBADM |
YES |
NO |
NO |
NO |
NO |
NO |
|
UPDATE DBM CFG |
YES |
NO |
NO |
NO |
NO |
NO |
|
ESTABLISH/CHANGE SYSCTRL/SYSMAINT AUTHORITY |
YES |
NO |
NO |
NO |
NO |
NO |
|
UPDATE DB/NODE/DCS DIRECTORIES |
YES |
YES |
NO |
NO |
NO |
NO |
|
FORCE USERS OFF DATABASE |
YES |
YES |
NO |
NO |
NO |
NO |
|
CREATE/DROP DATABASE |
YES |
YES |
NO |
NO |
NO |
NO |
|
CREATE/DROP/ALTER TABLE SPACE |
YES |
YES |
NO |
NO |
NO |
NO |
|
RESTORE TO NEW DATABASE |
YES |
YES |
NO |
NO |
NO |
NO |
|
UPDATE DB CFG |
YES |
YES |
YES |
NO |
NO |
NO |
|
BACKUP DATABASE OR TABLE SPACE |
YES |
YES |
YES |
NO |
NO |
NO |
|
RESTORE TO EXISTING DATABASE |
YES |
YES |
YES |
NO |
NO |
NO |
|
PERFORM ROLLFORWARD RECOVERY |
YES |
YES |
YES |
NO |
NO |
NO |
|
START/STOP DATABASE INSTANCE |
YES |
YES |
YES |
NO |
NO |
NO |
|
RESTORE TABLE SPACE |
YES |
YES |
YES |
NO |
NO |
NO |
|
RUN TRACE |
YES |
YES |
YES |
NO |
NO |
NO |
|
OBTAIN MONITOR SNAPSHOTS |
YES |
YES |
YES |
YES |
NO |
NO |
|
CREATE/ACTIVATE/DROP EVENT MONITOR |
YES |
NO |
NO |
NO |
YES |
NO |
|
QUERY TABLE SPACE STATE |
YES |
YES |
YES |
NO |
YES |
YES |
|
PRUNE LOG HISTORY FILES |
YES |
YES |
YES |
NO |
YES |
NO |
|
QUIESCE INSTANCES |
YES |
YES |
NO |
NO |
NO |
NO |
|
QUIESCE DATABASES |
YES |
NO |
NO |
NO |
YES |
NO |
|
QUIESCE TABLE SPACE |
YES |
YES |
YES |
NO |
YES |
YES |
|
REORG TABLE |
YES |
YES |
YES |
NO |
YES |
NO |
|
RUN RUNSTATS UTILITY |
YES |
YES |
YES |
NO |
YES |
YES |
以下文章點擊率最高
Loading…
