DB2性能调节工作总结
网上数据库调节方面的资料也很多,但大多数都是转来转去的,在此只做下我个人的工作总结;(//表示对上诉解释 ##表示对下面解释)
############1,Monitoring##################
//显示监视开关的情况
db2 update dbm cfg using DFT_MON_BUFPOOL ON DFT_MON_LOCK ON
db2 update dbm cfg using DFT_MON_SORT ON DFT_MON_STMT ON
db2 update dbm cfg using DFT_MON_TABLE ON DFT_MON_UOS ON
db2 terminate
db2stop
db2start
//在实例级打开监视开关,这样随着实例的重启,开关生效
db2 get database manager monitor switches
db2 get monitor switches
//发现实例级和下面的数据库监视开关都打开了
db2 deacivate database tp1
db2 activate database tp1
//重新激活数据库,刷新监视数据
select agent_id,rows_read,rows_written,rows_selected,rows_inserted from sysibmadm.snapappl
//监视每个代理读写查询的情况,如果read的数量远高于select的数量,考虑是不是缺少索引
//在我的工作中,很少遇到写多的情况,所以对这方面也没深入
db2 get snapshot for tables on tp1 > sntab1.txt
//接下来监视tp1数据库下所有表的读写啦
##下一步,就是抓到那个有大量读大于写的表,然后提取该表上的查询SQL
##这里就要考虑两种情况了,是静态的还是动态的
##@@@静态的,从包里提取
db2bfd -s sqltp1st.bnd
##@@@动态的,可以用snapshot SQL STATEMENT抓取,这里不写了
//我不太喜欢这部,累眼睛,还烦琐!!!如果有大量查询SQL,还需要想办法自己找出
db2 describe indexes for table acct show detail
//然后就是从提出的SQL中找到表,从表中看有没有索引,没有的话,新建
##之后呢,就可以从访问计划中看索引有没有生效
##静态SQL可以用db2expln从包里弄,本人比较喜欢db2exfmt,因为动静SQL都可以弄
##后面有db2exfmt关于动静的例子,我比较习惯把SQL statement拿出来
##然后放进文本里,db2expln -d GTSSTGMS -f SQL.txt -g -z \; -o GTSSTGMS_sort.txt
##或者,db2 connect to tp1
##db2 set current explain mode explain
##db2 set current explain snapshot explain
##db2 "select name,address from acct where ......"
##db2exfmt -l -d tp1 -o extp2.txt => vi extp2.txt
############2,Talespace and I/O Performance##################
db2 select bpname,bufferpoolid,npages,pagesize from syscat.bufferpools
//查看数据库的缓冲池,syscat.bufferpools中的bufferpoolid字段和sysibmadm.snapdb_memory_pool
//的pool_secondary_id是关联的,从后一张表中记载着用户用户间的缓冲池和系统自建的缓冲池
//CURRENT_SIZE 当前大小;POOL_CONFIG_SIZE 设置大小;HIGH_WATERMARK 最高记录;
//我发现,这和使用 db2pd -db GTSSTGMS -mempools是对应的 PhySz PhyUpBnd PhyHWM
//使用 db2pd -db GTSSTGMS -memset,将同类内存集合并计算
//在这里插一段缓冲池自调节功能介绍
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
下面我们创建示例缓冲池MYBP1,其使用自调整功能(注意其create bufferpool语句使用了automatic),初始大小为400K,具体如清单4所示:
创建使用自动自调整功能的示例缓冲池MYBP1
db2 create bufferpool mybp1 immediate size 100 automatic pagesize 4k
db2 "select BPNAME, NPAGES from sysibm.sysbufferpools"
当缓冲池启用了自调整功能时,该特定缓冲池的 sysibm.sysbufferpools 表中的 NPAGES 字段将设置为 -2。当自调整功能处于禁用状态时,NPAGES 字段将设置为缓冲池的当前大小。
db2 alter bufferpool mybp2 immediate size 100 automatic
表空间在读大数据的时候,给表空间指定缓冲区是没有用的。这种情况下,DB2会利用直接I/O去接触大数据。
db2 create bufferpool BP8K size 1000 pagesize 8k
db2 create system temporary tablespace TMP8K pagesize 8k managed by system using ('TMP8K') EXTENTSIZE 8 PREFETCHSIZE 8 bufferpool BP8K
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
###接下来呢,当然是看命中率了 当然可以用 db2 get snapshot for database on tp1
###这里介绍另外一个方法
select data_physical_reads,index_physical_reads,total_physical_reads,bp_name from sysibmadm.bp_hitratio where bp_name not like 'IBMSYSTEM%'
//上面这样可以检测每一个缓冲器的命中率情况
###接下来,看一下缓冲器的读写情况
select substr(bp_name,1,15) as bp_name,total_physical_reads,average_read_time_ms from sysibmadm.bp_read_io where bp_name not like 'IBMSYSTEM%'
//那个bufferpool比较忙,用于那个表空间,该表空间有哪些表,检查。。。
select pool_data_p_reads as Total_Data_Reads, Pool_async_data_reads as Asynch_Data_Reads, pool_async_read_time from sysibmadm.snapbp where bp_name='IBMDEFAULTBP'
###(最好打开Automatic Prefetch size,这样自动计算数值NUM of Containers * Extent Size)使用
db2 get snapshot for tablespace on tp1
###最好将IOSERVERS和IOCLEANERS设为自动
db2 get db cfg show detail | grep NUM_IO
NUM_IOSERVERS AUTOMATIC?
NUM_IOCLEANERS AUTOMATIC?
############3,Memory Management##################
###当然是要看内存当前使用了
db2 deactivate db tp1
db2 activate db tp1
db2 connect to tp1
db2pd -db tp1 -mempools
db2pd -db tp1 -memsets
//这里就不多说了,好多我也不明白,明白的具体情况具体分析
db2 get snapshot for database on tp1 | grep -i sort
//需要看一下total sorts和Sort Overflows的情况
//如果sort heap不够用的话,会用临时表空间
//可以snapshot一下这个临时表空间
//特别注意Buffer pool temprorary data logical reads和Buffer pool temporary data physical reads
//Buffer pool data writes,Asynchronous pool data page writes
###接下来就要估一下sortheap是否够用
db2expln -d tp1 -f sortquery.sql -g -z \; -o expsort.txt
###这里主要看Rows * Row Width 和 sortheap大小
############5,Access plan(Optimizer plan)##################
Monitor ----- Static SQL
cd $HOME/sqllib/bin
db2 connect to tp1
db2 bind sqltp1st.bnd explain yes explsnap yes
db2exfmt -l -d tp1 -n SQLTP1ST -# / -o exptp1.txt
PCTFREE & FREEPAGE => 1) 只读表,如果对于一个表没有任务更新活动,那么可以将定义为没有空余空间,而且也没有任何比较reorg,因为不会产生分页。
Monitor ----- Dynamic SQL
cd $HOME/sqllib/bin
db2 connect to tp1
db2 set current explain mode explain
db2 set current explain snapshot explain
db2 "select name,address from acct.where acct_grp < 50 order by name"
db2exfmt -l -d tp1 -o extp2.txt
insert优化
你的问题比较简单,我个人认为,db2插入6000条数据,肯定30秒之内,我建议你做如下的调整:
1、update db cfg using logfilsz 51200
2、update db cfg using logbufsz 1024
3、你插入的6000条数据从哪里来的,怎么插入的,也就是说,如果你的insert 后面使用的是select,那么你要看看你的select本是是不是很慢
4、把你的insert语句中所有涉及到的表,适用下面的语句执行一下:
db2 reorg table <tabschema>.<tabname>
db2 runstats on table <tabschema>.<tabname> with distribution and detailed indexes all
5、如果你的表空间使用的bufferpool太小,那么必须增加你的bufferpool,适用db2 "select bpname,pagesize,npages from syscat.bufferpools"命令查看你的bufferpool总大小,然后在保证所有bufferpool总合不超过1G的情况下,尽量增加buffer的大小,调整bufferpool的大小使用db2 "alter bufferpool ibmdefaultbp size 51200"
DB2性能调节工作总结相关推荐
- 联想笔记本Fn+Q性能调节模式失效
系统重装后,联想笔记本Fn+Q性能调节模式会失效. 解决办法: 在微软应用商店里,搜索:Lenovo Hotkeys.Lenovo Vantage (无前台界面)安装.
- IT:前端进阶技术路线图(初级→中级→高级)之初级(研发工具/HTML/CSS/JS/浏览器)/中级(研发链路/工程化/库/框架/性能优化/工作原理)/高级(搭建/中后台/体验管理等)之详细攻略
IT:前端进阶技术路线图(初级→中级→高级)之初级(研发工具/HTML/CSS/JS/浏览器)/中级(研发链路/工程化/库/框架/性能优化/工作原理)/高级(搭建/Node/IDE/中后台/体验管理/ ...
- EPPlus导出和Spire.Xls导入、导出Pdf/Image、调节工作簿比例和视图模式
EPPLus导出的教程 ,总结的很详细: http://www.cnblogs.com/rumeng/p/3785775.html https://www.cnblogs.com/chenwolong ...
- DB2性能调整优化问题
服务器是IBM Netfinity 5600,PIII 800,1G内存,OS是win2000高级版.目前数据库有90多个table,最大的一个表有二十多万数据,备份后的image有900多兆.我们每 ...
- DB2性能优化 – 如何通过db2优化工具提升SQL查询效率
我们都知道,应用系统在运行一段时间后,用户报告系统运行会变慢,使他们不能完成所有的工作,完成事务和处理查询花费过长时间,或者应用程序在一天的某些时段变慢,要确定造成问题的本质原因,必须评估系统资源的实 ...
- mysql db2 性能_确定DB2 Java应用程序的性能问题
问题确定和DB2体系结构简介 本文的目的是帮助您作为应用程序开发人员或数据库管理员,对您在部署Java应用程序时可能遇到的常见性能问题进行故障排除和诊断. 这些包括常见的应用程序开发问题,例如挂起或响 ...
- 3.db2性能和优化
"db2中有分区.表空间.日志空间等的概念,所以在操作db2数据库时候,注意以上的设置,会大大提升sql的运行速度,也方便管理人员的管理和维护.了解其原理后,你会发现db2是典型的分布式集群 ...
- 15天的性能优化工作,5方面的调优经验
开心一笑 世界上最互相信任的两个人应该是初中老师和高中老师了. 初中老师:这个知识点到高中你们老师会讲的,你们现在不必要知道. 高中老师:这个知识点你们初中老师肯定讲过了,我就不讲了. 我:你TM在逗 ...
- 11 个 Nginx 参数性能优化工作
工作上,需要配置 Nginx,要投入生产使用,做了一点优化工作,加上以前也经常折腾 Nginx,故记下一些优化工作. 优化 Nginx 进程数量 配置参数如下: worker_processes 1; ...
最新文章
- C++游戏开发需要阅读的书籍
- DatePicker的使用(一)
- 基于注解的方式配置bean
- HTML5数据推送SSE原理及应用开发
- leetcode------Subsets
- python你的人生_人生苦短:运行你的第一个 Python 脚本
- 大数据平台搭建_一文读懂数据平台、大数据平台、数据中台
- login-webflow.xml初步分析
- Js实现input上传图片并显示缩略图
- 软件测试——文档测试
- 字典爆破php,密码字典 渗透测试字典 爆破字典
- VS代码格式化快捷键
- 2022年7月国产数据库大事记-墨天轮
- JVM中的GC是什么
- c语言修改pdf文件内容,PDF怎么编辑修改?如何编辑PDF的内容?
- 003.关于光流传感器(ADNS3080)调焦问题
- windows密钥查看器ProduKey1.82汉化
- 快速提升SEO关键词搜索排名的5大伎俩
- 期市财盛:9月12日美原油期货日内行情分析_期市黄金策略
- opencv-python 详解直方图均衡(二)《再详细介绍直方图以及OpenCV中提供的函数使用》