平台相容性
程式碼頁轉換
資料提供者支援單位元組字元集(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 | 大劇集 | 一個無符號的 8 位元組二進位整數。 |
| DBTYPE_Bytes | blob | 二進位大型物件是一種可變長度的字串,用於儲存非文字或二進位資料。 |
| DBTYPE_BOOL | 布爾值 | 布林值是一種單位元組的二進位,用來儲存真值或假值。 |
| DBTYPE_Bytes | 位元組 | 二進位大型物件是一種可變長度的字串,用於儲存非文字或二進位資料。 |
| DBTYPE_STR | Char | 字元是固定長度的 SBCS 或 MBCS 字串。 |
| DBTYPE_STR | 咔嚓 | 可變長度字元大型物件是可變長度字串。 |
| DBTYPE_DBDate(資料庫日期類型) | date | 日期是一個 10 位元組的字串。 |
| DBTYPE_DBTimesStamp | 日期時間 | 時間戳記是一個 32 位元組的字串,代表日期、時間和微秒。 |
| DBTYPE_Decimal | 十進位 | 十進位數。 |
| DBTYPE_R8 | float | 浮點數是一個 8 位元組的雙精度浮點數。 |
| DBTYPE_I8 | int8 | 整數 8 是 8 位元組的二進位整數。 |
| DBTYPE_I4 | 整數 | 整數是 4 位元組的二進位整數。 |
| DBTYPE_DBTimesStamp | 間隔 | 時間戳記是一個 32 位元組的字串,代表日期、時間和微秒。 |
| DBTYPE_STR | Lvarchar | 變化字元是長度可變的字串。 |
| DBTYPE_WSTR | NCHAR | 一個固定長度的 Unicode 字串。 |
| DBTYPE_WSTR | NVARCHAR | 一個可變長度的 Unicode 字串。 |
| DBTYPE_R4 | 真實的 | 浮點數是一種 4 位元組的雙精度浮點數。 |
| DBTYPE_UI4 | 連載的 | 一個無符號的 4 位元組二進位整數。 |
| DBTYPE_UI8 | 連續劇8 | 一個無符號的 8 位元組二進位整數。 |
| DBTYPE_R4 | 小浮動 | 實數是一個 4 位元組的單精度浮點數。 |
| DBTYPE_I2 | smallint | 一個兩位元組的二進位整數。 |
| DBTYPE_STR | 收發簡訊 | 可變長度字元大型物件是可變長度字串。 |
| DBTYPE_STR | 瓦查爾 | 變化字元是長度可變的字串。 |
OLE DB 中的結構資訊是透過預先定義的結構列集取得,並使用 IDBSchemaRowset::GetRowset。 資料提供者會公開PROVIDER_TYPES列集,以指示 Informix 對 OLE DB 的資料型別支援(類型、映射、限制),基於 IBM Informix 版本。
Informix V11
資料提供者在連接 Informix V11 時支援存取這些資料型態。
| Informix Type_name | OLE DB 資料類型 | 欄位大小 | 最小比例尺 | 最大比例尺 |
|---|---|---|---|---|
| BIGINT | DBTYPE_I8 | 20 | ||
| INT8 | DBTYPE_I8 | 20 | ||
| SERIAL8 | DBTYPE_UI8 | 20 | ||
| 大整數序列 | DBTYPE_UI8 | 20 | ||
| BOOLEAN | DBTYPE_BOOL | 1 | ||
| 位元組 | DBTYPE_BYTES | 2147483647 | ||
| BLOB | DBTYPE_BYTES | 2147483647 | ||
| CHAR | DBTYPE_STR | 32767 | ||
| 簡訊 | DBTYPE_STR | 2147483647 | ||
| CLOB | DBTYPE_STR | 2147483647 | ||
| DATE | DBTYPE_DBDATE | 10 | ||
| 十進位 | DBTYPE_DECIMAL(十進位資料型別) | 32 | 0 | 32 |
| FLOAT | DBTYPE_R8 | 53 | ||
| NCHAR | DBTYPE_WSTR | 32767 | ||
| 整數 | DBTYPE_I4 | 10 | ||
| 連載的 | DBTYPE_UI4 | 10 | ||
| 小浮動 | DBTYPE_R4 | 24 | ||
| 真的 | DBTYPE_R4 | 24 | ||
| 斯莫林特 | DBTYPE_I2 | 5 | ||
| 日期時間 | 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 資料來源初始化字串(Connection Pooling=True)來指定池化。 此外,你也可以使用資料來源嚮導的進階對話框和資料連結的所有對話框來設定池化。
提供者根據最大連接池大小屬性維護連線快取。 預設的池大小是 100 個連線(最大池大小=100),你可以透過資料來源嚮導的「全部」對話框或資料連結來調整。 最大泳池容量物業沒有上限。 如果你設定了 Max Pool Size 屬性的小於 0,則會使用預設值 100。
你可以選擇指定秒數,指示資料提供者等待以用戶端池建立連線。 當池中所有連線都在使用且逾時期結束時,資料提供者會向資料使用者回傳錯誤訊息(「連線不可用」)。 預設時間為 15 秒(連線逾時=15),你可以透過資料來源嚮導的「全部」對話框或資料連結來調整。 Connect Timeout 屬性沒有上限。 指定 -1 指示資料提供者無限期等待客戶端連線池中的開啟連線。
在取得資料時,優化行集快取
RowsetCacheSize 屬性指示資料提供者在處理與回傳資料列給資料消費者的同時,從 Informix 預先擷取資料列。 此功能可能提升多處理器或多核心電腦的唯讀運算效能。 此屬性的預設值為 0(RowsetCacheSize=0),表示可選的預取功能已「關閉」。 我們建議設定 10 到 100 之間的值,初始建議值為 10,您可以使用資料來源嚮導或資料連結中的「全部」對話框調整。 此特性指示資料提供者預先取出指定數量的列批次,這些批次會儲存在資料提供者的列集快取中。 列批次的大小會根據消費者指定的 OLE DB IRowset::GetNextRows 介面上的 cRows 值自動決定。
延遲準備帶有參數的指令直到執行
Defer Prepare 指示資料提供者優化參數化的 INSERT、UPDATE、DELETE 和 SELECT 指令的處理。 你可以使用 OLE DB 資料來源初始化字串(Defer Prepare=True)來指定此選項。 此外,你也可以使用資料來源嚮導的進階對話框和資料連結的所有對話框來設定池化。 對於 INSERT、UPDATE 和 DELETE 指令,資料提供者會將準備、執行和提交指令合併成一個網路流程,傳送到遠端資料庫。 對於 SELECT 指令,資料提供者將準備與執行指令合併成一個網路流程。 這能減少網路流量,並經常提升整體效能。
指令逾時以終止長時間執行的查詢
Informix 的 OLE DB Provider 提供指令逾時特性,讓開發者能自動終止可能影響效能的長期查詢。
OLE DB Rowset DBPROP_COMMANDTIMEOUT 的預設值為 0,表示沒有逾時。 你可以從多個消費者(例如 SQL Server 2008 R2)指定指令逾時值。
績效衡量
為了衡量效能,資料提供者會提供效能計數器。 預設情況下,效能計數器是關閉的。 可透過將以下登錄表金鑰的值改為 1 來開啟:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Host Integration Server\Data Integration\UpdateCounters = 1
資料提供者效能計數器可擷取關於開啟連線、開啟語句、封包與位元組的傳送/接收、平均主機(Informix 伺服器)處理時間、指令執行、資料擷取及交易提交/回滾等資訊。