DB2性能调整

来源:互联网 发布:大学生贷款软件 编辑:程序博客网 时间:2024/05/08 22:55


一、规则
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,则应该增加此参数的值

 

原创粉丝点击