性能

本主题有助于您在使用数据访问接口时最大限度地发挥性能。

针对性能的配置

要提升性能,请使用以下方法来配置访问接口。

将 OLE DB 资源存入池中以便缩短连接启动时间

OLE DB 资源池和访问接口连接池可通过缩短连接启动时间来提高性能。 资源池通过属于 Windows 操作系统一部分的 OLE DB 服务组件启用。 您可以通过设置 OLE DB 初始化属性和注册表设置来启用 OLE DB 资源池。 有关详细信息,请参阅 OLE DB 资源池 (https://go.microsoft.com/fwlink/?LinkID=180446) 。

将访问接口资源存入池中以便缩短连接启动时间

连接池是一个客户端优化,可以缩短连接启动时间,同时降低客户端计算机上的内存使用率。 数据提供程序支持连接池。 可以使用 OLE DB 数据源初始化字符串 (Connection Pooling=True) 来指定池。 此外,还可以使用数据源向导的“高级”对话框和数据链接的“全部”对话框来配置池。

访问接口会根据“最大池大小”属性维护连接的缓存。 默认池大小为 100 个连接 (Max Pool Size=100),可以使用数据源向导或数据链接的“全部”对话框进行调整 。 对“最大池大小”属性没有上限。 如果您对“最大池大小”属性配置的值小于 0,则使用默认值 100。 或者,您可以指定数秒钟,指示数据访问接口来等待使用客户端池建立连接。 当池中的所有连接都在使用,并且超时时间已经过期时,则数据访问接口将向数据使用者返回一个错误(“连接不可用”)。 默认值为 15 秒 (Connect Timeout=15),可以使用数据源向导或数据链接的“全部”对话框进行调整 。 对“连接超时值”属性没有上限。 指定为 -1 以指示数据提供程序在客户端连接池中无限期等待公开连接。

获得数据时优化行集缓存

在并行处理行并且将其返回到数据使用者时,RowsetCacheSize 属性指示数据访问接口提前获取 DB2 中的行。 在多处理器或者多核计算机中执行批量只读操作时,此功能可提高性能。 此属性的默认值为 0 (RowsetCacheSize=0),表示可选的预提取功能处于“禁用”状态。 建议将值设置为介于 10 和 100 之间的值,初始建议值为 10,可以使用数据源向导或数据链接的“全部”对话框进行调整。 此属性指示数据访问接口提前获取存储在数据访问接口的行集缓存中的指定数量行批处理行。 根据使用者在 OLE DB IRowset::GetNextRows 接口上指定的 cRows 的值,自动确定批处理行的大小。

将具有参数的命令的准备延迟到执行前

延迟准备指示数据访问接口优化参数化 INSERT、UPDATE、DELETE 和 SELECT 命令的进程。 可以使用 ADO.NET 连接字符串或 OLE DB 数据源初始化字符串 (Defer Prepare=True) 指定此选项。 此外,还可以使用数据源向导的“高级”对话框和数据链接的“全部”对话框来配置池。 对于 INSERT、UPDATE 和 DELETE 命令,数据访问接口会将准备、执行和提交命令组合为一个到远程数据库的网络流。 对于 SELECT 命令,数据访问接口会将准备和执行命令组合为一个网络流。 这会最大程度地减少网络流量,往往会提高总体性能。

从 DB2 阴影目录中检索架构信息

阴影目录属性指示数据访问接口从 DB2 阴影目录中检索架构信息。 DB2 管理员可以将阴影目录定义为包含表、列、主键以及索引的架构信息。 所有数据使用者在设计时都使用此架构信息。 一些数据使用者在运行时使用此信息。 由于在写入(执行 create 和 alter 语句)期间进行了锁定,DB2 架构目录可能不可访问。 此外,默认的 DB2 架构可能够大,可以将滞后时间添加到设计时和运行时数据使用者操作。 执行架构提取操作时,阴影目录可以减少争用情况并提高性能。

在单个工作单元中发送多行

数据提供程序支持 OLE DB IRowsetFastLoad 接口,允许使用者(如 Integration Services)在优化批次中执行多个 INSERT 语句。 这样可以更好地使用 TCP/IP 网络包和提高整体性能。 当使用 Business Intelligence Developer Studio 包设计器配置 Integration Services 包内数据流中的 OLE DB 目标时,您可以选择 RowsetFastLoad。 IRowsetFastLoad 接口在插入到 DB2 中时受支持。 有关详细信息,请参阅 Integration Services OLE DB 目标自定义属性 的访问模式 (https://go.microsoft.com/fwlink/?LinkId=241518) 。

命令超时以便终止长时间运行的查询

数据访问接口可以提供一个命令超时属性,可以让您自动终止可能对性能产生负面影响的长时间运行的查询。 OLE DB 行集 DBPROP_COMMANDTIMEOUT 的默认值为 0,这意味着无超时。

您可以从多个使用者中指定命令超时的值。 数据访问接口提供 OLE DB 行集 DBPROP_COMMANDTIMEOUT 属性,以便让开发人员自动终止可能会对性能产生负面影响的长时间运行的查询。 Integration Services 和 Analysis Services 通过 Business Intelligence Development Studio 中的“数据源查询超时”选项公开此属性。 Reporting Services 通过 Business Intelligence Development Studio 中的“数据集属性超时”选项公开此属性。 复制和查询处理器通过sp_serveroption @optname=query 超时公开此属性。

度量性能

为了度量性能,数据访问接口提供性能计数器。 默认情况下,性能计数器将关闭。 可通过将以下注册表项的值更改为 1,打开这些计数器:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Host Integration Server\Data Integration\UpdateCounters = 1

数据访问接口的性能计数器捕获与打开的连接、打开的语句、已发送/接收的包和字节、平均主机(DB2 服务器)处理时间、命令执行、数据获取和事务提交/回滚有关的信息。 有关详细信息,请参阅 性能计数器 (https://go.microsoft.com/fwlink/?LinkID=119211) 。