Condividi tramite


Provider di dati per Informix

Compatibilità della piattaforma

Conversioni delle tabelle codici

Il provider di dati supporta una combinazione di set di caratteri a un byte (SBCS), set di caratteri a byte misti (MBCS), set di caratteri a due byte (DBCS) e Unicode - UTF8 [1208], che è un formato di trasformazione Unicode a 8 bit.

CCSID host

Il provider di dati richiede di specificare un valore per CCSID (Coded Character Set Identifier) host con cui eseguire conversioni di tabelle codici su dati di tipo stringa. Il valore CCSID host predefinito è Unicode - UTF8 [1208]. In genere, i server di database IBM Informix usano Unicode.

Tabella codici PC

Il provider di dati richiede un valore per la tabella codici PC con cui eseguire conversioni di tabelle codici su dati di tipo stringa. La tabella codici PC predefinita è Unicode - UTF8 [1208]. In genere, i server di database IBM Informix usano Unicode.

Elabora valore binario come carattere

Il provider di dati converte automaticamente in e da file binari (CCSID 65535) e tipi di dati stringa di caratteri, in base al tipo di dati Informix e al tipo di dati consumer windows. La codifica Informix è determinata dal CCSID host. La codifica di Windows è determinata dalla pagina codici del PC.

Mapping dei tipi di dati

In questo argomento vengono descritti i mapping di tutti i tipi di dati a quelli di OLE DB.

Mapping dei tipi di dati DI INFORMIX a OLE DB

La tabella seguente descrive i mapping dei tipi di dati Informix ai tipi di dati OLE DB.

Tipo di dati OLE DB Tipo di dati Informix Descrizione
DBTYPE_I8 bigint Un intero grande è un intero binario a 8 byte.
DBTYPE_UI8 bigserial Intero binario senza segno a 8 byte.
DBTYPE_Bytes blob Un oggetto di grandi dimensioni binario è una stringa di lunghezza variabile usata per archiviare dati non testuali o binari.
DBTYPE_BOOL boolean Un valore booleano è un singolo byte binario per archiviare un valore true o false.
DBTYPE_Bytes byte Un oggetto di grandi dimensioni binario è una stringa di lunghezza variabile usata per archiviare dati non testuali o binari.
DBTYPE_STR char Un carattere è una stringa SBCS o MBCS di lunghezza fissa.
DBTYPE_STR Clob Un oggetto di lunghezza variabile di grandi dimensioni è una stringa di lunghezza variabile.
DBTYPE_DBDate data Un tipo di dati Date è una stringa di 10 byte.
DBTYPE_DBTimesStamp Datetime Un timestamp è una stringa di 32 byte che rappresenta la data, l'ora e i microsecondi.
DBTYPE_Decimal decimal Numero decimale.
DBTYPE_R8 float Un tipo di dati Float è un numero di 8 byte a virgola mobile a precisione doppia.
DBTYPE_I8 int8 Un intero 8 è un intero binario a 8 byte.
DBTYPE_I4 numero intero Un tipo di dati Integer è un intero binario di 4 byte.
DBTYPE_DBTimesStamp interval Un timestamp è una stringa di 32 byte che rappresenta la data, l'ora e i microsecondi.
DBTYPE_STR lvarchar Un carattere variabile è una stringa di caratteri di lunghezza variabile.
DBTYPE_WSTR NCHAR Stringa Unicode a lunghezza fissa.
DBTYPE_WSTR NVARCHAR Una stringa Unicode di lunghezza variabile.
DBTYPE_R4 real Un float è un numero a virgola mobile a precisione doppia a 4 byte.
DBTYPE_UI4 serial Intero binario senza segno a 4 byte.
DBTYPE_UI8 serial8 Intero binario senza segno a 8 byte.
DBTYPE_R4 smallfloat Un tipo di dati Real è un numero di 4 byte a virgola mobile a singola precisione.
DBTYPE_I2 SMALLINT Intero binario a due byte.
DBTYPE_STR text Un oggetto di lunghezza variabile di grandi dimensioni è una stringa di lunghezza variabile.
DBTYPE_STR varchar Un carattere variabile è una stringa di caratteri di lunghezza variabile.

Le informazioni sullo schema di OLE DB vengono recuperate utilizzando set predefiniti di righe dello schema con IDBSchemaRowset::GetRowset. Il provider di dati ha esposto il set di righe PROVIDER_TYPES per indicare il supporto del tipo di dati Informix a OLE DB (tipi, mapping, limiti), in base alla versione IBM Informix.

Informix V11

Il provider di dati supporta l'accesso a questi tipi di dati quando si è connessi a 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
SERIALE 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

Prestazioni

Questo argomento contiene le sezioni seguenti che consentono di ottimizzare le prestazioni quando si usa il provider di dati per Informix.

Configurazione per le prestazioni

Misurazione delle prestazioni

Configurazione per le prestazioni

Per migliorare le prestazioni, configurare i provider nei modi indicati di seguito.

