This Domain(Admin5.com) is for Sale:

DB2优化(简易版)

时间:2007-12-23  来源:不详  作者:迈克DB

最佳性能不仅需要排除高成本SQL语句,而且需要确保相应的物理基础结构是适当的。当所有的调节旋钮都设置得恰到好处、内存被有效地分配到池和堆而且I/O均匀地分配到各个磁盘时,才可得到最佳性能。
不可遗漏的—Lock
这些与锁相关的控制都是数据库配置参数:
LOCKLIST表明分配给锁列表的存储容量。每个数据库都有一个锁列表,锁列表包含了并发连接到该数据库的所有应用程序所持有的锁。锁定是数据库治理器用来控制多个应用程序并发访问数据库中数据的机制。行和表都可以被锁定。根据对象是否还持有其它锁,每把锁需要32个或64个字节的锁列表:
需要64个字节来持有某个对象上的锁,在这个对象上,没有持有其它锁。
需要32个字节来记录某个对象上的锁,在这个对象上,已经持有一个锁。
MAXLOCKS定义了应用程序持有的锁列表的百分比,在数据库治理器执行锁升级之前必须填充该锁列表。当一个应用程序所使用的锁列表百分比达到MAXLOCKS时,数据库治理器会升级这些锁,这意味着用表锁代替行锁,从而减少列表中锁的数量。当任何一个应用程序所持有的锁数量达到整个锁列表大小的这个百分比时,对该应用程序所持有的锁进行锁升级。假如锁列表用完了空间,那么也会发生锁升级。数据库治理器通过查看应用程序的锁列表并查找行锁最多的表,来决定对哪些锁进行升级。假如用一个表锁替换这些行锁,将不再会超出MAXLOCKS值,那么锁升级就会停止。否则,锁升级就会一直进行,直到所持有的锁列表百分比低于MAXLOCKS。MAXLOCKS参数乘以MAXAPPLS参数不能小于100。
内容来自dedecms

虽然升级过程本身并不用花很多时间,但是锁定整个表(相对于锁定个别行)降低了并发性,而且数据库的整体性能可能会由于对受锁升级影响的表的后续访问而降低。
LOCKTIMEOUT的缺省值是-1,这意味着将没有锁超时(对OLTP应用程序,这种情况可能会是灾难性的)。许多DB2用户用LOCKTIMEOUT=-1。将LOCKTIMEOUT设置为很短的时间值,例如10或15秒。在锁上等待过长时间会在锁上产生雪崩效应。
首先,用以下命令检查LOCKTIMEOUT的值:
db2"getdbcfgforDBNAME"
并查找包含以下文本的行:
Locktimeout(sec)(LOCKTIMEOUT)=-1
假如值是-1,考虑使用以下命令将它更改为15秒(一定要首先询问应用程序开发者或供给商以确保应用程序能够处理锁超时):
db2"updatedbcfgforDBNAMEusingLOCKTIMEOUT15"
同时应该监视锁等待的数量、锁等待时间和正在使用锁列表内存(locklistmemory)的量。请发出以下命令:
db2"getsnapshotfordatabaseonDBNAME"
假如Locklistmemoryinuse(Bytes)超过所定义LOCKLIST大小的50%,那么在LOCKLIST数据库配置中增加4k页的数量。

织梦内容管理系统

看完这篇,您有何感觉呢?

上一篇:Oracle库的Hang   下一篇:IBM DB2 基本性能调整

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息