DB2性能优化

教程发布:风哥 教程分类:ITPUX技术网 更新日期:2022-02-12 浏览学习:276

1 ->在程序开发、设计时候需要考虑优化问题;
->在数据库设计特别是物理设计需要考虑优化问题;
->数据库实施和配置时候需要考虑优化问题;
->系统新上线时候需要考虑优化问题;
->在系统出现故障、异常时候需要考虑优化问题;

2 ->减少内存的配置,防止溢出和换页;
->减少CPU资源消耗;
->减少IO,物理磁盘合理规划;
->NFS与数据库备份;

->IO:bufferpool、调整交换区;数据均匀分布结合并行IO;table与index分开存放;10 disk/per-cpu;数据分布在连续的磁盘空间上;裸设备使用较好;DIO;reorg;
->CPU:大量的连接在数据库里面,未始用中间件来共享连接;批量作业改为分时段作业;全表扫描;排序;应用或sql未优化;换页;
->有足够网络带宽提高通信效率;
->存储过程、延迟编译prepare-bind减少交互;

3 定义目标->明确要分析的信息->明确使用的监控工具->采集数据->分析数据->制定、实施优化方案;

4 OS:
->topas、nmon(了解系统一段时间运行情况)、iostat、vmstat
->svmon -G、filemon
->truss:了解某个进程在干吗,尽量少用
->vmo、no

DB:
->snapshot
->event monitor
->db2pd
->db2expln:主要用于分析package,db2 V8.2以后包含dynexpln
->dynexpln:主要用于分析dynamic sql

动态sql优化:
->db2 get snapshot for dynamic sql on sample >top.sql
->grep -E "Total execution time" top.sql|sort>time.sql
->查找运行时间最长的sql
->dynexpln -d sample -f file:看cost estimate
->db2advis -d sample -i file
->优化索引

静态sql优化:
->event monitor for statement
->grep -i "Rowsread" sqlmon_out|sort -rn +2
或者
get snapshot for application agentid xx获得package_name与section_no.

->db2expln -d sample -g -c schema -p package -s 0 -t看执行计划

5 ->对于不同pagesize的tablespace需要创建不同的bufferpool和temporary tablespace;
->具有相同属性的对象放在同一个tablespace例如data、index、LOB都在各自独立的tablespace;
->适合建立索引的列:join、order by、where xx;
->volite一定走索引;
->需要rebind:新建index、runstats、字段修改;

6 配置参数:
->bufferpool、locklist、logbufsz、catacache、packcache、sortheap
->db_total_mem=bufferpool + dbheap + utilheapsz + catacache + packcache + aslheapsz + locklist + 10%开销

->bufferpool:
->建议使用create bufferpool...,不要使用db cfg中bufpage来配置
->OLTP:4K
DSS:8-16K
OLAP:32K

->catalog cache:存放数据字典信息
->package cache:存放静态包信息以及dynamic sql
->sortheap:order、group、distinct会排序、select *会将所有读出数据放入sortheap
->logbufsz:commit、logbufsz-full、写bufferpool->disk前都会触发logbuf->disk
->locklist、maxlock:maxlock=20则表示一个程序最多使用所内存locklist*20%,如果不够则会lock escalation导致lock timeout/deadlock
->多提交
->如果修改太多干脆直接先把表先锁住
->isolation多用CS
->iocleaners:IO写,bufferpool->disk,chgpgesthresh达到阀值触发dbwr或者softmax触发dbwr,dbwr由iocleaners来完成
->ioservers:IO读,prefetchsz设置一次读取多少个页
->尽可能异步独和异步写,同时enable并行IO
->agent:xx_agent_pool

本文标签:
本文标题:DB2性能优化
网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!
【上一篇】
【下一篇】