Freigeben über


Datenanbieter für Informix

Plattformkompatibilität

Codepagekonvertierungen

Der Datenanbieter unterstützt eine Kombination aus Single-Byte-Zeichensätzen (Single Byte Character Sets, SBCS), Mixed-Byte-Zeichensätzen (Mixed-Byte Character Sets, MBCS), Double-Byte-Zeichensätzen (Double-Byte Character Set, DBCS) und Unicode – UTF8 [1208]. Dabei handelt es sich um ein 8-Bit-Unicode-Transformationsformat.

Host-CCSID

Der Datenanbieter erfordert einen Wert für Host-CCSID (Coded Character Set Identifier), mit dem Codepagekonvertierungen für Zeichenfolgedaten ausgeführt werden. Der CCSID-Standardwert des Hosts ist Unicode – UTF8 [1208]. In der Regel verwenden IBM Informix-Datenbankserver den Unicode.

PC-Codepage

Der Datenanbieter erfordert einen Wert für die PC-Codepage, mit dem Codepagekonvertierungen für Zeichenfolgedaten ausgeführt werden. Die Standard-PC-Codepage ist Unicode – UTF8 [1208]. In der Regel verwenden IBM Informix-Datenbankserver den Unicode.

Binärwerte als Zeichen verarbeiten

Der Datenanbieter wird basierend auf dem Informix-Datentyp und dem Windows-Konsumentendatentyp automatisch in und aus binären Datentypen (CCSID 65535) und Zeichenfolgendatentypen konvertiert. Die Informix-Codierung wird durch die Host-CCSID bestimmt. Die Windows-Codierung wird durch die PC-Codepage bestimmt.

Datentypzuordnung

In diesem Thema werden alle Datentypzuordnungen OLE DB-Datentypen beschrieben.

Datentypzuordnung Informix zu OLE DB

In der folgenden Tabelle werden die Zuordnungen von Informix-Datentypen zu OLE DB-Datentypen beschrieben.

OLE DB-Datentyp Informix-Datentyp Beschreibung
DBTYPE_I8 BIGINT Ein großer Integer ist eine binäre 8-Byte-Ganzzahl.
DBTYPE_UI8 bigserial Eine binäre 8-Byte-Ganzzahl ohne Vorzeichen.
DBTYPE_Bytes Blob Ein Blob (Binary Large Object) ist eine Zeichenfolge variabler Länge, die zum Speichern von Nicht-Text- oder Binärdaten verwendet wird.
DBTYPE_BOOL boolean Ein boolescher Wert ist eine einzelne Byte-Binärdatei zum Speichern eines TRUE- oder FALSE-Wertes.
DBTYPE_Bytes byte Ein Blob (Binary Large Object) ist eine Zeichenfolge variabler Länge, die zum Speichern von Nicht-Text- oder Binärdaten verwendet wird.
DBTYPE_STR char Ein Zeichen ist eine SBCS- oder MBCS-Zeichenfolge fester Länge.
DBTYPE_STR CLOB Ein CLOB (Character Large Object) variabler Länge ist eine Zeichenfolge variabler Länge.
DBTYPE_DBDate date Ein Datum ist eine 10-Byte-Zeichenfolge.
DBTYPE_DBTimesStamp datetime Ein Zeitstempel ist eine 32-Byte-Zeichenfolge, die das Datum, die Uhrzeit und die Mikrosekunden wiedergibt.
DBTYPE_Decimal Decimal Eine Dezimalzahl.
DBTYPE_R8 float Eine Fließkommazahl mit doppelter Genauigkeit und 8 Bytes.
DBTYPE_I8 int8 Ein großer Integer ist eine binäre 8-Byte-Ganzzahl.
DBTYPE_I4 integer Eine Ganzzahl ist eine binäre 4-Byte-Ganzzahl.
DBTYPE_DBTimesStamp interval Ein Zeitstempel ist eine 32-Byte-Zeichenfolge, die das Datum, die Uhrzeit und die Mikrosekunden wiedergibt.
DBTYPE_STR lvarchar Ein variables Zeichen ist eine SBCS- oder MBCS-Zeichenfolge variabler Länge.
DBTYPE_WSTR NCHAR Unicode-Zeichenfolgendaten mit fester Länge.
DBTYPE_WSTR NVARCHAR Eine Unicode-Zeichenfolge variabler Länge.
DBTYPE_R4 real Eine Fließkommazahl mit doppelter Genauigkeit und 4 Bytes.
DBTYPE_UI4 serial Eine binäre 4-Byte-Ganzzahl ohne Vorzeichen.
DBTYPE_UI8 serial8 Eine binäre 8-Byte-Ganzzahl ohne Vorzeichen.
DBTYPE_R4 smallfloat Eine Fließkommazahl mit einfacher Genauigkeit und 4 Bytes.
DBTYPE_I2 SMALLINT Eine binäre 2-Byte-Ganzzahl.
DBTYPE_STR text Ein CLOB (Character Large Object) variabler Länge ist eine Zeichenfolge variabler Länge.
DBTYPE_STR varchar Ein variables Zeichen ist eine SBCS- oder MBCS-Zeichenfolge variabler Länge.

