一、规则
1.确保有足够的磁盘(每个 CPU 有 6-10 个磁盘才是一个好的开端)。
每个表空间的容器应 该跨越所有可用的磁盘。
有些表空间,例如 SYSCATSPACE 以及那些表数量不多的表空间,
不需要展开到所有磁盘上, 而那些具有大型用户或临时表的表
空间则应该跨越所有磁盘。( 表空间)。
2.缓冲池应该占用可用内存的大约 75% (OLTP) 或 50% (OLAP)( 缓冲池)。
3.应该对所有表执行 runstats,包括系统编目表( Runstats)。
4.使用 Design Advisor 为 SQL 工作负载推荐索引和检查索引( Design Advisor)。
5.使用 Configuration Advisor 为应用程序环境配置数据库管理器和数据库 ( Configuration Advisor)。
6.日志记录应该在一个独立的高速驱动器上进行,
该驱动器由 NEWLOGPATH 数据库配置参数指定( Experimenting)。
7.通过频繁的提交可以增加并发性( SQL 语句调优)。
8.应该增加 SORTHEAP,以避免排序溢出( DBM 和 DB 配置)。
9.对于系统编目表空间和临时表空间,表空间类型应该为 SMS,而对于其他表空间,
表空间类型应为 DMS( raw device 或者是文件)。
运行 db2empfa,以便支持用于 SMS 表空间的多页(multi-page )文件的空间分配。
这将允许 SMS 表空间一次增长一个区段(Extend),而不是一页,
从而可以加快那些大型的插入操作和溢出磁盘的排序操作( 表空间)。
10.对于重复的语句,使用参数标记 ( SQL 语句调优)。
二、参数设置
1)BUFFPAGE:数据缓冲池,默认250*4K太小,需要修改百兆级.
2)LOGBUFSZ:日志缓冲区,默认8*4K太小,改为1024*4K足够了.
3)LOGFILSZ:日志文件大小,默认1000*4K太小,修改为10240左右
4)MINCOMMIT:组提交数,默认为1即可,
当运行commit命令时,查询必须等待日志缓冲区数 据写入磁盘后才能进行,
在发生许多较小的并发事务中,频繁把少量的日志写入磁盘可能导致IO浪费
可以设置此参数大于1,这样做可能会对某些应用程序造成更长的延迟时间
公式:mincommit=每秒钟完成事务数/10.
5)LOCKLIST:锁列表最大存储量,默认50*4K太小,建议 5000*4K.
6)MAXFILOP:最大可打开文件数,默认64太小,
db2 get snapshot for database on db_name
查看"关闭的文件数"项,若>0则需要增大此参数
7)CATALOGCACHE_SZ:运行db2 get snapshot for db on sample
若 目录高速缓存溢出项大于0则增加参数值
否则按照如下公式计算比率:
比率=100- 目录高速缓存插入*100/目录高速缓存查询
保证命中率大于95%,否则增加
8)LOCKTIMEOUT:锁超时时间,单位:秒,默认为-1,即总是保持锁,
应该改为一个合适的值,oltp为10秒为基础调整,
olap以60秒为基础调整.
9)num_io_cleaners:CPU个数
10)num_io_servers:预取程序数目,和cpu个数相同即可,但不应小于默认值3
11)MAXAGENTS:运行命令db2 get snapshot for database manager
查看“从另一个应用程序窃用的代理程序数”项,
若值大于0,则应该增加此参数的值