DB2 10.5 for Linux, UNIX, and Windows

用于提高装入性能的选项

可以使用各种命令参数来优化装入性能。还有许多对装入来说唯一的文件类型修饰符,在某些情况下,这些修饰符可以极大地提高该实用程序的性能。

命令参数

如果用户未指定 DISK_PARALLELISMCPU_PARALLELISMDATA BUFFER 参数的值,那么 LOAD 实用程序将尝试通过确定这些参数的最优值来获得最好的性能。根据实用程序堆大小及可用空间来进行优化。在尝试调整这些参数以满足特殊需要之前,请考虑使用自主 DISK_PARALLELISMCPU_PARALLELISM 设置。

以下是有关 LOAD 实用程序提供的各种选项所带来的性能影响的信息:

ALLOW READ ACCESS
此选项允许您在进行装入操作时查询表。只能查看装入操作之前表中已存在的数据。如果还指定了 INDEXING MODE INCREMENTAL 选项,并且装入操作失败,那么后续装入终止操作可能必须校正索引中的不一致。这将需要涉及大量 I/O 的索引扫描。如果还对装入终止操作指定了 ALLOW READ ACCESS 选项,那么会将缓冲池用于 I/O。
要点: 从 V10.1 FP1 开始, 已不推荐使用 ALLOW READ ACCESS 参数,在以后的发行版中可能会将其除去。 有关更多信息,请参阅已经不推荐使用 LOAD 命令中的 ALLOW READ ACCESS 参数
COPY YES 或 COPY NO
使用此参数来指定在装入操作期间是否创建输入数据的副本。仅当启用了正向恢复时,COPY YES 才适用,并且由于装入操作期间会复制所有装入数据,所以使用此参数会降低装入性能。I/O 活动增加可能会导致 I/O 绑定系统上的装入时间增加。如果指定多个设备或不同磁盘上的多个目录,那么可能会因为此操作而使性能受到影响。仅当启用了正向恢复时,COPY NO 才适用,并且它不会影响装入性能。但是,所有与已装入的表相关的表空间将处于“备份暂挂”状态,并且必须先备份这些表空间才能访问该表。
CPU_PARALLELISM
借助此参数来增加每个数据库分区运行的进程的数目(如果机器具有此功能)并大幅改进装入性能。该参数指定 LOAD 实用程序用于分析、转换、格式化数据记录的进程或线程的数目。允许的最大数目是 30。如果内存不足以支持指定值,那么实用程序将调整该值。如果未指定此参数,那么 LOAD 实用程序将根据系统上的 CPU 数目选择缺省值。
只要满足下列条件,无论此参数的值如何,都将保留源数据中的记录顺序(请参阅图 1):
  • 未指定 anyorder 文件类型修饰符
  • 未指定 PARTITIONING_DBPARTNUMS 选项(并且将多个分区用于分区)

如果表包括 LOB 或 LONG VARCHAR 数据,那么 CPU_PARALLELISM 将设置为 1。在此情况下不支持并行性。

尽管此参数并未限制为只能供对称多处理器 (SMP) 硬件使用,但在非 SMP 环境中使用它在性能方面也没什么太大益处。

图 1. 在装入操作期间增加每个数据库分区运行的进程的数目时,会保留源数据中的记录顺序
增加每个数据库分区运行的进程的数目时,会保留源数据中的记录顺序。
DATA BUFFER
DATA BUFFER 参数指定分配给 LOAD 实用程序以用作缓冲区的内存总量(以 4KB 为单位)。建议此缓冲区在大小上等于若干扩展数据块。数据缓冲区是从实用程序堆中分配出来的;但是,只要系统中有可用内存,数据缓冲区就可以超出 util_heap_sz 数据库配置参数的设置。
DISK_PARALLELISM
DISK_PARALLELISM 参数指定 LOAD 实用程序用来将数据记录写至磁盘的进程或线程数。借助此参数在装入数据时使用可用容器,从而大幅改进装入性能。允许的最大数目是 CPU_PARALLELISM 值(LOAD 实用程序使用的实际量)的四倍或 50 中较大的数字。缺省情况下,DISK_PARALLELISM 等于包含对其装入表的对象的所有表空间中的表空间容器的总和,但此值超过允许的最大值时除外。
NONRECOVERABLE
如果启用了正向恢复,那么在前滚后不需要对表恢复装入事务的情况下使用此参数。NONRECOVERABLE 装入和 COPY NO 装入具有完全相同的性能。但是,在潜在数据丢失方面却有重大差别。NONRECOVERABLE 装入将表标记为不可前滚恢复,并同时使得能够完全访问表。这可能会产生一个问题,在需要前滚装入操作的情况下,已装入的数据以及所有对表的后续更新都会丢失。COPY NO 装入使所有从属表空间处于“备份暂挂”状态,这将导致在执行备份之前,表不可访问。因为在该类型的装入后会强制您执行备份,所以您不存在丢失已装入的数据或对表的后续更新的风险。也就是说,COPY NO 装入完全可恢复。
注: 如果在后续复原和前滚恢复操作期间遇到这些装入事务,那么该表将不会更新,并且被标记为 invalid。将忽略对此表的进一步操作。在前滚操作完成后,只能删除该表。
SAVECOUNT
使用此参数来设置在装入操作的装入阶段期间建立一致点的时间间隔。为建立一致点而执行活动同步需要花一些时间。如果进行得太频繁,装入性能会大幅下降。如果要装入大量行,那么建议您指定较大的 SAVECOUNT 值(例如,在涉及 1 亿条记录的装入操作中指定值 10000000)。

