Informix 数据提供者

平台兼容性

代码页转换

数据提供程序支持单字节字符集(SBCS)、混合字节字符集(MBCS)双字节字符集(DBCS)和 Unicode - UTF8 [1208]的组合,这是一种 8 位 Unicode 转换格式。

主机 CCSID

数据提供程序需要主机 CCSID(编码字符集标识符)的值,用于对字符串数据执行代码页转换。 默认主机 CCSID 值为 Unicode - UTF8 [1208]。 通常,IBM Informix 数据库服务器使用 Unicode。

电脑代码页

数据提供程序需要 PC 代码页的值,用于对字符串数据执行代码页转换。 默认电脑代码页为 Unicode - UTF8 [1208]。 通常,IBM Informix 数据库服务器使用 Unicode。

将二进制文件处理为字符

数据提供程序会根据 Informix 数据类型和 Windows 使用者数据类型,自动在二进制(CCSID 65535)和字符串数据类型之间转换。 Informix 编码由主机 CCSID 确定。 Windows 编码由电脑代码页确定。

数据类型映射

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

Informix 到 OLE DB 数据类型映射

下表介绍了 Informix 数据类型映射到 OLE DB 数据类型。

OLE DB 数据类型 Informix 数据类型 说明
DBTYPE_I8 bigint 大整数是一个 8 字节二进制整数。
DBTYPE_UI8 bigserial 无符号 8 字节二进制整数。
DBTYPE_Bytes blob 二进制大型对象是用于存储非文本或二进制数据的可变长度字符串。
DBTYPE_BOOL 布尔 布尔值是用于存储 true 或 false 值的单个字节二进制文件。
DBTYPE_Bytes 字节 二进制大型对象是用于存储非文本或二进制数据的可变长度字符串。
数据库类型_字符串 字符型 字符是固定长度的 SBCS 或 MBCS 字符串。
数据库类型_字符串 Clob 不同长度的字符大型对象是一个不同长度的字符串。
DBTYPE_DBDate date 日期是一个 10 字节字符串。
DBTYPE_DBTimesStamp 日期/时间 时间戳是表示日期、时间和微秒的 32 字节字符串。
DBTYPE_Decimal 十进制 十进制数。
DBTYPE_R8 float 浮点数是一个 8 字节双精度浮点数。
DBTYPE_I8 int8 整数 8 是一个 8 字节二进制整数。
DBTYPE_I4 整数 整数是一个 4 字节二进制整数。
DBTYPE_DBTimesStamp 间隔 时间戳是表示日期、时间和微秒的 32 字节字符串。
数据库类型_字符串 lvarchar 不同的字符是一个不同长度的字符串。
DBTYPE_WSTR nchar 固定长度的 Unicode 字符串。
DBTYPE_WSTR nvarchar 可变长度的 Unicode 字符串。
DBTYPE_R4 real 浮点数是 4 字节双精度浮点数。
DBTYPE_UI4 串行 无符号 4 字节二进制整数。
DBTYPE_UI8 serial8 无符号 8 字节二进制整数。
DBTYPE_R4 smallfloat 实数是 4 字节单精度浮点数。
DBTYPE_I2 smallint 双字节二进制整数。
数据库类型_字符串 文本消息 不同长度的字符大型对象是一个不同长度的字符串。
数据库类型_字符串 varchar 不同的字符是一个不同长度的字符串。

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

Informix V11

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

Informix Type_name OLE DB 数据类型 列大小 Minimum_scale 最大缩放比例
BIGINT DBTYPE_I8 20
INT8 DBTYPE_I8 20
SERIAL8 DBTYPE_UI8 20
BIGSERIAL DBTYPE_UI8 20
BOOLEAN DBTYPE_BOOL 1
字节 DBTYPE_BYTES 2147483647
BLOB DBTYPE_BYTES 2147483647
CHAR 数据库类型_字符串 32767
文本 数据库类型_字符串 2147483647
CLOB 数据库类型_字符串 2147483647
DATE DBTYPE_DBDATE(数据库日期类型) 10
DECIMAL DBTYPE_DECIMAL 32 0 32
FLOAT DBTYPE_R8 53
NCHAR DBTYPE_WSTR 32767
INTEGER DBTYPE_I4 10
串行 DBTYPE_UI4 10
SMALLFLOAT DBTYPE_R4 24
真实 DBTYPE_R4 24
SMALLINT DBTYPE_I2 5
DATETIME DBTYPE_DBTIMESTAMP 32 0 12
间隔 DBTYPE_DBTIMESTAMP 32 0 12
VARCHAR 数据库类型_字符串 255
LVARCHAR 数据库类型_字符串 32739
NVARCHAR DBTYPE_WSTR 255

性能

本主题包含以下部分,这些部分将帮助你在使用 Data Provider for Informix 时最大程度地提高性能。

为性能优化进行配置

测量性能

配置以优化性能

若要提高性能,请通过以下方式配置提供程序。

汇集资源以减少连接启动时间

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

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

(可选)可以指定秒数,以指示数据提供程序等待使用客户端池建立连接。 当池中的所有连接都正在使用且超时期限过期时,数据提供程序将向数据使用者返回错误(“连接不可用”)。 默认值为 15 秒(连接超时=15),可以使用数据源向导或数据链接的“所有”对话框进行调整。 Connect Timeout 属性没有上限。 指定 -1 以指示数据提供程序无限期等待客户端连接池中的打开连接。

获取数据时优化行集缓存

RowsetCacheSize 属性指示数据提供程序预取 Informix 的行,同时处理这些行并将其返回给数据使用者。 此功能可以提高多处理器或多核计算机上的批量只读操作的性能。 此属性的默认值为 0(RowsetCacheSize=0),指示可选的预提取功能为“off”。 建议设置介于 10 到 100 之间的值,初始建议值为 10,可以使用数据源向导或数据链接的“所有”对话框进行调整。 此属性指示数据提供程序预提取到指定数量的行批,这些行批存储在数据提供程序的缓存行集中。 行数据批次的大小根据使用者指定的 OLE DB IRowset::GetNextRows 接口上的 cRows 值自动确定。

延迟参数命令的准备直至执行

Defer Prepare 指示数据提供程序优化参数化 INSERT、UPDATE、DELETE 和 SELECT 命令的处理。 可以使用 OLE DB 数据源初始化字符串(Defer Prepare=True)指定此选项。 此外,还可以使用数据源向导的 “高级” 对话框和数据链接的 “全部” 对话框配置池。 对于 INSERT、UPDATE 和 DELETE 命令,数据提供程序会将准备、执行和提交命令合并到远程数据库的一个网络流中。 对于 SELECT 命令,数据提供程序会将准备和执行命令合并到一个网络流中。 这样可以最大程度地减少网络流量,并经常提高整体性能。

用于超时终止长时间运行查询的命令

OLE DB Provider for Informix 提供命令超时属性,使开发人员能够自动终止长时间运行的查询,这些查询可能会对性能产生不利影响。

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

测量性能

为了衡量性能,数据提供程序提供性能计数器。 默认情况下,性能计数器处于关闭状态。 通过将以下注册表项的值更改为 1,可以打开它们:

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

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