- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
关于DB2数据库的参数调优技巧
1、在Unix系统里,输入:
su - ldapdb2
2、在Windows系统里,输入:
db2cmd
set DB2INSTANCE=ldapdb2
为了调节DB2参数,运行db2-tunings.sh脚本,你可以在这里下载:
或者通过ftp地址:
ftp://ftp.software.ibm.com/software/tivoli_support/misc/Security/AMeB/am5.1/tuning_guide_scripts.tar
Web页面需要注册用户名和密码。
这个脚本的文件系统拥有者必须是DB2实例拥有者,一般就是ldapdb2用户。文件系统组应该和实例拥有者相同(一般是dbsysadm)。脚本必须在DB2实例拥有者的上下文中使用。
脚本中的ibmdefaultbp和ldapbp参数控制着DB2的缓冲池。db2_turnings.sh脚本,设置了DB2缓冲池的建议大小。其他一些可选的设置在脚本的注释里写明了。IBM目录服务器的性能随着DB2缓冲池的增长而提高。然而在大多数情况下,通过这样的参数调节方式,你可以预见不超过10%的性能提高。
DB2缓冲池是DB2缓存数据表和索引的地方。DB2用户使用索引来在查询时迅速找到该获取哪个表行项。需要更多信息,请参考IBM Directory Server Tuning Guide。
显示和验证当前设置
输入如下命令来显示当前的DB2参数调节设置的结果:
db2 get database configuration for ldapdb2 |
egrep 'DBHEAP|SORTHEAP|MAXLOCKS|MINCOMMIT|UTIL_HEAP_SZ|APPLHEAPSZ'
db2 connect to ldapdb2
db2 "select bpname,npages,pagesize from syscat.bufferpools"
db2 terminate
如果某个堆配置参数过低,就将出现一些功能性的问题。输入如下命令来显示当前的堆参数设置:
db2 get db cfg for ldapdb2 | grep HEAP
下面是一个使用了推荐值的多种堆参数的输出例子显示:
Database heap (4KB) (DBHEAP) = 1200
Utilities heap size (4KB) (UTIL_HEAP_SZ) = 5000
Max appl. control heap size (4KB) (APP_CTL_HEAP_SZ) = 128
Sort list heap (4KB) (SORTHEAP) = 2500
SQL statement heap (4KB) (STMTHEAP) = 2048
Default application heap (4KB) (APPLHEAPSZ) = 2048
Statistics heap size (4KB ) (STAT_HEAP_SZ) = 4384
如果一个堆参数小于最小值,输入如下命令将其增大到最小值:
db2 update db cfg for ldapdb2 using parm_name parm_value
这里parm_name是上文输出中的第三栏的字样(无括号),parm_value是最后一栏的值。
如果堆参数设置的过高或者过低,IBM的目录服务器都会以失效来提示出现了问题。在这种情况下,需要查看诸如IBM Directory Server V4.1(IDS 4.1)的cli.error文件或者IBM Tivoli Directory Server V5.2(IDS v5.2)的db2cli.log或者其他一些文件。在IDS v4.1系统中,该文件缺省目录在Solaris的/var/ldap/和AIX的/tmp中。在IDS v5.1和后来系统中,Solaris和AIX的缺省目录都是/var/ldap。
注意db2look能够在一条命令下提供关于数据库及其配置的足够多的信息。例子如下:
db2look -d ldapdb2 -u ldapdb2 -p -o output_file
output_file是存储结果的文件位置。
关于IBM目录服务器运行的警告
DB2参数调节使用了db2 terminate。如果当该命令发出,IBM目录服务器slapd或ibmslapd进程在运行,它将阻止服务器的部分功能。所有缓存的搜索看起来反应正常。其他的搜索将会简单的变为无结果或者出现错误信息。恢复功能将会重启IBM目录服务器。因此最好是在调节DB2参数时关闭IBM目录服务器。
关于缓冲池内存使用的警告
如果任何的缓冲池被设置过高,DB2将会因为缺少足够内存而无法启动。如果出现该问题将会有一个核心转储的文件,但是通常没有错误信息。
在AIX系统里,系统错误日志将会报告一个内存分配失败。查看这个日志请输入:
errpt -a | more
使用太大的缓冲池大小来恢复一个被分在系统里的数据库将会导致恢复失败。查看http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/topic/com.ibm.itame3.doc_5.1/am51_perftune116.htm#idtrouble来解决这个问题。
如果DB2因为缓冲池过大而无法启动,请重新调节DB2参数。
关于MINCOMMIT的警告
不要设置MINCOMMIT为1以外的数。最新的db2_tunings.sh脚本正确的设置了该值为1。以前的版本均设置为25。设置为非1的值将会导致更新操作的超时,并且有可能影响更新的速度。