Fournisseur de données pour Informix
Compatibilité de la plateforme
Conversions de pages de code
Le fournisseur de données prend en charge une combinaison de jeux de caractères codés sur un octet (SBCS), de jeux de caractères de largeur mixte (MBCS), de jeux de caractères codés sur deux octets (DBCS) et de jeux de caractères Unicode - UTF8 [1208], qui est un format de transformation Unicode de 8 bits.
CCSID de l'hôte
Le fournisseur de données requiert une valeur pour le CCSID (Coded Character Set Identifier) de l'hôte avec lequel exécuter des conversions de page de codes sur des données de chaîne. La valeur CCSID de l’hôte par défaut est Unicode - UTF8 [1208]. En règle générale, les serveurs de bases de données IBM Informix utilisent Unicode.
Page de codes PC
Le fournisseur de données requiert une valeur pour la page de codes PC avec laquelle exécuter des conversions de page de codes sur des données de chaîne. La page de codes PC par défaut est Unicode - UTF8 [1208]. En règle générale, les serveurs de bases de données IBM Informix utilisent Unicode.
Traiter le binaire comme caractère
Le fournisseur de données convertit automatiquement (en entrée et en sortie) les données de type binaire (CCSID 65535) et chaîne de caractères, en fonction du type de données Informix et du type de données du consommateur Windows. L’encodage Informix est déterminé par le CCSID hôte. L’encodage Windows est déterminé par la page de codes PC.
Mappage de type de données
Cette rubrique décrit les mappages de tous les types de données aux types de données OLE DB.
Mappage des types de données Informix à OLE DB
Le tableau suivant décrit les mappages des types de données Informix aux types de données OLE DB.
Type de données OLE DB | Type de données Informix | Description |
---|---|---|
DBTYPE_I8 | bigint | Un grand entier est un entier binaire codé sur 8 octets. |
DBTYPE_UI8 | bigserial | Entier binaire non signé codé sur 8 octets. |
DBTYPE_Bytes | objet BLOB | Un objet blob (Binary Large Object) est une chaîne de longueur variable servant à stocker des données binaires ou non textuelles. |
DBTYPE_BOOL | boolean | Une valeur booléenne est une donnée binaire codée sur un seul octet pour stocker une valeur true ou false. |
DBTYPE_Bytes | byte | Un objet blob (Binary Large Object) est une chaîne de longueur variable servant à stocker des données binaires ou non textuelles. |
DBTYPE_STR | char | Il s'agit d'une chaîne SBCS ou MBCS de longueur fixe. |
DBTYPE_STR | clob | Un objet CLOB (Character Large Object) de longueur variable est une chaîne de longueur variable. |
DBTYPE_DBDate | Date | Il s'agit d'une chaîne codée sur 10 octets. |
DBTYPE_DBTimesStamp | DATETIME | Un horodatage est une chaîne codée sur 32 octets représentant la date, l’heure et les microsecondes. |
DBTYPE_Decimal | Décimal | Nombre décimal. |
DBTYPE_R8 | float | Il s'agit d'un nombre à virgule flottante double précision codé sur 8 octets. |
DBTYPE_I8 | int8 | Un entier 8 est un entier binaire codé sur 8 octets. |
DBTYPE_I4 | entier | Il s'agit d'un entier binaire codé sur 4 octets. |
DBTYPE_DBTimesStamp | interval | Un horodatage est une chaîne codée sur 32 octets représentant la date, l’heure et les microsecondes. |
DBTYPE_STR | lvarchar | Une chaîne de caractères variable est une chaîne de caractères de longueur variable. |
DBTYPE_WSTR | NCHAR | Chaîne Unicode de longueur fixe. |
DBTYPE_WSTR | NVARCHAR | Chaîne Unicode de longueur variable. |
DBTYPE_R4 | real | Une donnée float est un nombre à virgule flottante double précision codé sur 4 octets. |
DBTYPE_UI4 | serial | Entier binaire non signé codé sur 4 octets. |
DBTYPE_UI8 | serial8 | Entier binaire non signé codé sur 8 octets. |
DBTYPE_R4 | smallfloat | Il s'agit d'un nombre à virgule flottante simple précision codé sur 4 octets. |
DBTYPE_I2 | SMALLINT | Entier binaire codé sur deux octets. |
DBTYPE_STR | texte | Un objet CLOB (Character Large Object) de longueur variable est une chaîne de longueur variable. |
DBTYPE_STR | varchar | Une chaîne de caractères variable est une chaîne de caractères de longueur variable. |
Les informations sur le schéma contenues dans OLE DB sont extraites à l'aide d'ensembles de lignes de schéma prédéfinis avec IDBSchemaRowset::GetRowset. Le fournisseur de données a exposé l’ensemble de lignes PROVIDER_TYPES pour indiquer la prise en charge des types de données Informix et OLE DB (types, mappages, limites) en fonction de la version d’IBM Informix.
Informix V11
Le fournisseur de données prend en charge l’accès à ces types de données quand il est connecté à Informix V11.
Type_name Informix | data_type OLE DB | 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 |
Performances
Cette rubrique contient les sections suivantes, qui vous aideront à optimiser les performances liées à l’utilisation du fournisseur de données pour Informix.
Configuration pour optimiser le niveau de performance
Configuration pour optimiser le niveau de performance
Pour améliorer les performances, configurez les fournisseurs en suivant les instructions indiquées ci-dessous.
Regrouper les ressources du fournisseur pour réduire le temps de démarrage de la connexion
Le regroupement des connexions est une optimisation côté client qui permet de réduire le temps de démarrage de la connexion tout en réduisant l'utilisation de la mémoire sur l'ordinateur client. Le fournisseur OLE DB prend en charge le regroupement de connexions. Vous pouvez spécifier le regroupement à l’aide de la chaîne d’initialisation de source de données OLE DB (Connection Pooling=True). En outre, vous pouvez configurer le regroupement à l'aide de la boîte de dialogue Avancé de l'Assistant Source de données et à l'aide de l'onglet Toutes de la boîte de dialogue Liaisons de données.
Le fournisseur gère un cache de connexions sur la base d'une propriété Taille de pool max. La taille du regroupement par défaut est de 100 connexions (Max Pool Size=100) ; vous pouvez toutefois ajuster cette valeur à l'aide de la boîte de dialogue Toutes de l'Assistant Source de données ou des liaisons de données. Il n'y a aucune limite supérieure pour la propriété Taille de pool max. Si vous configurez une valeur inférieure à 0 pour la propriété Taille de pool max, la valeur par défaut 100 est utilisée.
À titre facultatif, vous pouvez spécifier un nombre de secondes afin d'indiquer au fournisseur de données d'attendre pour établir des connexions à l'aide du regroupement côté client. Lorsque toutes les connexions d'un regroupement sont en cours d'utilisation et que le délai de connexion expire, le fournisseur de données renvoie une erreur au consommateur de données (« Connexion non disponible »). La valeur par défaut est de 15 secondes (Connect Timeout=15) ; vous pouvez toutefois ajuster cette valeur à l'aide de la boîte de dialogue Toutes de l'Assistant Source de données ou des liaisons de données. Il n'y a aucune limite supérieure pour la propriété Connect Timeout. Spécifiez la valeur -1 pour indiquer au fournisseur de données d’attendre indéfiniment une connexion ouverte dans le pool de connexions côté client.
Optimiser le cache d'ensemble de lignes lors de l'obtention des données
La propriété RowsetCacheSize indique au fournisseur de données de préextraire les lignes d’Informix tout en traitant et en retournant simultanément les lignes au consommateur de données. Cette fonctionnalité peut améliorer les performances des opérations de lecture seule en bloc sur les ordinateurs multiprocesseurs ou multicœurs. La valeur par défaut de cette propriété est 0 (RowsetCacheSize=0), ce qui indique que la fonctionnalité facultative de préextraction est « désactivée ». Il est conseillé de définir une valeur comprise entre 10 et 100, avec une valeur initiale recommandée de 10 ; vous pouvez toutefois ajuster cette valeur dans la boîte de dialogue Toutes de l'Assistant Source de données ou des liaisons de données. Cette propriété indique au fournisseur de données de prérécupérer le nombre spécifié de lots de lignes stockés dans le cache d'ensemble de lignes du fournisseur de données. La taille des lots de lignes est déterminée automatiquement en fonction de la valeur de cRows dans l'interface IRowset::GetNextRows OLE DB spécifiée par le consommateur.
Différer la préparation des commandes avec des paramètres jusqu'à l'exécution
La préparation différée indique au fournisseur de données d'optimiser le traitement des commandes INSERT, UPDATE, DELETE et SELECT paramétrables. Vous pouvez spécifier cette option à l’aide de la chaîne d’initialisation de source de données OLE DB (Defer Prepare=True). En outre, vous pouvez configurer le regroupement à l'aide de la boîte de dialogue Avancé de l'Assistant Source de données et à l'aide de l'onglet Toutes de la boîte de dialogue Liaisons de données. Pour les commandes INSERT, UPDATE et DELETE, le fournisseur de données combine les commandes prepare, execute et commit en un seul flux réseau vers la base de données distante. Pour la commande SELECT, le fournisseur de données combine des commandes PREPARE et EXECUTE en un seul flux réseau. Cela réduit le trafic réseau et améliore souvent les performances globales.
Paramétrer le délai de commande pour arrêter les requêtes longues
Le fournisseur OLE DB pour Informix propose une propriété de délai d’expiration de commande, qui permet aux développeurs de mettre fin automatiquement aux requêtes longues pouvant impacter négativement les performances.
La valeur par défaut de la propriété OLE DB d'ensemble de lignes DBPROP_COMMANDTIMEOUT est 0, c'est-à-dire aucun délai d'expiration. Vous pouvez spécifier la valeur du délai d’expiration de commande à partir de plusieurs consommateurs, par exemple ceux de SQL Server 2008 R2.
Mesure du niveau de performances
Le fournisseur de données inclut des compteurs de performances pour mesurer le niveau de performance. Par défaut, les compteurs de performances sont désactivés. Ils peuvent être activés en attribuant la valeur 1 à la clé de Registre suivante :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Host Integration Server\Data Integration\UpdateCounters = 1
Les compteurs de performances du fournisseur de données capturent les informations relatives aux connexions ouvertes, aux instructions ouvertes, aux paquets et octets envoyés/reçus, au temps de traitement moyen de l’hôte (serveur Informix), aux exécutions de commandes, aux extractions de données ainsi qu’aux validations/restaurations de transactions.