ESTIMACIÓN DE TAMAÑOS DE MUESTRAS

El rendimiento de una base de datos relacional, y en particular una base de datos Oracle, depende principalmente del rendimiento de las sentencias SQL que en ella se ejecutan. A partir de la versión 10g Release 2, Oracle declara obsoleto el optimizador basado en la regla (“RULE”), es decir, desde la versión 10.2.0.1, en adelante, el único optimizador soportado por Oracle, es aquel basado en el costo (“COST”).

En la optimización por costo de sentencias SQL, Oracle determina los planes de ejecución óptimos de cada sentencia, a partir de estadísticas de tablas e índices involucrados en cada instrucción SQL. Dichas estadísticas deben ser recolectadas previamente, y actualizadas en forma periódica.

Uno de los principales problemas relacionados con la recolección de estadísticas, se produce en bases de datos relativamente grandes. Por un lado, es demasiado alto el costo de recursos computacionales y de tiempo, como para utilizar en el cálculo, la población completa de registros. Pero por otro lado, si se toman tamaños demasiado pequeños para las muestras, las estadísticas generadas pueden resultar demasiado imprecisas, derivando en el uso de planes de ejecución sub-óptimos, lo que finalmente afectará en forma considerable el rendimiento de la base de datos.

Oracle 10g posee un mecanismo, que permite generar en forma automática el tamaño de las muestras a utilizar. Esto es lo que se conoce con el nombre de “AUTO SAMPLING” (AUTO_SAMPLE_SIZE).

La necesidad de esta investigación, surge por un lado, a partir de documentos formales publicados por Oracle Metalink, en los cuales se expresa en forma explícita, un problema de estimación de tamaños de muestras para Oracle 10g.

Por otro lado, se realizó un análisis de las estimaciones generadas a través de AUTO_SAMPLE_SIZE, durante pruebas de migración realizadas en ambiente QA. En algunos casos, Oracle considera tamaño de muestra demasiado pequeñas y en otros, injustificadamente grandes.

Este trabajo corresponde al desarrollo de una herramienta (Sampling Tool) que permite estimar tamaños apropiados, para muestras utilizadas en el cálculo de estadísticas. Esto es aplicable a cualquier tabla de una base de datos Oracle.

De esta forma, se propone el uso de una metodología formal, desarrollada desde axiomas teóricos matemáticos y modelos estadísticos (Gauss, ANOVA).

Como proyección futura, esta herramienta puede ser extendida a contener todas aquellas sentencias o labores desempeñadas por un DBA, y que puedan afectar la validez de las estadísticas. De esta forma, se puede automatizar la recolección de estadísticas para todas aquellas labores que lo requieran. Algunos ejemplos de tales labores son: Creación y/o eliminación de particiones, cargas masivas, agregar o eliminar columnas de una tabla, entre otras.