
影子表的 DB2 服务器配置
查看此信息以了解您的环境中所需的更改。遵循 为影子表配置 DB2 服务器 中的步骤以实现这些更改。
注册表变量
- DB2_WORKLOAD
- 在已针对联机分析处理 (OLAP) 查询进行了优化的典型 BLU Acceleration 环境中,此注册表变量设置为 ANALYTICS
以帮助启用工作负载管理并配置内存、表组织、页大小及扩展数据块大小。
在带有影子表的联机事务处理 (OLTP) 环境中,主要工作负载为仍是 OLTP。因此,将使用影子表的环境的 DB2_WORKLOAD 注册表变量设置为 ANALYTICS 对 OLTP 性能不利。
对于 OLTP 工作负载占主导地位地的影子表环境,确保 DB2_WORKLOAD 未设置为 ANALYTICS,并显式设置以下部分中描述的数据库管理器和数据库配置参数。
- DB2_EXTENDED_OPTIMIZATION
- 使用影子表时的排序堆内存需求高于 OLTP 环境中的数据库的正常排序堆内存需求。要增大排序堆内存而不影响 OLTP 查询的现有存取方案,请对 DB2_EXTENDED_OPTIMIZATION
添加 OPT_SORTHEAP_EXCEPT_COL 以覆盖 sortheap 数据库配置参数的值。
此覆盖仅影响用于生成不访问 列组织 表的方案的编译器查询优化,不指示运行时可用的实际内存量。如果该查询访问 列组织 表,那么系统会忽略此覆盖以允许查询编译器使用 sortheap 数据库配置参数的当前值,此值有利于 列组织 表和影子表的存取方案。
数据库管理器配置
- 实例内存
- 将 instance_memory 数据库管理器配置参数设置为 AUTOMATIC 会在数据库激活时产生计算值,此值指定可对 DB2 实例分配的最大内存量。此值为 DB2 服务器上的物理 RAM 的 75% 到 95%,适合于影子表。
- 排序堆阈值
- 对于影子表,通过将 sheapthres 数据库管理器配置参数设置为 0 以设置数据库级别的排序内存消耗跟踪。
有关限制数据库级别的排序内存消耗的更多信息,请参阅共享排序堆大小。
数据库配置
- 列组织 表的受支持数据库配置
- 要在现有数据库中创建影子表,必须符合 列组织 表的需求。
- 缺省表组织
- 在支持 列组织
表的数据库配置中,dft_table_org
数据库配置参数控制未带 ORGANIZE BY COLUMN 或 ORGANIZE BY ROW 子句的 CREATE TABLE 语句的行为。如果指定其中任一子句,那么 dft_table_org 中的值被忽略。
如果 dft_table_org 参数设置为 ROW,那么不带组织子句的 CREATE TABLE 语句按前发行版中的方式创建 行组织 表。如果 dft_table_org 参数设置为 COLUMN,那么必须指定带 ORGANIZE BY ROW 子句的 CREATE TABLE 语句以创建 行组织 表。为保持前发行版的行为,请将 dft_table_org 参数设置为 ROW。
支持影子表的数据库必须具有混合工作负载。先前已针对联机事务处理 (OLTP) 配置了这些数据库。为保持此行为并在缺省情况下将新表创建为 行组织 表,确保 dft_table_org(用户表的缺省表组织)数据库配置参数设置为 ROW。
- 缓冲池和表空间的页大小
- 影子表因为对缓冲池和表空间使用较大页大小(例如,对 列组织
表使用 32 K)而受益。
为影子表创建表空间时,应指定 32 K 或足够的页大小值。有关使用 32 K 页大小的更多信息,请参阅影子表的内存管理。
- 表空间的扩展数据块大小
- 在创建影子表的表空间中使用 4 页这一扩展数据块大小可改进性能。但是,不要更改数据库缺省扩展数据块大小,因为此更改会影响现有数据库配置。仅应对包含影子表或计划包含影子表的表空间指定足够扩展数据块大小(例如,4 页)。
- 数据库共享内存大小
- 为实际最佳数据库性能,必须指定足够大的数据库内存量以容纳以下可配置内存池:缓冲池、数据库堆、锁定列表、实用程序堆、程序包高速缓存、目录高速缓存、共享排序堆及 5% 的最小溢出区域。
将 database_memory 数据库配置参数设置为特定值和 AUTOMATIC 以允许数据库内存增长至超过其初始大小。此设置可满足超过溢出区域所提供的任何未预见需求。初始大小取决于为 DB2 实例分配的内存量及 DB2 实例管理的数据库数目。
- 数据库内存阈值
- db_mem_thresh 数据库配置参数的缺省设置已设置为 100,这指示数据库管理器永远不会释放任何未使用的数据库共享内存。此设置适合大部分工作负载,包括 OLTP 和 OLAP(混合)工作负载。
- 快速通信管理器 (FCM)
- 要在支持分区内并行性的环境中运行混合工作负载,请通过将 fcm_num_buffers 和 fcm_num_channels 数据库管理器配置参数设置为较大的值和 AUTOMATIC,确保具有足够快速的通信缓冲区和通道。
- 共享排序堆大小
- 处理 列组织
表的数据需要的 sortheap 和 sheapthres_shr
数据库配置参数值比您在 OLTP 环境中的相应值大。对于带有影子表的数据库,请将这些参数设置为足够大的起始值而不使用 AUTOMATIC。
- sheapthres_shr 参数的适合起始值为 database_memory 参数的 40% 到 50%。指定较高百分比以实现较高分析并行性。
- sortheap 参数的适合起始值为 sheapthres_shr 参数的 5% 到 20% 以允许执行并行排序操作。指定较低百分比以实现较高分析并行性。
- 目录高速缓存大小
- 目录高速缓存大小中需要额外空间以容纳概要表。对于每个影子表或 列组织
表,数据库管理器创建概要表以存储 列组织 表的元数据。
适合的起始增量为当前 catalogcache_sz 参数值的 10%。
- 实用程序堆大小
- InfoSphere® CDC 对针对影子表的刷新操作使用 LOAD 命令。要满足
LOAD 命令的资源需求,请将
util_heap_sz 数据库配置参数设置为相应起始值和 AUTOMATIC。
适当的起始值为 100 万个 4K 页。如果数据库服务器的内存至少为 128 GB,请将 util_heap_sz 参数设置为 400 万个 4K 页。如果要运行 LOAD 命令的并行工作负载,请增大 util_heap_sz 参数以满足更高内存需求。如果内存资源受限,那么可仅在对影子表运行 LOAD 命令时动态增大 util_heap_sz 参数。
- 主日志归档方法
- IBM® InfoSphere Change Data Capture
要求对 DB2 数据库启用归档日志记录以捕获事务。
设置 logarchmeth1 数据库配置参数以启用归档日志记录。此参数指定活动日志文件将保留并且变为联机归档日志文件以在前滚恢复中使用。选择 DB2 支持的并且可以更好地配合 IT 灾难恢复准则的日志归档方法。如果 logarchmeth1 参数设置为 OFF,那么 InfoSphere CDC 不能捕获源表的事务。
- 自动维护
- 执行维护活动(例如,在数据库上更新统计信息和重组表和索引)在实现数据库(特别是影子表)的最佳性能和可恢复性时很重要。
如果选择使用自动维护功能,那么您可通过设置自动维护配置参数来启用自动统计信息收集和自动重组。
如果自动统计信息收集和自动重组不适用于您的环境,那么您可能需要使用以下准则来手动执行这些维护任务:- 指定带 ON ALL COLUMNS WITH DISTRIBUTION ON ALL COLUMNS AND SAMPLED DETAILED INDEXES ALL 子句的 RUNSTATS 命令,以同时收集列的基本统计信息和分布统计信息以及所有表索引的扩展统计信息。
- 对索引和表指定带 RECLAIM EXTENTS 子句的 REORG 命令以回收未使用的扩展数据块。使用对 ADMINTABINFO 管理视图或 ADMIN_GET_TAB_INFO 表函数的查询返回的 RECLAIMABLE_SPACE 列值。此值是上次运行 RUNSTATS 命令时确定的可用空间量。
针对影子表执行刷新后,对其手动发出 RUNSTATS 命令,以确保在刷新后立即完全更新统计信息,即使在启用了自动统计信息收集的情况下也是如此。
在应用程序级别设置
- 分区内并行性
- 尽管访问 列组织
表和影子表需要分区内并行性,但您可能无法更改此缺省值而不影响现有 OLTP 工作负载。要启用分区内并行性,请执行以下操作:
- 对于 DB2 实例,可将 intra_parallel 数据库管理器参数设置为 YES。
- 对于数据库级别的特定工作负载,可将 MAXIMUM DEGREE 设置为大于 1 的值。
- 可对数据库应用程序调用带 YES 参数值的 SYSPROC.ADMIN_SET_INTRA_PARALLEL 过程。
对于影子表,在应用程序级别启用分区内并行性是最佳选项。