您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

升级 SAP IQ 15.x

尽管 SAP IQ 16.1 中的新增功能 介绍了所有新增的 SAP IQ 功能,但某些功能可能需要您进行额外操作才能利用新体系结构。

例如,从之前版本升级的客户可能需要更改一些初始兼容性选项或重建宽列以容纳不同的数据类型。新装载引擎将提供更好的性能,但需要更改缺省内存分配以有效地使用所有可用的硬件资源。

NBit

连续 NBit 字典压缩取代了 1、2、3 字节字典压缩,作为 16.x 中的缺省列存储机制。除 LOB(字符和二进制)和 BIT 数据类型外的所有数据类型都可能是 NBit 列。

IQ UNIQUE 列约束确定将列装载为 Flat FP 还是 NBit FP。将 IQ UNIQUE 值设置为 0 会将该列装载为 Flat FP。大于 0 但小于 FP_NBIT_AUTOSIZE_LIMIT 的 值会创建最初大小为 的 NBit 列。没有 IQ UNIQUE 约束的列隐式装载为 NBit(不超过自动大小限制)。

无需使用 值小于自动大小限制的 IQ UNIQUE。装载引擎会自动将所有中低基数列的大小调整为 NBit。在非重复值的数量超出自动大小限制时,请使用 IQ UNIQUE 将列装载为 Flat FP 或 NBit。

装载和大内存

大内存表示 SAP IQ 可从操作系统动态请求以供临时使用的最大内存量。由于某些装载操作可能需要比缺省提供的 2 GB 更大的内存,所以根据可用物理内存总量调整控制大内存分配和高速缓存内存分配的启动选项。

一般情况下,大内存需求是分配到 SAP IQ 的总可用物理内存的三分之一。为确保有足够的内存可供主 IQ 存储库和临时 IQ 存储库使用,应设置 -iqlm、-iqtc 和 -iqmc 启动参数,这样每个参数都会接收到 SAP IQ 总可用物理内存的三分之一。

在大多数情况下,应将总物理内存的 80% 分配到 SAP IQ,以避免换出 SAP IQ 进程。调整实际内存分配,以容纳在同一系统中运行的其它进程。例如,在拥有 32 个内核和 128GB 总可用物理内存的计算机上,应将 100GB(大约是总计 128GB 的 80%)分配给 SAP IQ 进程。根据一般规则,要将 -iqlm、-iqtc 和 -iqmc 参数分别设置为 33GB。

请参见 SAP IQ 实用程序指南 中的“-iqlm iqsrv16 服务器选项”和“-iqmc iqsrv16 服务器选项”。

索引更改

FP 和 HG 索引更改利用新增的列压缩机制并将提高装载性能。

新快速投影 (FP) 索引

利用替换 FP(1)、FP(2) 和 FP(3) 字节字典压缩的新连续 NBit 字典压缩。FP(1)、FP(2) 和 FP(3) 索引将分别切换到 NBit(8)、NBit(16) 和 NBit(24)。

如果 FP_NBIT_IQ15_COMPATIBILITY='OFF',应用到此列的 IQ UNIQUE 约束可确定将列装载为 Flat FP 还是 NBit。

注意 由于 NBit 装载和 Flat 装载使用不同的体系结构,因此无法比较它们的装载性能。

请参见 SAP IQ 管理:数据库 中的“快速投影 (FP) 索引”。

新的分层 HG 索引结构

将装载性能与 HG 索引大小分开。在 15.x 中,装载吞吐量随着 HG 索引中数据量的增加而减少。随着索引的增加,装载相同量的数据会花费更多时间。新的分层结构将装载性能与 HG 索引大小分离以增加吞吐量。

CREATE_HG_WITH_EXACT_DISTINCTS 选项确定新创建的 HG 索引是分层索引还是不分层索引。此选项在所有新 16.1 数据库和所有从 15.x 迁移来的 16.1 数据库中均为 ON。要利用新结构,将该选项设置为 OFF。使用 sp_iqrebuildindex 将不分层 HG 索引转换成分层 HG,反之亦然。

请参见 SAP IQ SQL 参考 中的“CREATE_HG_WITH_EXACT_DISTINCTS 选项”。

存储过程