Schemainformationen werden in OLE DB mithilfe vordefinierter Schemarowsets mithilfe von IDBSchemaRowset::GetRowset abgerufen. Der Datenanbieter hat das PROVIDER_TYPES-Rowset bereitgestellt, um die Datentypunterstützung von DB2 nach OLE DB (Datentypen, Zuordnungen, Grenzwerte) basierend auf der IBM Informix-Version anzuzeigen.

Informix V11

Der Datenanbieter unterstützt den Zugriff auf diese Datentypen, wenn eine Verbindung mit Informix V11 besteht.

Informix Typ_Name OLE DB-Daten_typ Spaltengröße Minimale Skalierung Maximale Skalierung
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
GLEITKOMMAZAHL 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

Leistung

Dieses Thema enthält die folgende Abschnitte, die Ihnen beim Maximieren der Leistung helfen, wenn Sie die Datenanbieter für Informix verwenden.

Konfigurieren der Leistung

Messen der Leistung

Konfigurieren der Leistung

Konfigurieren Sie die Anbieter wie Folgend, um die Leistung zu verbessern.

Pooling von Anbieterressourcen, um die Dauer des Verbindungsstarts zu verkürzen

Verbindungspooling ist eine clientseitige Optimierung, die die Dauer des Verbindungsstarts verkürzt und die Arbeitsspeicherauslastung auf dem Clientcomputer verringert. Der OLE DB-Anbieter unterstützt Verbindungspooling. Sie können das Pooling mithilfe der ADO.NET-Verbindungszeichenfolge oder der Initialisierungszeichenfolge von OLE DB-Datenquellen (Connection Pooling=True) angeben. Sie können Pooling auch mithilfe des Dialogfelds Erweitert des Datenquellen-Assistenten oder auf der Registerkarte Alle im Dialogfeld Datenverknüpfungen konfigurieren.

Der Anbieter verwaltet basierend auf der Eigenschaft Max. Poolgröße einen Verbindungscache. Die Standardpoolgröße umfasst 100 Verbindungen (Max Pool Size=100). Sie können diesen Wert mithilfe des Dialogfelds Alle des Datenquellen-Assistenten oder des Dialogfelds Datenverknüpfungen anpassen. Es gibt keine Obergrenze für die Eigenschaft Max. Poolgröße. Wenn Sie für die Eigenschaft Max. Poolgröße einen kleineren Wert als 0 konfigurieren, wird der Standardwert 100 verwendet.

Optional können Sie die Anzahl von Sekunden angeben, die der Datenanbieter warten soll, bis mithilfe von clientseitigem Pooling Verbindungen hergestellt werden. Wenn alle Verbindungen in einem Pool in Gebrauch sind und der Timeoutzeitraum abläuft, gibt der Datenanbieter einen Fehler ("Die Verbindung ist nicht verfügbar") an den Datenconsumer zurück. Der Standardwert ist 15 Sekunden (Connect Timeout=15). Sie können diesen Wert mithilfe des Dialogfelds Alle des Datenquellen-Assistenten oder des Dialogfelds Datenverknüpfungen anpassen. Es gibt keine Obergrenze für die Eigenschaft Verbindungstimeout. Geben Sie „–1“ an, um den Datenanbieter anzuweisen, unbegrenzt lange auf eine offene Verbindung auf Seiten des clientseitigen Verbindungspools zu warten.

