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…