Proveedor de datos para Informix

Compatibilidad de plataformas

Conversiones de páginas de código

El proveedor de datos admite una combinación de conjuntos de caracteres de byte único (SBCS), conjuntos de caracteres de bytes mixtos (MBCS), conjuntos de caracteres de doble byte (DBCS) y Unicode - UTF8 [1208], que es un formato de transformación Unicode de 8 bits.

Host CCSID (Identificador de conjunto de caracteres del host)

El proveedor de datos requiere un valor para Host CCSID (Identificador de Juego de Caracteres Codificados) con el que realizar conversiones de páginas de código en datos tipo cadena de texto. El valor de CCSID de host predeterminado es Unicode - UTF8 [1208]. Normalmente, los servidores de bases de datos IBM Informix usan Unicode.

Página de códigos de PC

El proveedor de datos requiere un valor para la página de códigos del PC, con el cual realizar conversiones entre páginas de códigos en datos de texto. La página de códigos de PC predeterminada es Unicode - UTF8 [1208]. Normalmente, los servidores de bases de datos IBM Informix usan Unicode.

Procesar binario como carácter

El proveedor de datos convierte automáticamente a y desde tipos de datos binarios (CCSID 65535) y de cadena de caracteres, según el tipo de datos Informix y el tipo de datos de consumidor de Windows. La codificación de Informix viene determinada por el CCSID de host. La codificación de Windows viene determinada por la página de códigos del equipo.

Asignación de tipos de datos

En este tema se describen todas las asignaciones de tipos de datos a tipos de datos OLE DB.

Asignación de tipos de datos de Informix a OLE DB

En la tabla siguiente se describen las asignaciones de tipos de datos de Informix a tipos de datos OLE DB.

Tipo de datos de OLE DB Tipo de datos Informix Descripción
DBTYPE_I8 bigint Un entero grande es un entero binario de 8 bytes.
DBTYPE_UI8 bigserial Entero binario de 8 bytes sin signo.
DBTYPE_Bytes mancha Un objeto binario grande es una cadena de longitud variable que se usa para almacenar datos no textuales o binarios.
DBTYPE_BOOL booleano Un booleano es un solo byte binario para almacenar un valor verdadero o falso.
DBTYPE_Bytes byte Un objeto binario grande es una cadena de longitud variable que se usa para almacenar datos no textuales o binarios.
DBTYPE_STR char Un carácter es una cadena SBCS o MBCS de longitud fija.
DBTYPE_STR clob Un objeto grande de caracteres de longitud variable es una cadena de longitud variable.
DBTYPE_DBDate date Una fecha es una cadena de 10 bytes.
DBTYPE_DBTimesStamp datetime Una marca de tiempo es una cadena de 32 bytes que representa la fecha, la hora y los microsegundos.
DBTYPE_Decimal Decimal Número decimal.
DBTYPE_R8 flotante Un float es un número de punto flotante de precisión doble de 8 bytes.
DBTYPE_I8 int8 Un entero 8 es un entero binario de 8 bytes.
DBTYPE_I4 entero Un entero es un entero binario de 4 bytes.
DBTYPE_DBTimesStamp interval Una marca de tiempo es una cadena de 32 bytes que representa la fecha, la hora y los microsegundos.
DBTYPE_STR lvarchar Un carácter variable es una cadena de caracteres de longitud variable.
DBTYPE_WSTR NCHAR Cadena Unicode de longitud fija.
DBTYPE_WSTR nvarchar Cadena Unicode de longitud variable.
DBTYPE_R4 real Un float es un número de punto flotante de precisión simple de 4 bytes.
DBTYPE_UI4 serial Entero binario de 4 bytes sin signo.
DBTYPE_UI8 serial8 Entero binario de 8 bytes sin signo.
DBTYPE_R4 flotante pequeño Un valor real es un número de punto flotante de precisión sencilla de 4 bytes.
DBTYPE_I2 smallint Entero binario de dos bytes.
DBTYPE_STR Mensaje de texto Un objeto grande de caracteres de longitud variable es una cadena de longitud variable.
DBTYPE_STR varchar Un carácter variable es una cadena de caracteres de longitud variable.

La información de esquema de OLE DB se recupera mediante conjuntos de filas de esquema predefinidos con IDBSchemaRowset::GetRowset. El proveedor de datos expuso el conjunto de filas PROVIDER_TYPES para indicar la compatibilidad del tipo de datos de Informix a OLE DB (tipos, mapeos, limitaciones), en función de la versión de IBM Informix.

Informix V11

El proveedor de datos admite el acceso a estos tipos de datos cuando se conecta a Informix V11.

Informix Type_name OLE DB tipo_de_dato Tamaño_de_columna Escala_mínima Escala_máxima
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
Mensaje de texto DBTYPE_STR 2147483647
CLOB DBTYPE_STR 2147483647
FECHA DBTYPE_DBDATE 10
DECIMAL DBTYPE_DECIMAL (Tipo de dato decimal) 32 0 32
FLOTAR DBTYPE_R8 53
NCHAR DBTYPE_WSTR 32767
INTEGER DBTYPE_I4 10
SERIE DBTYPE_UI4 10
SMALLFLOAT DBTYPE_R4 24
REAL DBTYPE_R4 24
SMALLINT DBTYPE_I2 5
Fecha y hora DBTYPE_DBTIMESTAMP 32 0 12
INTERVAL DBTYPE_DBTIMESTAMP 32 0 12
VARCHAR DBTYPE_STR 255
LVARCHAR DBTYPE_STR 32739
NVARCHAR DBTYPE_WSTR 255

