DB2优化(简易版)
时间:2007-12-23 来源:不详 作者:迈克DB
db2"updatemonitorswitchesusing
lockONsortONbufferpoolONuowON
tableONstatementON"
打开监视开关,获取需要的性能信息
最简单而最见成效的—Bufferpool
缓冲池是内存中的一块存储区域,用于临时读入和更改数据库页(包含表行或索引项)。缓冲池的用途是为了提高数据库系统的性能。从内存访问数据要比从磁盘访问数据快得多。因此,数据库治理器需要从磁盘读取或写入磁盘的次数越少,性能就越好。对一个或多个缓冲池进行配置之所以是调优的最重要方面,是因为连接至数据库的应用程序的大多数数据(不包括大对象和长字段数据)操作都在缓冲池中进行。
缺省情况下,应用程序使用缓冲池IBMDEFAULTBP,它是在创建数据库时创建的。当SYSCAT.BUFFERPOOLS目录表中该缓冲池的NPAGES值为-1时,DB2数据库配置参数BUFFPAGE控制着缓冲池的大小。否则会忽略BUFFPAGE参数,并且用NPAGES参数所指定的页数创建缓冲池。
建议对于仅使用一个缓冲池的应用程序,将NPAGES更改成-1,这样BUFFPAGE就可以控制该缓冲池的大小。这使得更新和报告缓冲池大小以及其它DB2数据库配置参数变得更加方便。
确保可以使用数据库配置中的BUFFPAGE参数来控制缓冲池大小之后,将该参数设置成合适的值。根据数据库的大小和应用程序的性质将该参数设置成一个合理的大值,这种做法很安全。通常,该参数的缺省值非常小,可能满足不了要求。 本文来自织梦
db2"getsnapshotforallbufferpools"
在数据库快照或缓冲池快照的快照输出中,查找下列"logicalreads"和"physicalreads",这样就可以计算出缓冲池命中率,它可以帮助调优缓冲池:
缓冲池命中率表明数据库治理器不需要从磁盘装入页(即该页已经在缓冲池中)就能处理页请求的时间百分比。缓冲池的命中率越高,使用磁盘I/O的频率就越低。按如下计算缓冲池命中率:
(1-((bufferpooldataphysicalreads bufferpoolindexphysicalreads)/
(bufferpooldatalogicalreads poolindexlogicalreads))
)*100%
这个计算考虑了缓冲池高速缓存的所有页(索引和数据)。理想情况下,该比率应当超过95%,并尽可能接近100%。要提高缓冲池命中率,请尝试下面这些方法:
增加缓冲池大小。
考虑分配多个缓冲池,假如可能的话,为每个经常被访问的大表所属的表空间分配一个缓冲池,为一组小表分配一个缓冲池,然后尝试一下使用不同大小的缓冲池以查看哪种组合会提供最佳性能。
假如已分配的内存不能帮助提高性能,那么请避免给缓冲池分配过多的内存。应当根据取自测试环境的快照信息来决定缓冲池的大小。
太小的缓冲池会产生过多的、不必要的物理I/O。太大的缓冲池使系统处在操作系统页面调度的风险中并消耗不必要的CPU周期来治理过度分配的内存。正好合适的缓冲池大小就在"太小"和"太大"之间的某个平衡点上。适当的大小存在于回报将要开始减少的点上。
内容来自dedecms
获得最佳性能的—SQL
一条糟糕的SQL语句会彻底破坏一切。一个相对简单的SQL语句也能够搞糟一个调整得很好的数据库和机器。对于很多这些语句,天底下(或在文件中)没有DB2UDB配置参数能够纠正因错误的SQL语句导致的高成本的情况。
更糟糕的是,DBA经常受到种种束缚:不能更改SQL(可能是因为它是应用程序供给商提供的)。这给DBA只留下三条路可走:
1.更改或添加索引
2.更改群集
3.更改目录统计信息
健壮的应用程序由成千上万条不同的SQL语句组成。这些语句执行的频率随应用程序的功能和日常的业务需要的不同而不同。SQL语句的实际成本是它执行一次的成本乘以它执行的次数。
每个DBA所面临的重大的任务是,识别具有最高"实际成本"的语句的挑战,并且减少这些语句的成本。
通过本机DB2Explain实用程序、一些第三方供给商提供的工具或DB2UDBSQLEventMonitor数据,可以计算出执行一次SQL语句所用的资源成本。但是语句执行频率只能通过仔细和耗时地分析DB2UDBSQLEventMonitor的数据来了解。
上一篇:Oracle库的Hang 下一篇:IBM DB2 基本性能调整
文章评论
共有位Admini5网友发表了评论 查看完整内容