Compartir a través de


Proveedor de datos para Informix

Compatibilidad de plataformas

Conversiones de páginas de códigos

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

CCSID de host

El proveedor de datos requiere un valor para CCSID (Identificador codificado del juego de caracteres) del host con el que realizar las conversiones de la página de código en los datos de cadena. El valor predeterminado del CCSID del host es Unicode- UTF8 [1208]. Normalmente, los servidores de bases de datos Informix de IBM usan Unicode.

Página de códigos de PC

El proveedor de datos requiere un valor para Página de códigos de PC con el que realizar las conversiones de la página de código en los datos de cadena. El valor predeterminado de la página de códigos de PC es Unicode- UTF8 [1208]. Normalmente, los servidores de bases de datos Informix de IBM usan Unicode.

Procesar binario como carácter

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

Asignación de tipos de datos

En la tabla siguiente se describen asignaciones de 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 de OLE DB.

Tipo de datos de OLE DB Tipo de datos de 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 blob Un objeto grande binario es una cadena de longitud variable que se usa para almacenar datos no textuales o binarios.
DBTYPE_BOOL boolean Un valor booleano es un binario de un solo byte para almacenar un valor true o false.
DBTYPE_Bytes byte Un objeto grande binario es una cadena de longitud variable que se usa para almacenar datos no textuales o binarios.
DBTYPE_STR char Carácter que 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 fecha 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 FLOAT Número de punto flotante de doble precisión de 8 bytes.
DBTYPE_I8 int8 Un entero 8 es un entero binario de 8 bytes.
DBTYPE_I4 integer 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 Una cadena Unicode de longitud variable.
DBTYPE_R4 real Un valor float es un número de punto flotante de doble precisión 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 smallfloat Número de punto flotante de precisión simple de 4 bytes.
DBTYPE_I2 SMALLINT Entero binario de 2 bytes.
DBTYPE_STR text 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 ha expuesto el conjunto de filas PROVIDER_TYPES para indicar la compatibilidad de tipos de datos de Informix a OLE DB (tipos, asignaciones y límites), en función de la plataforma y la versión de Informix de IBM.

Informix V11

El proveedor de datos admite el acceso a estos tipos de datos al conectarse 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
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

Rendimiento

Las secciones de este tema ayudan a maximizar el rendimiento cuando se usa el proveedor de datos para Informix.

Configurar para el rendimiento

Medición del rendimiento

Configurar para el rendimiento

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

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

La agrupación de conexiones es un método de optimización del cliente que reduce el tiempo de inicio de la conexión a la vez que reduce la utilización de la 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 de origen de datos de OLE DB (Connection Pooling=True). Además, puede configurar la agrupación mediante el cuadro de diálogo Opciones avanzadas del Asistente para orígenes de datos y el cuadro de diálogo Todo de Vínculos de datos.

El proveedor conserva una memoria en caché de las conexiones en función de la propiedad Tamaño máximo del grupo. El tamaño predeterminado de la agrupación es 100 conexiones (Tamaño máximo del grupo=100), que se puede ajustar mediante el cuadro de diálogo Todo del Asistente para orígenes de datos o Vínculos de datos. No hay límite superior para la propiedad Tamaño máximo del grupo. Si configura un valor que es menor que cero para la propiedad Tamaño máximo del grupo, se usa el valor predeterminado de 100.

De manera opcional, puede especificar un número de segundos para indicar al proveedor de datos que debe esperar para establecer conexiones mediante la agrupación del cliente. Cuando todas las conexiones de una agrupación están en uso y expira el período de espera, el proveedor de datos devolverá un error al consumidor de datos (“conexión no disponible”). El valor predeterminado es 15 segundos (Tiempo de espera de conexión=15), que se puede ajustar mediante el cuadro de diálogo Todo del Asistente para orígenes de datos o Vínculos de datos. No hay 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 la agrupación de conexiones del cliente.

Optimizar la memoria caché del conjunto de filas al obtener datos

La propiedad RowsetCacheSize indica al proveedor de datos que debe realizar una captura previa de filas desde Informix, mientras procesa y devuelve filas simultáneamente al consumidor de datos. Esta característica puede mejorar el rendimiento en operaciones de solo lectura por lotes en equipos con varios procesadores o elementos centrales. El valor predeterminado de esta propiedad es 0 (RowsetCacheSize=0), lo que indica que la característica de captura previa opcional está "desactivada". Es recomendable establecer un valor entre 10 y 100, con un valor inicial recomendado de 10, que se 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 debe realizar una captura previa del número especificado de lotes de filas, que se almacenan en la memoria caché de conjuntos de filas del proveedor de datos. El tamaño de los lotes de fila se determina automáticamente según el valor de cRows en la interfaz IRowset::GetNextRows de OLE DB que especifique el consumidor.

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

Preparación diferida indica al proveedor de datos que debe optimizar el procesamiento de los comandos parametrizados INSERT, UPDATE, DELETE y SELECT. Esta opción se puede especificar mediante la cadena de inicialización de origen de datos de OLE DB (Defer Prepare=True). Además, puede configurar la agrupación mediante el cuadro de diálogo Opciones avanzadas del Asistente para orígenes de datos y el cuadro de diálogo Todo de Vínculos de datos. En el caso de los comandos INSERT, UPDATE y DELETE, el proveedor de datos combina los comandos de preparación, ejecución y confirmación en un flujo de red hacia la base de datos remota. En el caso del comando SELECT, el proveedor de datos combina los comandos de preparación y ejecución en un flujo de red. Ello minimiza el tráfico de red y a menudo mejora el rendimiento global.

Tiempo de espera del comando para finalizar consultas de larga duración

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

El valor de DBPROP_COMMANDTIMEOUT del conjunto de filas de OLE DB es 0, que indica que no hay tiempo de espera. Puede especificar el valor del tiempo de espera de los comandos desde varios consumidores, como los de SQL Server 2008 R2.

Medir el rendimiento

Para medir el rendimiento, el proveedor de datos ofrece contadores de rendimiento. Los contadores de rendimiento están desactivados de modo predeterminado. Pueden activarse si se cambia a 1 el valor de la clave siguiente del Registro:

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, el tiempo medio de procesamiento del host (servidor Informix), ejecuciones de comandos, recuperaciones de datos y confirmaciones o reversiones de transacciones.