Condividi tramite


Provider di dati per Informix

Compatibilità della piattaforma

Conversioni delle pagine codice

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

Host CCSID

Il provider di dati richiede un valore per il CCSID dell'host (Identificatore del set di caratteri codificati) con cui eseguire conversioni di pagina di codice sui dati stringa. Il valore CCSID host predefinito è Unicode - UTF8 [1208]. In genere, i server di database IBM Informix utilizzano Unicode.

Tabella codici PC

Il provider di dati richiede un valore per il codice pagina del PC con cui eseguire conversioni del codice pagina sui dati stringa. La tabella codici pc predefinita è Unicode - UTF8 [1208]. In genere, i server di database IBM Informix utilizzano Unicode.

Elabora dati binari come caratteri

Il provider di dati effettua automaticamente la conversione tra tipi di dati binari (CCSID 65535) e stringhe di caratteri, a seconda del tipo di dati Informix e del tipo di dati utilizzato dal sistema Windows. La codifica Informix è determinata dal CCSID host. La codifica di Windows è determinata dalla tabella codici del PC.

Mapping dei tipi di dati

In questo argomento vengono descritti tutti i mapping dei tipi di dati ai tipi di dati OLE DB.

Associamento dei tipi di dati Informix a OLE DB

Nella tabella seguente vengono descritti 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 numero intero grande è un intero binario a 8 byte.
DBTYPE_UI8 bigserial Intero binario senza segno a 8 byte.
DBTYPE_Bytes massa amorfa Un oggetto binario di grandi dimensioni è una stringa di lunghezza variabile usata per archiviare dati non testuali o binari.
DBTYPE_BOOL boolean Un valore booleano è un singolo file binario di byte per archiviare un valore true o false.
DBTYPE_Bytes byte Un oggetto binario di grandi dimensioni è una stringa di lunghezza variabile usata per archiviare dati non testuali o binari.
DBTYPE_STR Char Un carattere è una stringa SBCS o MBCS a lunghezza fissa.
DBTYPE_STR Clob Un oggetto grande carattere di lunghezza variabile è una stringa di lunghezza variabile.
DBTYPE_DBDate date Una data è una stringa a 10 byte.
DBTYPE_DBTimesStamp datetime Un timestamp è una stringa a 32 byte che rappresenta la data, l'ora e i microsecondi.
DBTYPE_Decimal decimale Numero decimale.
DBTYPE_R8 galleggiare Un float è un numero a virgola mobile a precisione doppia a 8 byte.
DBTYPE_I8 int8 Un numero intero 8 è un intero binario a 8 byte.
DBTYPE_I4 numero intero Un numero intero è un intero binario a 4 byte.
DBTYPE_DBTimesStamp interval Un timestamp è una stringa a 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 Stringa Unicode di lunghezza variabile.
DBTYPE_R4 autentico Un float è un numero a virgola mobile a precisione doppia a 4 byte.
DBTYPE_UI4 seriale Intero binario senza segno a 4 byte.
DBTYPE_UI8 serial8 Intero binario senza segno a 8 byte.
DBTYPE_R4 smallfloat Un numero reale è un numero a virgola mobile a precisione singola con 4 byte.
DBTYPE_I2 SMALLINT Intero binario a due byte.
DBTYPE_STR text Un oggetto grande carattere di lunghezza variabile è una stringa di lunghezza variabile.
DBTYPE_STR varchar Un carattere variabile è una stringa di caratteri di lunghezza variabile.

Le informazioni sullo schema in OLE DB vengono recuperate usando set di righe dello schema predefiniti 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 tipo di dati Column_size Scala_minima Scala_massima
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
TESTO DBTYPE_STR 2147483647
CLOB DBTYPE_STR 2147483647
DATTERO DBTYPE_DBDATE 10
DECIMALE 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
REALE 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 seguenti.

Risorse del provider di pool per ridurre il tempo di avvio della connessione

