
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…
