Actividad reciente del sitio

Mundo BBx‎ > ‎Manual BBj‎ > ‎Indice BBj‎ > ‎Uso de SQL en BBj‎ > ‎

Análisis automático de Bases de Datos

Información General

En BBj 10.0 y superior, el análisis automático de bases de datos es una potente característica que elimina la necesidad de que un administrador de BBj Services, ejecute explícitamente una operación de análisis en su base de datos. El análisis de base de datos (o de tabla) es una característica donde el motor SQL de BBj analiza las tablas en la base de datos para generar información que luego puede utilizarse para determinar la mejor vía posible para optimizar las consultas SQL. Sin esta información, el motor SQL debe hacer una "averiguación" genérica para intentar optimizar una consulta, pero podría o no podría escoger la mejor opción. El rendimiento de las consultas SQL es altamente dependiente de la disponibilidad de esta información.

¿Cómo funciona?
El motor de base de datos de BBj examina las tablas cada vez vez que son accesadas para determinar si se justifica un análisis. Para determinar esto, se usan los siguientes criterios:

La tabla no se ha analizado aún
Desde la última vez que la tabla fue analizada,
el número de registros ha aumentado más del 50%
uno o más índices fueron creados o quitados de la tabla (también incluye llaves agregadas o removidas desde operaciones que no son del tipo base de datos o por herramientas tales como SQL o el propio Enterprise Manager)

Si cualquiera de éstos criterios se cumple, se inicia un trabajo de análisis sobre la tabla y se ingresa en la cola de análisis donde partirá tan pronto exista un espacio de tiempo disponible para ejecutarlo. El motor de análisis, limita intencionalmente la cantidad de procesos de análisis simultáneos, de manera que no interfieran con la ejecución de la aplicación o las consultas en el servidor. Para ver el progreso de los trabajos de análisis y el orden de las tablas encoladas, simplemente haga un clic en el item "Table Analysis Queue", en el navegador del lado izquierdo de la ventana de Enterprise Manager.

¿Qué debe dejarse como predeterminado?
Un asunto importante es, si se debe o no dejar habilitado el análisis automático de base de datos, y en su lugar analizar manualmente. En muchos casos, el análisis automático quedaría habilitado, lo cual está como predeterminado para nuevas bases de datos en el Enterprise Manager. Sin embargo, si su aplicación en ocasiones remueve archivos de datos o tablas que forman parte de la base de datos, puede ser necesario desactivar el análisis automático de tablas, dado que una operación de análisis impediría que un archivo siendo analizado, fuera removido por la aplicación.

Una alternativa para desactivar esta podera y conveniente característica, es usando el API de BBj Admin, para asegurarse programáticamente que una base de datos no tiene  un proceso de análisis de tabla en ejecución, antes de manipular los archivos asociados. Esto se puede lograr con sólo algunas líneas de código BBj y prevenir que cualquier aplicación o herramienta administrativa inicien una operación de análisis en la base de datos hasta que la aplicación haya finalizado su tarea específica. El siguiente código demuestra como ejecutar esta tarea. Cuando el análisis de tablas está inhabilitado, no se iniciarán trabajos de análisis en la base de datos específica y ningún trabajo en ejecución o encolado será finalizado y removido desde la cola:

rd_dbserver$ = "localhost"
rd_dbport = 2002
rd_dbssl = 0
rd_user$ = "admin"
rd_password$ = "admin123"
adminBase! = com.basis.api.admin.BBjAdminFactory.getBBjAdmin(
:    java.net.InetAddress.getByName(rd_dbserver$),
:                                                      rd_dbport,
:                                                      rd_dbssl,
:                                                      rd_user$,
:                                                      rd_password$)
REM Desactiva el análisis de tablas en base de datos ChileCompany
adminBase!.setTableAnalysisEnabled("ChileCompany", 0)
REM Hace algunas operaciones la aplicacion
REM Activa el análisis de tablas en base de datos ChileCompany
adminBase!.setTableAnalysisEnabled("ChileCompany", 1)
Comments