Il pool di connessioni è un'ottimizzazione lato client che riduce il tempo di avvio della connessione, riducendo al contempo l'utilizzo della memoria nel computer client. Il provider OLE DB supporta il pool di connessioni. È possibile specificare il pooling tramite la stringa di inizializzazione dell'origine dati OLE DB (Connection Pooling=True). È anche possibile configurare il pooling utilizzando la finestra di dialogo Avanzate della Creazione guidata origine dati e la finestra di dialogo Tutti dei collegamenti dati.

Il provider gestisce una cache di connessioni, in base a una proprietà Max Pool Size. La dimensione predefinita del pool è pari a 100 connessioni (Dimensione massima del pool=100), che è possibile modificare usando la finestra di dialogo Tutte della Creazione guidata dell'origine dati o dei collegamenti di dati. Non esiste alcun limite massimo per la proprietà Max Pool Size. Se si configura un valore minore di 0 per la proprietà Max Pool Size, viene utilizzato il valore predefinito 100.

Facoltativamente, è possibile specificare un numero di secondi per indicare al provider di dati di attendere di stabilire connessioni usando il pool lato client. Quando tutte le connessioni in un pool sono in uso e il periodo di timeout scade, il provider di dati restituirà un errore al consumer di dati ("connessione non disponibile"). Il valore predefinito è 15 secondi (Connect Timeout=15), che è possibile modificare usando la finestra di dialogo Tutte della Creazione guidata delle origini dati o collegamenti dati. Non esiste alcun limite massimo per la proprietà Connect Timeout. Specificare -1 per indicare al provider di dati di attendere per un periodo illimitato per una connessione aperta nel pool di connessioni lato client.

Ottimizzare la cache dei set di righe durante il recupero dei dati

La proprietà RowsetCacheSize indica al provider di dati di pre-recuperare righe da Informix durante l'elaborazione simultanea e la restituzione di righe al consumer di dati. Questa funzionalità può migliorare le prestazioni nelle operazioni di sola lettura su larga scala su computer multiprocessore o multicore. Il valore predefinito per questa proprietà è 0 ( RowsetCacheSize=0 ), che indica che la funzionalità di prelettura facoltativa è "off". È consigliabile impostare un valore compreso tra 10 e 100, con un valore consigliato iniziale pari a 10, che è possibile modificare usando la finestra di dialogo Tutte della Creazione guidata origine dati o dei collegamenti dati. Questa proprietà indica al provider di dati di eseguire il pre-recupero fino al numero specificato di batch di righe, archiviati nella cache del set di righe del provider di dati. Le dimensioni dei batch di righe vengono determinate automaticamente in base al valore per cRows nell'interfaccia IRowset::GetNextRows OLE DB specificata dal consumer.

Rinviare la preparazione dei comandi con parametri fino all'esecuzione

Defer Prepare indica al provider di dati di ottimizzare l'elaborazione dei comandi INSERT, UPDATE, DELETE e SELECT con parametri. È possibile specificare questa opzione usando la stringa di inizializzazione dell'origine dati OLE DB ( Defer Prepare=True ). È anche possibile configurare il pooling utilizzando la finestra di dialogo Avanzate della Creazione guidata origine dati e la finestra di dialogo Tutti dei collegamenti dati. Per i comandi INSERT, UPDATE e DELETE, il provider di dati combina i comandi prepare, execute e commit in un 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. Questo riduce al minimo il traffico di rete e migliora spesso le prestazioni complessive.

Timeout dei comandi per interrompere query a lungo termine

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

Il valore predefinito per il set di righe OLE DB DBPROP_COMMANDTIMEOUT è 0, ovvero nessun timeout. È possibile specificare il valore per il timeout dei comandi da diversi utenti, 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. Possono essere attivate modificando il valore della chiave del Registro di sistema seguente su 1:

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 medio dell'host (server Informix), esecuzioni dei comandi, recupero dei dati e commit/rollback delle transazioni.