Rendimiento

Este tema contiene las secciones siguientes que le ayudarán a maximizar el rendimiento cuando use el proveedor de datos para Informix.

Configuración del rendimiento

Medición del rendimiento

Configuración del rendimiento

Para mejorar el rendimiento, configure los proveedores de las maneras siguientes.

Agrupar los recursos del proveedor para reducir el tiempo de inicio de la conexión

La agrupación de conexiones es una optimización del lado cliente que reduce el tiempo de inicio de la conexión, al tiempo que reduce el uso de memoria en el equipo cliente. El proveedor OLE DB admite la agrupación de conexiones. Puede especificar la agrupación mediante la cadena de inicialización del origen de datos OLE DB (Connection Pooling=True). Además, puede configurar la agrupación mediante el cuadro de diálogo Avanzado del Asistente para orígenes de datos y el cuadro de diálogo Todos los vínculos de datos.

El proveedor mantiene una memoria caché de conexiones, basada en una propiedad Max Pool Size. El tamaño de grupo predeterminado es 100 conexiones (Tamaño máximo del grupo=100), que puede ajustar mediante el cuadro de diálogo Todo del Asistente para orígenes de datos o vínculos de datos. No hay ningún límite superior para la propiedad Max Pool Size. Si configura un valor menor que 0 para la propiedad Tamaño máximo del grupo, se usa el valor predeterminado de 100.

Opcionalmente, puede especificar un número de segundos para indicar al proveedor de datos que espere antes de establecer conexiones mediante la agrupación de conexiones del lado del cliente. Cuando todas las conexiones de un grupo están en uso y el período de tiempo de espera expira, el proveedor de datos devolverá un error al consumidor de datos ("la conexión no está disponible"). El valor predeterminado es 15 segundos (Tiempo de espera de conexión=15), y puede ajustarlo usando el cuadro de diálogo General del Asistente para orígenes de datos o los vínculos de datos. No hay ningún límite superior para la propiedad Tiempo de espera de conexión. Especifique -1 para indicar al proveedor de datos que espere indefinidamente una conexión abierta en el grupo de conexiones del lado cliente.

Optimización de la memoria caché del conjunto de filas al obtener datos

La propiedad RowsetCacheSize indica al proveedor de datos que capture previamente filas de Informix mientras procesa y devuelve filas al consumidor de datos simultáneamente. Esta característica puede mejorar el rendimiento en operaciones masivas de solo lectura en equipos de varios procesadores o de varios núcleos. El valor predeterminado de esta propiedad es 0 ( RowsetCacheSize=0 ), que indica que la característica de captura previa opcional es "off". Se recomienda establecer un valor entre 10 y 100, con un valor recomendado inicial de 10, que puede ajustar mediante el cuadro de diálogo Todo del Asistente para orígenes de datos o vínculos de datos. Esta propiedad indica al proveedor de datos que recupere previamente el número especificado de lotes de filas, que se almacenan en la memoria caché del conjunto de filas del proveedor de datos. El tamaño de los lotes de filas se determina automáticamente en función del valor de cRows en la interfaz IRowset::GetNextRows de OLE DB especificada por el consumidor.

Aplazar la preparación de comandos con parámetros hasta la ejecución

Aplazar Prepare indica al proveedor de datos que optimice el procesamiento de comandos INSERT, UPDATE, DELETE y SELECT parametrizados. Puede especificar esta opción mediante la cadena de inicialización del origen de datos OLE DB (Defer Prepare=True). Además, puede configurar la agrupación mediante el cuadro de diálogo Avanzado del Asistente para orígenes de datos y el cuadro de diálogo Todos los vínculos de datos. Para los comandos INSERT, UPDATE y DELETE, el proveedor de datos combina comandos de preparación, ejecución y confirmación en un flujo de red a la base de datos remota. Para el comando SELECT, el proveedor de datos combina comandos de preparación y ejecución en un flujo de red. Esto minimiza el tráfico de red y mejora con frecuencia el rendimiento general.

Tiempo de espera del comando para finalizar las consultas de ejecución prolongada

El proveedor OLE DB para Informix ofrece una propiedad de tiempo de espera de comandos para permitir que los desarrolladores finalicen automáticamente las consultas de larga duración que pueden afectar negativamente al rendimiento.

El valor predeterminado del conjunto de filas OLE DB DBPROP_COMMANDTIMEOUT es 0, lo que significa que no se ha agotado el tiempo de espera. Puede especificar el valor para el tiempo de espera del comando de una variedad de consumidores, como los que se encuentran en SQL Server 2008 R2.

Medición del rendimiento

Para medir el rendimiento, el proveedor de datos ofrece contadores de rendimiento. De forma predeterminada, los contadores de rendimiento están desactivados. Se pueden activar cambiando el valor de la siguiente clave del Registro a 1:

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

Los contadores de rendimiento del proveedor de datos capturan información sobre conexiones abiertas, instrucciones abiertas, paquetes y bytes enviados o recibidos, tiempo medio de procesamiento del host (servidor Informix), ejecuciones de comandos, capturas de datos y confirmaciones o reversiones de transacciones.