Optimieren des Rowsetcaches beim Abrufen von Daten

Die Eigenschaft RowSetCacheSize weist den Datenanbieter an, Zeilen von Informix vorab abzurufen, während gleichzeitig Zeilen verarbeitet und an den Datenkonsumenten zurückgegeben werden. Diese Funktion kann die Leistung in schreibgeschützten Massenoperationen auf Computern mit mehreren Prozessoren bzw. Kernen verbessern. Der Standardwert für diese Eigenschaft ist 0 (RowsetCacheSize=0). Die optionale Vorabruffunktion ist somit „deaktiviert“. Es wird empfohlen, einen Wert zwischen 10 und 100 mit einem empfohlenen Anfangswert von 10 festzulegen. Sie können diesen Wert mithilfe des Dialogfelds Alle des Datenquellen-Assistenten oder des Dialogfelds Datenverknüpfungen anpassen. Auf diese Weise wird der Datenanbieter angewiesen, die angegebene Anzahl von Tabellenzeilen vorab abzurufen, die im Rowsetcache des Datenanbieters gespeichert werden. Die Größe der Tabellenzeilen wird automatisch basierend auf dem Wert für cRows in der vom Consumer festgelegten OLE DB-Schnittstelle IRowset::GetNextRows bestimmt.

Die Vorbereitung von Befehlen mithilfe von Parametern bis zur Ausführung zurückstellen

Die Eigenschaft „Defer Prepare“ (Vorbereitung zurücksetzen) weist den Datenanbieter an, die Verarbeitung von parametrisierten INSERT-, UPDATE-, DELETE- und SELECT-Befehlen zu optimieren. Sie können diese Option mithilfe der ADO.NET-Verbindungszeichenfolge oder der Initialisierungszeichenfolge der OLE DB-Datenquellen (Defer Prepare=TRUE) spezifizieren. Sie können Pooling auch mithilfe des Dialogfelds Erweitert des Datenquellen-Assistenten oder auf der Registerkarte Alle im Dialogfeld Datenverknüpfungen konfigurieren. Für die INSERT-, UPDATE- und DELETE-Befehle fasst der Datenanbieter Vorbereitungs- und Ausführungsbefehle sowie Befehle zum Ausführen von Commits in einem Netzwerkdatenstrom für die Remotedatenbank zusammen. Für die SELECT-Anweisung fasst der Datenanbieter Vorbereitungs- und Ausführungsbefehle in einem Netzwerkdatenstrom zusammen. Auf diese Weise wird der Netzwerkverkehr minimiert und häufig die Gesamtleistung verbessert.

Festlegen eines Timeouts, um Abfragen mit langer Ausführungszeit zu beenden

Der OLE DB-Anbieter für Informix bietet eine Befehlstimeouteigenschaft, mit der Entwickler Abfragen mit langer Ausführungszeit, die sich negativ auf die Leistung auswirken können, automatisch beenden können.

Der Standardwert für das OLE DB-Rowset DBPROP_COMMANDTIMEOUT ist 0. Dies bedeutet, dass kein Timeout auftritt. Sie können den Wert für das Befehlstimeout für mehrere Konsumenten angeben, z. B. die Konsumenten auf dem SQL Server 2008 R2.

Messen der Leistung

Der Datenanbieter stellt Leistungsindikatoren zum Messen der Leistung bereit. Standardmäßig sind die Leistungsindikatoren deaktiviert. Sie können aktiviert werden, indem der folgende Registrierungsschlüssel auf den Wert 1 festgelegt wird:

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

Die Leistungsindikatoren des Datenanbieters zeichnen Informationen zu offenen Verbindungen, offenen Anweisungen, gesendeten und empfangenen Paketen und Bytes, der durchschnittlichen Verarbeitungszeit des Hosts (Informix-Server), Befehlsausführungen, Datenabrufen und Commits/Rollbacks von Transaktionen auf.