Compartir a través de


Columnas de valor largo

Se aplica a: Windows | Windows Server

Columnas de valor largo

Los tipos de columna ese JET_coltypLongText y JET_coltypLongBinary se denominan tipos de columna de valor largo. Estas columnas son objetos binarios grandes y de cadena grandes que se pueden almacenar en árboles B+ independientes lejos del índice principal. Cuando los valores largos se almacenan separados del registro principal, se claven internamente en un identificador de valor largo (LID) y desplazamiento de bytes y se accede a ellos como una secuencia. Las columnas de valor largo se agregan a la tabla de la llamada a JetAddColumn con el miembro coltyp de la estructura de JET_COLUMNDEF establecida en JET_coltypLongText o JET_coltypLongBinary. El tamaño máximo de un valor de columna De texto largo o Binario largo es de 2 GB -1.

ESE admite las operaciones append, byte range overwrite y set size para columnas de valor largo para admitir implementaciones de flujo eficaces en estos tipos de columnas. De forma predeterminada, los datos de valor largo se almacenan en un árbol B+ independiente si son mayores de 1024 bytes, o si el registro no cabe en una sola página de base de datos cuando los datos de valor largo se almacenan en el registro. La aplicación tiene la opción de invalidar el comportamiento predeterminado estableciendo opciones para almacenar datos de valor largo en el registro (JET_bitSetIntrinsicLV) o forzar que se almacenen en el árbol B+ independiente (JET_bitSetSeparateLV). Estos valores se establecen en el parámetro grbit en JetSetColumn, o el miembro grbitJET_SETCOLUMN usado en la llamada a JetSetColumns de la siguiente manera:

  • Anexar: (JET_bitSetAppendLV)

  • Sobrescritura de intervalo de bytes: (JET_bitSetOverwriteLV)

  • Establecer tamaño: (JET_bitSetSizeLV)

  • Forzar separación: (JET_bitSetSeparateLV)

  • Almacenar en registro: (JET_bitSetIntrinsicLV)

Los datos de valor largo se establecen indicando el desplazamiento en el blob de valor largo y la longitud de los datos de valor largo en el blob. El desplazamiento al blob de valor largo se establece en el miembro ibLongValue de JET_SETINFO estructura (para JetSetColumn) o el miembro ibLongValue de la estructura JET_SETCOLUMN (para JetSetColumns). El miembro pvData de JET_SETCOLUMN y el parámetro pvData de la llamada a JetSetColumn contiene los datos de valor largo. Novedades a columnas de valor largo deben realizarse dentro de una transacción.

Los datos de valor largo siempre se almacenan en una tabla independiente es cuando la aplicación establece el JET_bitSetSeparateLV o JET_bitSetIntrinsicLV; de lo contrario, se decide heurísticamente. ESE almacena el valor largo separado si es mayor que 1024 bytes o si el registro no cabe en una sola página de base de datos si se almacena en el registro.

En el diagrama siguiente se muestran los datos de valor largo almacenados en una tabla independiente. Cuando se almacena un valor largo fuera del registro, se crea un nuevo identificador con valores largos para hacer referencia a su valor. Esto permite que varios registros hacen referencia al mismo valor de columna. Se aumentan los recuentos de referencias a los datos si hay más de un registro en los puntos de datos a los mismos datos de valor largo.

ESE_Documentation_longvaluedtree2 ESE_Documentation_longvaluedtree2

ESE también admite una única característica de almacén de instancias que permite que varios registros hagan referencia al mismo objeto binario grande que si cada registro tuviera su propia copia de la información; evitando así copias duplicadas de los datos de valor de columna. Esta característica está habilitada en la llamada a JetPrepareUpdate con la opción JET_prepInsertCopy establecida en el parámetro prep .