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
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.