Para utilizar la búsqueda de procedimiento almacenado, debe especificar las opciones de antememoria durante el mandato CREATE INDEX. Esto permite obtener un alto rendimiento, moviendo todos los datos especificados a la memoria principal.
Sin embargo, antes de la primera actualización del índice para la búsqueda, asegúrese de que la tabla contenga documentos para evitar la actualización de un índice en una tabla que no se haya llenado. De este modo se obtiene un mejor rendimiento de la indexación y una estimación sólida de los requisitos de memoria de antememoria.
La búsqueda de procedimiento almacenado permite devolver rápidamente los datos predefinidos asociados a un documento. Utilice la opción de tabla de antememoria para definir esto en el mandato CREATE INDEX. El mandato ACTIVATE CACHE traslada entonces los datos especificados a una memoria de antememoria.
Nota |
---|
Las funciones de búsqueda escalar SQL también pueden utilizar este índice de texto, si no se ha creado en una vista. En un entorno DB2 distribuido, debe especificar explícitamente un espacio de tabla para las tablas de administración en un solo nodo para el procedimiento almacenado y realizar llamadas explícitamente en este nodo. Para asegurarse de que se conecta al nodo adecuado, utilice la variable de entorno DB2NODE. |
Cuando cree un índice de texto para la búsqueda de procedimiento, deberá determinar y calcular los siguientes parámetros:
Están disponibles los siguientes tipos de antememoria:
Están disponibles los siguientes métodos de actualización de índices de texto:
También se conoce como actualización incremental.
Utilice esta opción si espera insertar más del 50% de sus documentos después de la activación inicial de índice.
Net Search Extender proporciona dos funciones SQL para ayudarle a determinar los parámetros de memoria de CREATE INDEX. Se trata de MAXIMUM CACHE SIZE y PCTFREE.
DB2EXT.MAXIMUM_CACHE_SIZE(maximumNumberDocs INTEGER, averageRowLength INTEGER, numberOfCacheColumns INTEGER)
El mandato siguiente devuelve el parámetro de longitud de fila media de la tabla:
SELECT AVG(LENGTH(columna_1 antememoria) + ... + LENGTH(columna_n antememoria))
Tenga en cuenta que el promedio puede cambiar significativamente cuando se insertan más documentos en la tabla. El número de columnas de antememoria corresponde al número de expresiones de columna utilizadas en la cláusula CACHE TABLE del mandato DB2TEXT CREATE INDEX.
Para obtener información adicional, vea el Apéndice B, Utilización de grandes cantidades de memoria.
DB2EXT.PCTFREE(actualNumberDocs INTEGER, maximumNumberDocs INTEGER)
El número real de documentos es el número de filas de la tabla en el momento de ejecutar el primer mandato ACTIVATE CACHE, que crea la antememoria de memoria.
El número máximo de documentos es un cálculo del número máximo de documentos en la tabla antes de que se ejecute el siguiente mandato DB2TEXT ACTIVATE (para una antememoria temporal) o el mandato DB2TEXT ACTIVATE CACHE RECREATE (para una antememoria permanente).
Si vuelve a crear el índice en cada actualización, establezca el valor de PCTFREE en 0.
Ejemplos |
---|
Supongamos que tiene 10.000 filas en la tabla y no espera tener más de 20.000. Utilice la llamada siguiente para calcular el valor de PCTFREE necesario: db2 "values DB2EXT.PCTFREE(10000,20000) " Supongamos que el tamaño máximo de la fila es de 20.000 y que tiene dos filas en la antememoria con un tamaño medio de 76. Utilice la llamada siguiente para obtener el tamaño: db2 " values DB2EXT.MAXIMUM_CACHE_SIZE(20000,76,2) " |
Después de determinar los parámetros adecuados, puede crear el índice y la tabla de antememoria utilizando la llamada siguiente:
db2text CREATE INDEX db2ext.comentarios FOR TEXT ON db2ext.texttab (comentarios) CACHE TABLE (docid) PCTFREE 10 MAXIMUM CACHE SIZE 5
En este ejemplo, la columna docid se crea además del índice, utilizando la memoria principal para un retorno rápido de la tabla de resultados. Se reserva el diez por ciento de la memoria de antememoria para futuros documentos y la antememoria está limitada a un máximo de 5 MB.
Para buscar en este índice, debe actualizar y, después, activar el índice. De este modo, la expresión de antememoria de tabla especificada de la base de datos se copia en la memoria.
Si durante las operaciones ACTIVATE o UPDATE, se sobrepasan MAXIMUM CACHE SIZE o MAXIMUM NUMBER OF DOCUMENTS, se recomiendan las acciones siguientes:
Si espera actualizaciones frecuentes en los documentos, piense en utilizar tipos de datos de tamaño fijo para las expresiones de columna de antememoria en la cláusula CACHE TABLE. El ejemplo siguiente muestra cómo se puede utilizar el mismo almacenamiento de antememoria durante las operaciones de actualización:
CACHE TABLE(cast(C1 as char(20)), cast(substr(C2,1,10) as char(10))....
Antes de la activación de la antememoria, lleva a cabo todas las actualizaciones incrementales pendientes para evitar un cálculo pobre de PCTFREE.
Para activar el índice de texto, utilice el mandato siguiente:
db2text ACTIVATE CACHE FOR INDEX db2ext.comentarios FOR TEXT
Este mandato los datos de la tabla de la antememoria especificada de la base de datos y los almacena en la memoria. El tiempo que tarda depende del tamaño de la tabla.
Nota |
---|
Si llama a update index cuando un índice está activado, también actualizará las tablas de antememoria. Dado que los documentos suprimidos consumirán huecos de memoria de la antememoria, asegúrese de establecer un valor suficientemente alto para PCTFREE. |
Es necesario volver a realizar la llamada a ACTIVATE CACHE cada vez que detenga el sistema. Si utiliza la antememoria permanente, la nueva activación será más rápida.
Nota |
---|
Si se produce una actualización cuando la antememoria permanente no está activada, en primer lugar se descarta la antememoria permanente y, a continuación, se vuelve a crear durante la llamada de activación. |
Para guardar recursos, debe desactivar los índices que no se necesiten actualmente.
Para comprobar cuánta memoria queda, utilice la siguiente llamada:
db2text control show cache status for database cte index db2ext.comentarios
Mostrará si se ha activado el índice y cuánto espacio de la antememoria especificada queda.