Risorse del provider di pool per ridurre i tempi di avvio della connessione

Il pool di connessioni è un'ottimizzazione lato client che consente di ridurre i tempi di avvio della connessione, riducendo al tempo stesso l'utilizzo di memoria sul computer client. Il provider OLE DB supporta il pool di connessioni. È possibile specificare il pooling usando la stringa di inizializzazione dell'origine dati OLE DB (Connection Pooling=True). È possibile anche configurare il pooling utilizzando la finestra di dialogo Avanzate della Configurazione guidata origine dati e la finestra di dialogo Tutto di Collegamenti dati.

Il provider gestisce una cache di connessioni, in base alla proprietà Dimensioni massime pool. L'impostazione predefinita è 100 connessioni (Dimensioni massime pool=100),che è possibile modificare utilizzando la finestra di dialogo Tutto della Creazione guidata origine dati o di Collegamenti dati. Non esiste un limite massimo per la proprietà Dimensioni massime pool. Se si configura un valore inferiore a 0 per la proprietà Dimensioni massime pool, viene utilizzato il valore predefinito 100.

Facoltativamente, è possibile specificare un numero di secondi per indicare al provider di dati il tempo di attesa per stabilire le connessioni utilizzando il pool lato client. Se tutte le connessioni di un pool sono in uso e il periodo di timeout termina, il provider di dati restituirà al consumer di dati un errore di "connessione non disponibile". L'impostazione predefinita è 15 secondi (Timeout di connessione=15), che è possibile modificare utilizzando la finestra di dialogo Tutto della Creazione guidata origine dati o di Collegamenti dati. Non esiste un limite massimo per la proprietà Timeout di connessione. È possibile specificare il valore -1 per indicare al provider di dati di aspettare a tempo indefinito una connessione aperta nel pool di connessione lato client.

Ottimizzazione della cache di set di righe durante il recupero dei dati

La proprietà RowsetCacheSize indica al provider di dati di pre-recuperare le righe da Informix durante l'elaborazione simultanea e la restituzione di righe al consumer di dati. Questa funzionalità consente di migliorare le prestazioni nelle operazioni bulk di sola lettura sui computer con più processori o processori multicore. Il valore predefinito per questa proprietà è 0 ( RowsetCacheSize=0 ), che indica che la funzionalità di prelettura facoltativa è "off". Si consiglia di impostare un valore compreso tra 10 e 100, con un valore consigliato iniziale di 10. È possibile modificare tale valore utilizzando la finestra di dialogo Tutto della Creazione guidata origine dati o di Collegamenti dati. Questa proprietà indica al provider di dati di recuperare preventivamente fino al numero specificato di batch di righe, archiviati nella cache dei set di righe del provider di dati. La dimensione dei batch di righe viene determinata automaticamente in base al valore di cRows nell'interfaccia OLE DB IRowset::GetNextRows specificata dal consumer.

Posticipo dei comandi prepare con parametri fino al momento dell'esecuzione

Posticipa comandi prepare indica al provider di dati di ottimizzare l'elaborazione dei comandi con parametri INSERT, UPDATE, DELETE e SELECT. È possibile specificare questa opzione usando la stringa di inizializzazione dell'origine dati OLE DB ( Rinvia Prepare=True ). È possibile anche configurare il pooling utilizzando la finestra di dialogo Avanzate della Configurazione guidata origine dati e la finestra di dialogo Tutto di Collegamenti dati. Per i comandi INSERT, UPDATE e DELETE, il provider di dati combina i comandi di preparazione, esecuzione e commit in un unico flusso di rete al database remoto. Per il comando SELECT, il provider di dati combina i comandi di preparazione ed esecuzione in un unico flusso di rete. Questa ottimizzazione ridurrà il traffico di rete e spesso migliorerà le prestazioni generali.

Timeout dei comandi per interrompere query con esecuzione prolungata

Il provider OLE DB per Informix offre una proprietà di timeout dei comandi per consentire agli sviluppatori di terminare automaticamente query con esecuzione prolungata che potrebbero influire negativamente sulle prestazioni.

Il valore predefinito di DBPROP_COMMANDTIMEOUT per i set di righe OLE DB è 0, corrispondente a nessun timeout. È possibile specificare il valore per il timeout dei comandi da diversi consumer, ad esempio quelli in SQL Server 2008 R2.

Misurazione delle prestazioni

Per misurare le prestazioni, il provider di dati offre contatori delle prestazioni. Per impostazione predefinita, i contatori delle prestazioni sono disattivati. È possibile attivarli impostando su 1 il valore della seguente chiave del Registro di sistema:

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

I contatori delle prestazioni del provider di dati acquisisce informazioni su connessioni aperte, istruzioni aperte, pacchetti e byte inviati/ricevuti, tempo di elaborazione dell'host medio (server Informix), esecuzioni dei comandi, recupero dei dati e commit/rollback delle transazioni.