Informix 的数据提供程序

平台兼容性

代码页转换

数据访问接口支持单字节字符集 (SBCS)、混合字节字符集 (MBCS)、双字节字符集 (DBCS) 以及 Unicode - UTF8 [1208](这是 8 位 Unicode 转换格式)的组合。

主机 CCSID

“数据访问接口”要求具有一个主机 CCSID 的值(编码字符集标识符),从而在字符串数据上执行代码页转换。 默认主机 CCSID 值为 Unicode - UTF8 [1208]。 通常,IBM Informix 数据库服务器使用 Unicode。

PC 代码页

“数据访问接口”要求具有一个 PC 代码页的值,从而在字符串数据上执行代码页转换。 默认的 PC 代码页为 Unicode - UTF8 [1208]。 通常,IBM Informix 数据库服务器使用 Unicode。

以字符方式处理二进制数据

数据提供程序基于 Informix 数据类型和 Windows 使用者数据类型自动与二进制 (CCSID 65535) 和字符串数据类型相互转换。 Informix 编码由主机 CCSID 确定。 Windows 编码由 PC 代码页确定。

数据类型映射

本主题介绍对 OLE DB 数据类型的所有数据类型映射。

Informix 到 OLE DB 数据类型的映射

下表描述了 Informix 数据类型到 OLE DB 数据类型的映射。

OLE DB 数据类型 Informix 数据类型 说明
DBTYPE_I8 bigint 大整数是 8 字节二进制整数。
DBTYPE_UI8 bigserial 无符号 8 字节二进制整数。
DBTYPE_Bytes blob 二进制大对象是可变长度的字符串,用于存储非文本或二进制数据。
DBTYPE_BOOL boolean 布尔值是单字节二进制,用于存储 true 或 false 值。
DBTYPE_Bytes 字节 二进制大对象是可变长度的字符串,用于存储非文本或二进制数据。
DBTYPE_STR char Character(字符)是一个固定长度的 SBCS 或 MBCS 字符串。
DBTYPE_STR clob 可变长度的字符大对象是可变长度的字符串。
DBTYPE_DBDate date Date(日期)是一个 10 字节的字符串。
DBTYPE_DBTimesStamp datetime Timestamp(时间戳)是一个表示日期、时间和微秒的 32 字节的字符串。
DBTYPE_Decimal Decimal 十进制数。
DBTYPE_R8 FLOAT Float(浮点数)是一个 8 字节的双精度浮点数。
DBTYPE_I8 int8 整数 8 是 8 字节二进制整数。
DBTYPE_I4 integer Integer(整数)是一个 4 字节的二进制整数。
DBTYPE_DBTimesStamp interval Timestamp(时间戳)是一个表示日期、时间和微秒的 32 字节的字符串。
DBTYPE_STR lvarchar 可变字符是可变长度的字符串。
DBTYPE_WSTR nchar 固定长度的 Unicode 字符串。
DBTYPE_WSTR nvarchar 可变长度的 Unicode 字符串。
DBTYPE_R4 real 浮动是 4 字节的双精度浮点数。
DBTYPE_UI4 serial 无符号 4 字节二进制整数。
DBTYPE_UI8 serial8 无符号 8 字节二进制整数。
DBTYPE_R4 smallfloat Real(实型)是一个 4 字节的单精度浮点数。
DBTYPE_I2 smallint 2 字节二进制整数。
DBTYPE_STR text 可变长度的字符大对象是可变长度的字符串。
DBTYPE_STR varchar 可变字符是可变长度的字符串。

使用具有 IDBSchemaRowset::GetRowset 的预定义架构行集检索 OLE DB 中的架构信息。 根据 IBM Informix 版本,数据提供程序公开了 PROVIDER_TYPES 行集,以指示 Informix 对 OLE DB 数据类型的支持(类型、映射、限制)。

Informix V11

在连接到 Informix V11 时,数据提供程序支持访问这些数据类型。

Informix Type_name OLE DB data_type Column_size Minimum_scale Maximum_scale
BIGINT DBTYPE_I8 20
INT8 DBTYPE_I8 20
SERIAL8 DBTYPE_UI8 20
BIGSERIAL DBTYPE_UI8 20
BOOLEAN DBTYPE_BOOL 1
BYTE DBTYPE_BYTES 2147483647
BLOB DBTYPE_BYTES 2147483647
CHAR DBTYPE_STR 32767
TEXT DBTYPE_STR 2147483647
CLOB DBTYPE_STR 2147483647
DATE DBTYPE_DBDATE 10
DECIMAL DBTYPE_DECIMAL 32 0 32
FLOAT DBTYPE_R8 53
NCHAR DBTYPE_WSTR 32767
INTEGER DBTYPE_I4 10
SERIAL DBTYPE_UI4 10
SMALLFLOAT DBTYPE_R4 24
real DBTYPE_R4 24
SMALLINT DBTYPE_I2 5
DATETIME DBTYPE_DBTIMESTAMP 32 0 12
INTERVAL DBTYPE_DBTIMESTAMP 32 0 12
VARCHAR DBTYPE_STR 255
LVARCHAR DBTYPE_STR 32739
NVARCHAR DBTYPE_WSTR 255

性能

本主题包含以下部分,有助于在使用 Informix 的数据提供程序时最大程度地提高性能。

针对性能的配置

度量性能

针对性能的配置

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

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

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

访问接口会根据“最大池大小”属性维护连接的缓存。 默认池大小为 100 个连接数(“最大池大小=100”),您可以使用数据源向导或数据链接的“全部”对话框进行调整。 对“最大池大小”属性没有上限。 如果您对“最大池大小”属性配置的值小于 0,则使用默认值 100。

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

获得数据时优化行集缓存

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

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

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

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

Informix 的 OLE DB 提供程序提供命令超时属性,以便让开发人员能够自动终止可能会对性能产生负面影响的长时间运行的查询。

OLE DB 行集 DBPROP_COMMANDTIMEOUT 的默认值为 0,这意味着无超时。 可以从多个使用者(例如 SQL Server 2008 R2 中的使用者)指定命令超时值。

度量性能

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

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

数据提供程序的性能计数器捕获与打开的连接、打开的语句、已发送/接收的包和字节、平均主机(Informix 服务器)处理时间、命令执行、数据提取和事务提交/回滚有关的信息。