平台相容性
字碼頁轉換
此資料提供者可支援單一位元組字元集 (SBCS)、混合式位元組字元集 (MBCS)、雙位元組字元集 (DBCS) 和 Unicode - UTF8 [1208] (這是 8 位元的 Unicode 轉換格式) 的組合。
主機 CCSID
資料提供者需要主機 CCSID (Coded Character Set Identifier) 的值,以便執行字串資料的字碼頁轉換。 預設主機 CCSID 值為 Unicode - UTF8 [1208]。 一般而言,IBM Informix 資料庫伺服器會利用 Unicode。
PC 字碼頁
資料提供者需要 PC 字碼頁的值,以便執行字串資料的字碼頁轉換。 預設電腦字碼頁為 Unicode - UTF8 [1208]。 一般而言,IBM Informix 資料庫伺服器會利用 Unicode。
將二進位當成字元處理
資料提供者會根據 Informix 資料類型和 Windows 取用者資料類型,自動將 CCSID 65535) 和字元字串資料類型轉換成 (CCSID 65535 和字元字串資料類型。 Informix 編碼是由主機 CCSID 所決定。 Windows 編碼是由電腦字碼頁決定。
資料型別對應
本主題描述 OLE DB 資料類型的所有資料類型對應。
Informix 至 OLE DB 資料類型對應
下表描述 Informix 資料類型與 OLE DB 資料類型的對應。
| OLE DB 資料類型 | Informix 資料類型 | Description |
|---|---|---|
| DBTYPE_I8 | BIGINT | 大整數是 8 位元組二進位整數。 |
| DBTYPE_UI8 | bigserial | 不帶正負號的 8 位元組二進位整數。 |
| DBTYPE_Bytes | blob | 二進位大型物件是用來儲存非文字或二進位資料的不同長度字串。 |
| DBTYPE_BOOL | boolean | 布林值是一個位元組二進位檔,用來儲存 true 或 false 值。 |
| DBTYPE_Bytes | byte | 二進位大型物件是用來儲存非文字或二進位資料的不同長度字串。 |
| DBTYPE_STR | char | Character 是固定長度的 SBCS 或 MBCS 字串。 |
| DBTYPE_STR | CLOB | 不同長度的字元大型物件是不同長度的字串。 |
| DBTYPE_DBDate | date | Date 是 10 位元組字串。 |
| DBTYPE_DBTimesStamp | datetime | 時間戳記是 32 位元組的字串,代表日期、時間和微秒。 |
| DBTYPE_Decimal | decimal | 十進位數字。 |
| DBTYPE_R8 | float | Float 是 8 位元組雙精度浮點數。 |
| DBTYPE_I8 | int8 | 整數 8 是 8 位元組二進位整數。 |
| DBTYPE_I4 | 整數 | Integer 是 4 位元組二進位整數。 |
| DBTYPE_DBTimesStamp | interval | 時間戳記是 32 位元組的字串,代表日期、時間和微秒。 |
| DBTYPE_STR | lVarchar | 不同的字元是不同長度的字元字串。 |
| DBTYPE_WSTR | NCHAR | 固定長度 Unicode 字串。 |
| DBTYPE_WSTR | Nvarchar | 變動長度 Unicode 字串。 |
| DBTYPE_R4 | real | float 是 4 位元組雙精確度浮點數。 |
| DBTYPE_UI4 | serial | 不帶正負號的 4 位元組二進位整數。 |
| DBTYPE_UI8 | serial8 | 不帶正負號的 8 位元組二進位整數。 |
| DBTYPE_R4 | smallfloat | Real 是 4 位元組單精確度浮點數。 |
| DBTYPE_I2 | SMALLINT | 雙位元組二進位整數。 |
| DBTYPE_STR | text | 不同長度的字元大型物件是不同長度的字串。 |
| DBTYPE_STR | varchar | 不同的字元是不同長度的字元字串。 |
OLE DB 中的結構描述資訊是使用包含 IDBSchemaRowset::GetRowset 之預先定義的結構描述資料列集來擷取。 資料提供者公開PROVIDER_TYPES資料列集,以根據 IBM Informix 版本,向 OLE DB 資料類型指出 Informix 支援 (類型、對應、限制) 。
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 | ||
| 日期 | 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 | ||
| 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 |
效能
本主題包含下列各節,可協助您在使用 Data Provider for Informix 時發揮最大效能。
設定效能
若要改善效能,請使用下列方法設定提供者。
共用提供者資源來減少連接啟動時間
連接共用是一種用戶端最佳化處理,該處理可縮短連接啟動時間,同時減少用戶端電腦上的記憶體使用量。 OLE DB 提供者支援連線共用。 您可以使用 OLE DB 資料來源初始化字串來指定共用, (Connection Pooling=True) 。 此外,您也可以使用資料來源精靈的 [進階] 對話方塊和資料連結的 [全部] 對話方塊來設定共用。
提供者會根據 [最大共用區大小] 屬性來維持連接的快取。 預設共用區大小為 100 個連接 (最大共用區大小=100),您可以使用資料來源精靈或資料連結的 [全部] 對話方塊進行調整。 [最大共用區大小] 屬性沒有上限。 如果您為 [最大共用區大小] 屬性設定小於 0 的值,就會使用預設值 100。
您可以選擇性地指定秒數,以指示資料提供者等待使用用戶端共用建立連接。 當共用區中的所有連接都在使用中且逾時期間到期時,資料提供者會傳回錯誤訊息給資料取用者 (「無法使用連接」)。 預設值為 15 秒 (連接逾時=15),您可以使用資料來源精靈或資料連結的 [全部] 對話方塊進行調整。 [連接逾時] 屬性沒有上限。 指定 -1 以指示資料提供者無限期地等待用戶端連接共用區中開放的連接。
在取得資料時最佳化資料列快取
RowsetCacheSize 屬性會指示資料提供者從 Informix 預先擷取資料列,同時處理資料列並將資料列傳回給資料取用者。 此功能可改善多重處理器或多核心電腦上大量唯讀作業的效能。 此屬性的預設值為 0 ( RowsetCacheSize=0 ) ,表示選擇性的預先擷取功能為 「off」。 我們建議您最好設定一個介於 10 和 100 之間的值,建議的初始值為 10,您可以使用資料來源精靈或資料連結的 [全部] 對話方塊進行調整。 此屬性會指示資料提供者預先提取指定數目的資料列批次,這些批次會儲存在資料提供者的資料列集快取中。 系統會自動根據由取用者所指定的 OLE DB IRowset::GetNextRows 介面上針對 cRows 的值而決定資料列批次的大小。
延遲準備具有參數的命令,一直到執行為止。
[延遲準備] 會指示此資料提供者將參數化命令 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
資料提供者效能計數器會擷取有關開啟連線、open 語句、封包和位元組傳送/接收、平均主機 (Informix 伺服器的資訊,) 處理時間、命令執行、資料擷取,以及交易認可/回復。