新手入门 DB2 学习笔记

DB2数据库备份与恢复实战文档 软件成长专区
返回列表 发帖

[基础知识] 关于DB2参数调优的一些技巧

在开始前,请关闭IBM目录服务器。将上下文切换到IBM目录服务器DB2实例拥有者,一般是ldapdb2用户。比如:   
    1、在Unix系统里,输入:
    su-ldapdb2
    2、在Windows系统里,输入:
    db2cmd
    setDB2INSTANCE=ldapdb2
    为了调节DB2参数,运行db2-tunings.sh脚本,你可以在这里下载:
    http://www3.software.ibm.com/ibmdl/pub/software/tivoli_support/misc/Security/AMeB/_
    am5.1/tuning_guide_scripts.tar
    或者通过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用户使用索引来在查询时迅速找到该获取哪个表行项。需要更多信息,请参考IBMDirectoryServerTuningGuide。

    显示和验证当前设置
    输入如下命令来显示当前的DB2参数调节设置的结果:
    db2getdatabaseconfigurationforldapdb2|\
    egrep'DBHEAP|SORTHEAP|MAXLOCKS|MINCOMMIT|UTIL_HEAP_SZ|APPLHEAPSZ'
    db2connecttoldapdb2
    db2"selectbpname,npages,pagesizefromsyscat.bufferpools"
    db2terminate
    如果某个堆配置参数过低,就将出现一些功能性的问题。输入如下命令来显示当前的堆参数设置:
    db2getdbcfgforldapdb2|grepHEAP
    下面是一个使用了推荐值的多种堆参数的输出例子显示:
    Databaseheap(4KB)(DBHEAP)=1200
    Utilitiesheapsize(4KB)(UTIL_HEAP_SZ)=5000
    Maxappl.controlheapsize(4KB)(APP_CTL_HEAP_SZ)=128
    Sortlistheap(4KB)(SORTHEAP)=2500
    SQLstatementheap(4KB)(STMTHEAP)=2048
    Defaultapplicationheap(4KB)(APPLHEAPSZ)=2048
    Statisticsheapsize(4KB)(STAT_HEAP_SZ)=4384
    如果一个堆参数小于最小值,输入如下命令将其增大到最小值:
    db2updatedbcfgforldapdb2usingparm_nameparm_value
    这里parm_name是上文输出中的第三栏的字样(无括号),parm_value是最后一栏的值。
    如果堆参数设置的过高或者过低,IBM的目录服务器都会以失效来提示出现了问题。在这种情况下,需要查看诸如IBMDirectoryServerV4.1(IDS4.1)的cli.error文件或者IBMTivoliDirectoryServerV5.2(IDSv5.2)的db2cli.log或者其他一些文件。在IDSv4.1系统中,该文件缺省目录在Solaris的/var/ldap/和AIX的/tmp中。在IDSv5.1和后来系统中,Solaris和AIX的缺省目录都是/var/ldap。
    注意db2look能够在一条命令下提供关于数据库及其配置的足够多的信息。例子如下:
    db2look-dldapdb2-uldapdb2-p-ooutput_file
    output_file是存储结果的文件位置。

    关于IBM目录服务器运行的警告
    DB2参数调节使用了db2terminate。如果当该命令发出,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的值将会导致更新操作的超时,并且有可能影响更新的速度。

返回列表