新存储过程将返回有关列索引和约束的信息:

  • sp_iqindexmetadata - 返回有关列索引的详细信息,包括索引类型(Flat FP、NBit、HG 和分层 HG)、非重复计数、IQ UNIQUE 值以及 NBit 字典大小。请参见 SAP IQ SQL 参考 中的“sp_iqindexmetadata 过程”。

  • sp_iqcolumnmetadata - 返回数据库中一个或多个用户表或所有表的 FP 索引元数据。请参见 SAP IQ SQL 参考 中的“sp_iqcolumnmetadata 过程”。

  • sp_iqindexrebuildwidedata - 标识出宽列,这些宽列在可用于读写活动之前必须重建。输出包括使用 sp_iqrebuildindex 进行重建列的语句。请参见 SAP IQ SQL 参考 中的“sp_iqindexrebuildwidedata 过程”。

  • sp_iqrebuildindex - 重建 FP 索引(Flat FP 作为 NBit,或 NBit 作为 Flat FP)和 HG 索引(单个 HG 作为分层 HG,或分层 HG 作为单个 HG)。在插入或更新新数据之前,必须重建宽度大于 255 字节的所有列。 index_clause 可以将 IQ UNIQUE 重置为显式值,范围从 0(将 NBit 列重新转换为 Flat FP)到 FP_NBIT_AUTOSIZE_LIMIT 和 FP_NBIT_LOOKUP_MB 选项定义的限值。 sp_iqrebuildindex 还可以启用对包含大对象 (LOB) 数据的列的读写访问。在运行 sp_iqrebuildindex 前,从 15.x 数据库迁移的 LOB 列为只读。IQ UNIQUE 值小于或等于 FP_NBIT_AUTOSIZE_LIMIT 的 NBit 列的估计基数存储为 0,与 FP_NBIT_IQ15_COMPATIBILITY 设置无关。这会影响从 sp_iqindexmetadata 返回的值。 请参见 SAP IQ SQL 参考 中的“sp_iqrebuildindex 过程”。

  • sp_iqrebuildindexwide - 在第一次打开 16.1 之前的非 RLV 基表以进行读写访问时,SAP IQ 会隐式重建宽度大于 255 个字符的 CHARVARCHAR、BINARY 和 VARBINARY 列,以及迁移到 SAP IQ16.1SP 02 的数据库的所有 LONG VARCHAR 和 LONG BINARY 列。 您也可以使用 sp_iqrebuildindexwide 过程显式重建宽列。sp_iqrebuildindexwide 可以按照 table_name、table_owner 和 level 重建宽表。根据参数,此过程可重建 16.0 之前所有宽度大于 255 字节的列、部分或全部标记化 FP、VARCHAR/VARBINARY 列以及数据库中指定表的所有固定 Flat FP。 请参见 SAP IQ SQL 参考 中的“sp_iqrebuildindexwide 过程”。

    数据库选项

    有些数据库选项未启用,无法利用 16.1 功能。数据库升级后保持有限的兼容性可以为转换现有应用程序提供一定的灵活性。

    FP_NBIT_IQ15_COMPATIBILITY

    提供与 15.x 中可用支持相似的标记化 FP 支持。缺省情况下,此选项在从 15.x 升级的所有 16.1 数据库中均为 ON,在所有新创建的 16.1 数据库中均为 OFF。

  • 如果此选项为 ON,则数据库引擎会使用 MINIMIZE_STORAGE、FP_LOOKUP_SIZE 和 FP_LOOKUP_SIZE_PPM 选项优化列存储。在 16.1 中忽略这些选项。

  • 如果此选项为 OFF,则数据库引擎会忽略 15.x 选项,并且列符合 SAP IQNBit 存储选项。

    将此选项设置为 OFF 即可利用 NBit 列压缩。

    CREATE_HG_WITH_EXACT_DISTINCTS

    确定使用 CREATE INDEX 命令显式创建的新 HG 索引,或通过使用 PRIMARY KEY 或 OREIGN KEY 声明创建或变更表创建的索引是分层索引还是不分层索引。此选项在所有从 15.x 升级的数据库中和所有新创建的 16.1 数据库中均为 ON 16.1。如果此选项为 ON,则所有新 HG 索引均为不分层索引。要利用新分层 HG 索引结构,将该选项设置为 OFF。

    使用 sp_iqrebuildindex 将不分层 HG 索引转换成分层 HG,反之亦然。

    CREATE_HG_AND_FORCE_PHYSICAL_DELETE

    控制 16.1 分层 HG 索引的删除行为。此选项确定 SAP IQ 是立即执行物理删除还是将删除操作推迟到装载过程中执行。

    CREATE_HG_AND_FORCE_PHYSICAL_DELETE 缺省设置为 ON,指示 SAP IQ 执行物理删除。

    REVERT_TO_V15_OPTIMIZER

    REVERT_TO_V15_OPTIMIZER 强制查询优化程序模拟 SAP IQ15.x 行为。缺省情况下,在所有从 15.x 升级的 16.1 数据库中,REVERT_TO_V15_OPTIMIZER ='ON'。缺省情况下,在所有新创建的 SAP IQ16.1 数据库中,REVERT_TO_V15_OPTIMIZER ='OFF'。

    如果计划使用 SAP IQ 散列分区功能,请在从 15.x 升级到 16.1 的数据库中设置 REVERT_TO_V15_OPTIMIZER='OFF'。