在设计表空间和物理设备上的容器位置时,我们的目标是最大限度地提高 I/O 的并行度,增加缓冲区利用率和缓冲池命中率。为了实现这一目标,您需要透彻了解数据库设计和应用程序。
了解表空间和缓冲池的工作原理以及它们影响数据库的整体性能的方式,这可以帮助您确定一些问题,例如,将两张表分隔到不同的设备是否会导致并行 I/O,或者是否应在一个单独的表空间中创建一个表,使该表可以被完全缓冲。 您的设计中要考虑的两个主要存储领域是:
1. 表空间。表空间的类型和设计可以决定对该表空间所执行的 I/O 效率。
2. 缓冲池。大多数页面数据操作都在缓冲池中发生,配置缓冲池是最重要的一个调优领域。
面向 OLTP ">工作负载的表空间设计
数据库管理器在您的环境中管理的工作负载类型显著影响了所使用的表空间类型的选择,以及指定的页面大小。DB2 数据库支持表空间的多种页面大小,如 4 KB、8 KB、16 KB 和 32 KB。 DB2 数据库可以选择的表空间有三种类型:
由自动存储器管理的表空间。
由数据库管理的表空间。也称为数据库管理的空间 (DMS)。
由系统管理的表空间。也称为系统管理的空间 (SMS)。
OLTP 工作负载的特点是需要随机访问数据的事务。OLTP 事务往往涉及频繁的插入或更新活动,以及通常返回小数据集的查询。当表空间访问是随机访问并涉及一个或几个页面时,预取不太可能发生。在这种情况下,使用设备容器的 DMS 表空间性能最好。如果不需要最高性能,那么具有文件容器的 DMS 表空间(或 SMS 表空间)也是 OLTP 工作负载的合理选择。在 FILE SYSTEM CACHING 关闭的情况下,使用有文件容器的 DMS 表空间的性能水平可以与 DMS 原始表空间容器相媲美。
若表空间的 FILE SYSTEM CACHING 关闭,那么数据库管理器会根据底层文件系统的支持,在并发 I/O (CIO) 和直接 I/O (DIO) 之间进行选择。大多数操作系统和文件系统都支持 DIO 或 CIO。CIO 是增强版本的 DIO,提供了比 DIO 更好的性能。像原始设备一样,CIO 或 DIO 文件系统容器会忽略文件系统的缓冲区。但和原始设备不同的是,它们更易于管理。
从 DB2 Version 9.5 开始,NO FILE SYSTEM CACHING 设置在 DIO/CIO 可用的文件系统是新数据库的默认设置。如果从 Version 9.1 数据库进行迁移,请考虑该项变更的影响。
由于预计很少或根本没有连续 I/O,所以 CREATE table space 语句上的 EXTENTSIZE 和 PREFETCHSIZE 参数的设置对 I/O 效率不会产生重大影响。CREATE table space 语句上的 PREFETCHSIZE 参数值应该被设置为 EXTENTSIZE 参数值乘以设备容器的数量。另外,您还可以将预取大小指定为 -1,数据库管理器会自动选择一个合适的预取大小。此设置允许数据库管理器并行从所有容器中执行预取操作。如果容器数量更改,或需要增强或减少预取的积极性,请使用 ALTER table space 语句相应地修改 PREFETCHSIZE 值。 表空间的页面大小 对于执行随机行读写操作的 OLTP 应用程序,请使用较小的页面大小,因为它不会用不想要的行来浪费缓冲池空间。不过,页面大小选择应考虑以下的重要方面。
行大小大于页面大小。在这种情况下,您必须使用较大的页面大小。在考虑临时表空间的大小时,请记住,有些 SQL 操作(如,联接)可能返回一个不适合表空间页面大小的结果行。因此,您至少应该有一个临时表空间的页面大小为 32 KB。
因为选择了较大的页面大小,所以磁盘上的密度更高。例如,一个 4 KB 页面大小的表空间只可以存储一个 2100 字节的行,这浪费了几乎一半的空间。然而,如果在 32 KB 页面大小的表空间中存储一个行,那么可以大大减少这种浪费。这种方法的缺点是,可能导致更高的缓冲池存储成本或更高的 I/O 成本。在可以负担其存储成本的情况下,选择最大的页面大小。
表空间中的数据放置 以下建议是表空间的数据放置的一般性建议:
在相同的表空间中创建需要一起恢复的数据库对象,以实现更简单的备份和恢复功能。如果您有一组经常被查询的数据库对象(比如,表和索引),您可以使用一个 CREATE 或 ALTER TABLESPACE 语句,将它们所驻留的表空间指定到一个缓冲池。
分配一个缓冲池供临时表空间单独使用,以提高排序或联接等活动的性能。为每个页面大小创建一个系统临时表空间。DB2 数据库管理器使用内部算法,根据缓冲池的大小选择临时表空间。使用 SMS 表空间作为临时表空间。
对于很少访问的数据,或者需要随机访问大表的应用程序,定义较小的缓冲池。在这些情况下,数据在缓冲池中的保存时间并不需要超过单个查询的时间。