次の方法で共有


Informix のデータ プロバイダー

プラットフォームの互換性

コード ページ変換

データ プロバイダーでは、1 バイト文字セット (SBCS)、マルチバイト文字セット (MBCS)、2 バイト文字セット (DBCS)、および Unicode - UTF8 [1208] (8 ビットの Unicode 変換形式) の組み合わせがサポートされます。

ホスト CCSID

データ プロバイダーは、文字列データでコード ページ変換を実行するホスト CCSID (Coded Character Set Identifier) の値を必要とします。 既定のホスト 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 データ型へのマッピング

OLE DB データ型への Informix データ型のマッピングを次の表に示します。

OLE DB データ型 Informix データ型 説明
DBTYPE_I8 bigint Big integer は 8 バイトのバイナリ整数です。
DBTYPE_UI8 bigserial 8 バイトの符号なし整数です。
DBTYPE_Bytes blob (blob) Binary large object は、非テキスト型データまたはバイナリ データを格納するために使用される可変長の文字列です。
DBTYPE_BOOL boolean Boolean は、true または false の値を格納する 1 バイトのバイナリです。
DBTYPE_Bytes byte Binary large object は、非テキスト型データまたはバイナリ データを格納するために使用される可変長の文字列です。
DBTYPE_STR char Char は固定長の SBCS または MBCS 文字列です。
DBTYPE_STR clob 可変長の character large object は可変長文字列です。
DBTYPE_DBDate 日付 Date は 10 バイト文字列です。
DBTYPE_DBTimesStamp DATETIME timestamp は日付、時刻、およびマイクロ秒を表す 32 バイト文字列です。
DBTYPE_Decimal decimal 10 進数。
DBTYPE_R8 float Float は 8 バイト倍精度浮動小数点数です。
DBTYPE_I8 int8 integer 8 は 8 バイトのバイナリ整数です。
DBTYPE_I4 整数 (integer) Integer は 4 バイトのバイナリ整数です。
DBTYPE_DBTimesStamp interval timestamp は日付、時刻、およびマイクロ秒を表す 32 バイト文字列です。
DBTYPE_STR lvarchar Varying character は可変長の文字列です。
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 2 バイトのバイナリ整数です。
DBTYPE_STR text 可変長の character large object は可変長文字列です。
DBTYPE_STR varchar Varying character は可変長の文字列です。

OLE DB のスキーマ情報の取得には、定義済みスキーマ行セットと IDBSchemaRowset::GetRowset を使用します。 データ プロバイダーは PROVIDER_TYPES 行セットを公開し、IBM Informix バージョンに基づいて 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

パフォーマンス

このトピックに含まれるセクションは、Data Providers for Informix の使用時にパフォーマンスを最大化する上で役立ちます。

パフォーマンスを高めるための構成

パフォーマンスの計測

パフォーマンスを高めるための構成

パフォーマンスを向上させるには、次の方法でプロバイダーを構成します。

プロバイダー リソースのプールによる接続開始時間の短縮

接続プールは、接続開始時間を短縮する一方で、クライアント コンピューターでのメモリの利用を減らす、クライアント側の最適化です。 OLE DB プロバイダーは接続プールをサポートしています。 OLE DB データ ソース初期化文字列 (Connection Pooling=True) を使用してプールを指定できます。 また、データ ソース ウィザードの [詳細設定] ダイアログおよびデータ リンクの [すべて] ダイアログを使用してプールを構成できます。

プロバイダーは、Max Pool Size プロパティに基づいて接続のキャッシュを維持します。 既定のプール サイズは 100 接続 (Max Pool Size=100) ですが、データ ソース ウィザードまたはデータ リンクの [すべて] ダイアログを使用して調整できます。 "最大プール サイズ" プロパティに上限はありません。 "最大プール サイズ" プロパティに 0 未満の値を構成すると、既定値の 100 が使用されます。

オプションとして、クライアント側プールを使用して接続を確立するまで待機するようデータ プロバイダーに指示する秒数を指定できます。 プールのすべての接続が使用中でタイムアウトまでの時間が経過すると、データ プロバイダーはデータ コンシューマーに対してエラー ("接続が利用できません") を返します。 既定値は 15 秒 (Connect Timeout=15) ですが、データ ソース ウィザードまたはデータ リンクの [すべて] ダイアログを使用して調整できます。 [接続のタイムアウト] プロパティに上限はありません。 クライアント側接続プールで開いている接続を無期限に待機するようデータ プロバイダーに指示するには、-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 コマンドについては、データ プロバイダーは prepare、execute、および commit コマンドをリモート データベースへの 1 つのネットワーク フローに結合します。 SELECT コマンドについては、PREPARE および EXECUTE コマンドを 1 つのネットワーク フローに結合します。 これによってネットワーク トラフィックが最小限に抑えられると共に、多くの場合、全体的なパフォーマンスが向上します。

実行時間の長いクエリを中断するコマンド タイムアウト

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 サーバー) の平均処理時間、コマンド実行数、データ フェッチ数、トランザクションのコミット数とロールバック数に関する情報がキャプチャされます。