[DB2]数据库设计:取得最佳性能的准则 (10)
发表于:2007-05-26来源:作者:点击数:
标签:
七、缓冲池方面的考虑 1. 缓冲池的重要性 很多专家将 数据库 缓冲池看作DB2环境中影响 性能 的最关键的资源。很多DB2的架构和设计,其基本思想都是尽可能地避免物理I/O。 DB2缓冲池由数个插槽(slot)的连续的内存组成。数据和索引页被从DASD中读出之后,便
七、缓冲池方面的考虑
1. 缓冲池的重要性
很多专家将
数据库缓冲池看作DB2环境中影响
性能的最关键的资源。很多DB2的架构和设计,其基本思想都是尽可能地避免物理I/O。
DB2缓冲池由数个插槽(slot)的连续的内存组成。数据和索引页被从DASD中读出之后,便进入这些插槽,并留在其中,直到DB2缓冲区管理器确定那些插槽要用于其他数据。应用程序所请求的数据出现在内存中(而不是外面的DASD上)的概率越大,总体性能就越好。实际上,这里的数据被重复使用,因而减少了应用程序对I/O的需要。
是否释放一个缓冲池槽,这是根据最近被使用(
LRU)原则来决定的。DB2维护两个LRU列表,一个用于被随机访问的页,另一个用于被顺序访问的页。这样可以防止大规模的表扫描完全支配缓冲池,并恶劣地影响随机操作。通过使用不同的阈值,DB2 提供了改善缓冲池性能的灵活性。在DB2 SQL Reference手册的第2.7.4节中对这些阈值进行了较为详细的讨论。
2. 为缓冲池设置适当的大小
缓冲池大小的指定要取决于可用存储(包括中央存储和扩展存储)的容量。我建议首先分析缓冲池的分配,然后逐渐增加缓冲池的大小,直到通过增加分配的空间已无法增加更多的吞吐量,或者直到MVS换页率已难于接受为止。为实现这一点,要使DASD I/O的数量持续下降,并不断增加VPSIZE,直到换页的成本超出了通过减少I/O所带来的好处为止。
早些时候,GETPAGES的数量被认为可能是对DB2正在运行的工作量的最好
度量。缓冲池的目的是减少I/O(异步读通常表明需要进行预取,从性能角度来看,这样做通常是值得的。另一方面,同步读常常需要对DASD进行随机I/O,因为被请求的页不在缓冲池中)。会计报表显示对应于每个缓冲池的GETPAGES和同步读的数量。一个被普遍接受的ROT声称,如果GETPAGES对同步读的比率小于10:1,那么应该估计对更大缓冲池的需要。
3. 多缓冲池配置
如果操作系统允许为DB2缓冲池分配相当大的内存,那么使用多缓冲池的配置很可能可以提高特定应用程序或数据库的性能。然而,需要清楚的是,若有了多个缓冲池,那么对这些缓冲池使用效率的监控就变得更加重要。
下面给出了关于分配多个缓冲池的一般建议:
1) 将表空间与和它们相关的索引分放到不同的缓冲池中,以减少索引I/O。
2) 将有不同数据访问模式的数据统一放到不同的缓冲池中。批处理和查询应用程序通常要进行大量的顺序处理,而用于OLTP的数据访问往往更具有随机性。这为利用各种阈值处理缓冲池中某些类型的数据访问提供了一种方法。
3) 为独立的应用程序提供一个单独的缓冲池。这就为紧密监控应用程序的性能问题或
测试新的应用程序提供了一种方法。
4) 如果排序的性能在您的环境中很重要,那么需要为工作文件创建一个单独的缓冲池。
5) 对于相对较小但更新频繁的表,通过一个足够大的单独的缓冲池,也许可以同时减少读和写的I/O。
6) 为只读表(小的引用表)提供单独的缓冲池可以提高性能。
八、结束语
考虑周详的数据库设计可以提供巨大的性能收益,但是这必须在应用程序
开发过程的早期便开始着手。从早期的DB2开始,明智的开发人员就已经使用了前面提到的很多准则,这些准则直到现在也仍然成立。但是,DB2功能的增强、其他领域中硬件和软件技术的变化将影响当前和将来的应用程序,知道这一点至关重要。当数据库性能成为开发过程中的焦点时,您的数据库设计使得为DB2应用程序提供最佳性能有了更大的可能性。
原文转自:http://www.ltesting.net