-
使用最新的修正包
在你进行调解过程以前,应用最新的DB2修正包。修正包经常包含性能增强。
CARS服务器:Common Auditing and Reporting Service Server
注意:DB2 8.2 Fix Pack 10 ESE(8.1.1.96)被用来作为这个性能调节指南的基础。
使用足够数量的硬盘
CARS服务器安装并不需要多于1块硬盘。然而,三块硬盘是被需要用来提升服务器性能的。一个硬盘用来安装操作系统和应用程序,另外两块用来作XML存储和分段表。
尽管DB2记录路径可以在操作系统和应用程序的硬盘上被创建,移动这个路径到专用的,高速的硬盘上可以极大的提升性能。
使用DMS(数据库管理存储)表空间
缺省的,CARS服务器安装创建了系统管理存储(SMS)表空间,使用文件系统目录作为数据容器。
SMS应该被用来作为临时的表空间和系统目录表空间因为它允许表空间动态增长和缩减。
为了更好的性能,DMS应该被用来作为所有用户的表空间。DB2可以使用DMS文件容器或者DMS设备(粗逻辑卷)。
推荐的CARS DB2安装的性能调节
为了使用DMS表空间来作为CARS XML存储和分段表,在CARS服务器安装前进行如下操作。
这些操作假设你为CARS数据库设置了两块专用硬盘:
1、hdisk1用来作XML存储表
2、hdisk2用来作分段表
(hdisk0是操作系统和应用程序盘)这些步骤是基于文件的DMS表空间的。要使用粗设备DMS,请将目录替换为逻辑卷。
1. 在每个硬盘上为每个基于文件的DMS表空间创建独立的目录。
注意:DB2实例拥有者(通常是db2inst1)必须拥有这些目录的写权限,否则CARS安装将失败。
比如,在hdisk1上创建
/carsxmlstore/cei_ts_8k_path
/carsxmlstore/cei_ts_4k_path在disk2上创建
/carsstaging/cars_ts_4k_path
/carsstaging/cars_ts_8k_path
/carsstaging/cars_ts_16k_path2. 保证DB2实例拥有者(通常是db2inst1)必须拥有这些目录的写权限,和Step1中所述一致。否则CARS安装将失败。
3. 在/etc/security/limits的缺省段中设置fsize=-1,以允许大的文件大小(jfs2允许文件达到16TB)
4. 开始CARS服务器安装。在暂停窗口,这里提示用户XML事件存储将会被创建,改变如下文件:
/usr/IBM/WebSphere/AppServer/profiles/default/event/dbscripts/db2xml/cr_ts.db2如下修改
------------------------------------------------------
-- script that creates the CEI table spaces
------------------------------------------------------
CREATE REGULAR TABLESPACE cei_ts_8k
PAGESIZE 8 K
MANAGED BY DATABASE
USING (
FILE ’/carsxmlstore/cei_ts_8k_path/cei_ts_8k’ 20G
) NO FILE SYSTEM CACHING
EXTENTSIZE 128 PREFETCHSIZE AUTOMATIC BUFFERPOOL event_bp_8k_data;CREATE REGULAR TABLESPACE cei_ts_base4K_path
MANAGED BY DATABASE
USING (
FILE ’/carsxmlstore/cei_ts_4k_path/cei_ts_base4k’ 1G
) NO FILE SYSTEM CACHING
EXTENTSIZE 32 PREFETCHSIZE 32 BUFFERPOOL event_bp_4k_data;CREATE TEMPORARY TABLESPACE cei_ts_temp8k
PAGESIZE 8 K
MANAGED BY SYSTEM
USING (
’cei_ts_temp8k_path’
)
EXTENTSIZE 128 PREFETCHSIZE AUTOMATIC BUFFERPOOL event_bp_8k_data;
注意:表空间大小限制在使用8K页面时是128GB。你可以将cei_ts_8k表的大小增加到16K或者32K以上。这个增加将会将限制分别提升到256GB和512GB。/opt/IBM/Tivoli/CommonAudit/server/ddl/cars_stagingtables.ddl
------------------------------------------------------
-- Create CARS table spaces
------------------------------------------------------
CREATE REGULAR TABLESPACE cars_ts_4k
PAGESIZE 4 K
MANAGED BY DATABASE
USING (FILE ’/carsstaging/cars_ts_4k_path/cars_ts_4k’ 2G)
EXTENTSIZE 128 BUFFERPOOL cars_bp_4k
NO FILE SYSTEM CACHING;
ALTER TABLESPACE cars_ts_4k PREFETCHSIZE AUTOMATIC;CREATE REGULAR TABLESPACE cars_ts_8k
PAGESIZE 8 K
MANAGED BY DATABASE
USING (FILE ’/carsstg/cars_ts_8k_path/cars_ts_8k’ 4G)
EXTENTSIZE 128 BUFFERPOOL cars_bp_8k
NO FILE SYSTEM CACHING;ALTER TABLESPACE cars_ts_8k PREFETCHSIZE AUTOMATIC;
CREATE REGULAR TABLESPACE cars_ts_16k
PAGESIZE 16 K
MANAGED BY DATABASE
USING (FILE ’/carsstg/cars_ts_16k_path/cars_ts_16k’ 2G)
EXTENTSIZE 128 BUFFERPOOL cars_bp_16k
NO FILE SYSTEM CACHING;ALTER TABLESPACE cars_ts_16k PREFETCHSIZE AUTOMATIC;
注意:上述脚本中DMS文件大小被计算足够用于积累和分段大概5-10百万压缩过的事件,根据事件类型的统计分布和每个事件包含的可选数据的容量大小不同而变化。参考IBM Tivoli Access Manager for e-business: Auditing Guide来学习如何进行事件压缩。
5. 继续CARS服务器安装。
6. 运行DB2配置向导,使用如下选项:1)允许80%的内存分配给DB2
2)选择Mixed作为工作负载类型
3)选择More than 10 (long transaction)和Transactions per minute设置为450.
4)选择Faster transaction performance.
5)开始选择No,在积累到100万条事件后重新运行精灵,选择Yes
6)选择平均本地应用为0,远程应用为10
7)选择Uncommitted read.
6)选择Run now without saving task history7. 禁止自动的统计profile生成,如果你运行CARS服务器在一个SMP(多处理器)环境下:
update db cfg for EVENTXML using AUTO_STATS_PROF OFF;
update db cfg for EVENTXML using AUTO_PROF_UPD OFF;
8. 重启DB2db2stop
db2start9. 从控制中心里,运行Configure Database Logging wizard,确认记录文件存贮在hdisk0的操作系统硬盘里或者专用的高速硬盘里hdisk3.
注意:DMS表空间需要被有规律的监控和扩充,如果需要这么作的话。扩充DMS表空间可以使用控制中心或者命令行界面来完成。
使用并行I/O
DB2 UDB可以使用两种不同方式来并行I/O:
1. 为表空间创建多于1个的容器,每个容器放置在一个不同的硬盘中。
比如,如果我们为XML桶分配了两个硬盘,我们可以这样创建cei_ts_8k:
CREATE REGULAR TABLESPACE cei_ts_8k
PAGESIZE 8 K
MANAGED BY DATABASE
USING (
FILE ’/disk1/carsxmlstore/cei_ts_8k_path/cei_ts_8k’ 20G,
FILE ’/disk2/carsxmlstore/cei_ts_8k_path/cei_ts_8k’ 20G
) NO FILE SYSTEM CACHING
EXTENTSIZE 128 PREFETCHSIZE AUTOMATIC
BUFFERPOOL event_bp_8k_data;
在这个例子中,XML桶数据将会被在两个硬盘中同时被条块化,每个条块大小为EXTENT大小(128 pages or 128 x 8KB= 1 MB)。通过设置PREFETCHSIZE为2※EXTENTSIZE(AUTOMATIC将被设置为number of disks ※ EXTENDSIZE),你可以同时进行两块硬盘上的分别读取操作。2. 如果一个容器被创建在包含多个物理硬盘的单个RAID设备上,你需要为每个使用RAID设备的表空间作如下步骤:
a、为表空间设定一个单独的容器(使用RAID设备)
b、使得表空间的EXTENTSIZE等于或者倍数于RAID条块大小
c、确保表空间的PREFETCHSIZE是:
1)RAID条块大小乘以RAID并行设备数目(或者该乘积的倍数),和
2)EXTENTSIZE的倍数
d、使用DB2_PARALLEL_IO注册变量来允许表空间的并行I/O。这个变量可以设置为“※”,意味着每个表空间,或者设置为逗号分隔开的表空间id列表。比如:
db2set DB2_PARALLEL_IO=※ {turn parallel I/O on for all table spaces}
db2set DB2_PARALLEL_IO=1,2,4 {turn parallel I/O on for table spaces 1,2,4}设置注册变量之后,DB2 UDB必须停止(db2stop),然后重启(db2start),以使得改变生效。
调节缓冲池大小
DB2使用一块叫做缓冲池的内存区域来减少硬盘I/O。
缓冲池被用来缓存表和索引数据页面,就像它们在硬盘上被读取或者被修改一样。缓冲池提高了数据库系统的性能,使得数据能够直接从内存中而非硬盘中读取。
因为内存访问是比硬盘访问更快,因此越少读取硬盘数据,性能越好。因为大部分的数据操作发生在缓冲池中,配置缓冲池就是一个非常重要的调节方式。
缓冲池可以被定义为4K,8K,16K或32K页面大小。页面大小应该和缓冲池分配的表空间页面大小相符合。
当你调节缓冲池时,你在决定分配内存数量的同时,也确定了基于块的页面数量和块的大小。
根据经验,50-80%的实际内存经常被DB2的缓冲池所专用。
不要分配多于可用内存的量,否则你将会引发操作系统页面文件的消耗。最好是通过配置向导来调节,并且只调节性能相关的值,这一点我们在上文提过。
使用基于块的缓冲池来增强预取
在历史模式下运行分段工具,进程将会预取事件记录,它们通过XML桶中的创建时间排序。
这个过程可以从基于块的缓冲池受益。缺省的,所有的缓冲池是基于页面的,意味着预取将会把硬盘上邻近的页面放到非邻近的内存中。
如果使用了基于块的缓冲池,DB2将会使用块I/O来读取多个页面到缓冲池中,这样就极大的提高了顺序预取性能。
为了使event_bp_8k_data成为基于块的:
1. 改变event_bp_8k_data缓冲池(为了XML事件表而使用)为:NUMBLOCKPAGES为缓冲池的60%大小。你可以通过使用控制中心或者运行命令get snapshot for all on eventxml来获取当前的缓冲池大小,然后找到event_bp_8k_data缓冲池被窃检查她的当前大小参数。
2. 设置BLOCKSIZE和分配给这个缓冲池的EXTENTSIZE相等(128)。
如
alter BUFFERPOOL event_bp_8k_data NUMBLOCKPAGES <60% of size>;
alter BUFFERPOOL event_bp_8k_data BLOCKSIZE 128;调节配置参数
调节数据库管理器和配置参数很大程度上依赖于DB2所拥有的资源。
配置向导工具被用来配置数据库管理器和数据库配置参数,使用DBA的输入来进行配置。它设置了一个数据库的性能基线。
配置向导是一个GUI工具,通过回答问题的方式来自动配置数据库和实例。你会看到通过它的配置,数据库性能的提升。
-
前一条:Ajax基石脚本异步并发调用参数传递
后一条:正确的理解SQL Server和XML支持