只要装入重新启动操作从装入阶段恢复,该操作就会从上一个一致点自动继续。

STATISTICS USE PROFILE
收集表统计信息概要文件中指定的统计信息。即使装入操作本身的性能下降(特别是在指定 DETAILED INDEXES ALL 时),与在完成装入操作后调用 RUNSTATS 实用程序相比,使用此参数来收集数据分布和索引统计信息更有效。

为优化性能,应用程序需要尽可能最佳的数据分布和索引统计信息。一旦更新统计信息,应用程序就可以根据最新的统计信息使用新的表数据存取路径。可通过使用 BIND 命令重新绑定应用程序包来创建新的表访问路径。通过运行带有 SET PROFILE 选项的 RUNSTATS 命令来创建表统计信息概要文件。

将数据装入到大表中时,建议对 stat_heap_sz(统计信息堆大小)数据库配置参数指定较大的值。

USE <tablespace-name>
如果正在执行 ALLOW READ ACCESS 装入并且建立索引方式为 REBUILD,那么此参数允许在系统临时表空间中重建索引,并在装入操作的索引复制阶段将其复制回索引表空间。

缺省情况下,将在原始索引所在的表空间中构建完全重建的索引(也称为影子索引)。因为原始索引和影子索引同时位于同一表空间中,所以这可能会导致资源问题。如果影子索引与原始索引是在同一个表空间中构建的,那么影子索引将瞬时替换原始索引。但是,如果影子索引是在系统临时表空间中构建的,那么装入操作需要索引复制阶段,该阶段会将索引从系统临时表空间复制到索引表空间。复制阶段将涉及相当多的 I/O。如果其中任一表空间是 DMS 表空间,那么系统临时表空间的 I/O 可能不是顺序进行的。在索引复制阶段将使用 DISK_PARALLELISM 选项指定的值。

WARNINGCOUNT
使用此参数来指定强制装入操作终止之前该实用程序可返回的警告数目。如果您只需要很少警告或不需要警告,那么将 WARNINGCOUNT 参数设置为相对较小的数字。装入操作将在达到 WARNINGCOUNT 数目时停止。这允许您在尝试完成装入操作之前解决问题。

文件类型修饰符

ANYORDER

缺省情况下,LOAD 实用程序将保留源数据的记录顺序。在 SMP 环境中进行装入时,要求并行处理之间保持同步以确保保留该顺序。

在 SMP 环境中,指定 anyorder 文件类型修饰符将指示 LOAD 实用程序不保留顺序,由于这样做不必执行保留该顺序所需的同步,所以将会提高性能。但是,如果要装入的数据进行了预先排序,那么 anyorder 可能会破坏预先排好的顺序,使得后续查询也无法受益于预先排序。
注: 如果 CPU_PARALLELISM 为 1,那么 anyorder 文件类型修饰符不起作用,并且它与 SAVECOUNT 选项不兼容。
BINARYNUMERICS、ZONEDDECIMAL 和 PACKEDDECIMAL

对于固定长度的非定界 ASCII (ASC) 源数据,用二进制表示数字数据可能会提高装入时的性能。如果指定了 packeddecimal 文件类型修饰符,那么 LOAD 实用程序会使用压缩十进制格式(每个字节占两位)表示十进制数据。如果指定了 zoneddecimal 文件类型修饰符,那么 LOAD 实用程序会使用分区十进制格式(每个字节占一位)表示十进制数据。对于所有其他数字类型,如果指定了 binarynumerics 文件类型修饰符,那么 LOAD 实用程序会使用二进制格式表示数据。

注:
  • 在指定了 binarynumericspackeddecimalzoneddecimal 文件类型修饰符时,无论使用什么平台,都使用大尾数法(高字节在前面)格式表示数字数据。
  • packeddecimalzoneddecimal 文件类型修饰符互斥。
  • packeddecimalzoneddecimal 文件类型修饰符仅适用于十进制目标列,并且二进制数据必须与目标列定义匹配。
  • 在指定了 binarynumericspackeddecimalzoneddecimal 文件类型修饰符时,必须指定 reclen 文件类型修饰符。
FASTPARSE

使用时务必小心谨慎。如果知道要装入的数据有效,那么没必要让装入像对较可疑的数据那样执行那么多的语法检查。事实上,缩小语法检查的范围可以将装入性能提高大约 10% 或 20%。这可以通过使用 fastparse 文件类型修饰符来实现,该修饰符可以减少对 ASC 和 DEL 文件中用户提供的列值执行的数据检查。

NOROWWARNINGS

在装入操作期间,关于已拒绝的行的警告消息将写入指定的文件中。但是,如果 LOAD 实用程序必须处理大量已拒绝的、无效或已截断的记录,那么可能会对装入性能产生负面影响。如果预计到会产生许多警告,那么使用 norowwarnings 文件类型修饰符来抑制记录这些警告很有用。

PAGEFREESPACE、INDEXFREESPACE 和 TOTALFREESPACE

随着时间的推移,表中插入和更新的数据不断增加,重组表和索引的需求也就更迫切。一种解决方案是使用 pagefreespaceindexfreespacetotalfreespace 来增大用于表和索引的可用空间量。前两个修饰符优先于 PCTFREE 值,它们指定要作为可用空间保留的数据和索引页数的百分比,而 totalfreespace 指定要作为可用空间追加至表的总页数的百分比。