tuning optimizacion consultas 11g database performance oracle

database - optimizacion - ¿Cuándo usas los clústeres de mesa?



optimizacion de consultas oracle (3)

¿Cómo se determina cuándo utilizar los clústeres de tablas ? Hay dos tipos, índice y hash, para usar en diferentes casos. Según su experiencia, ¿la introducción y el uso de los clusters de tablas han dado resultado?

Si ninguna de sus tablas está configurada de esta manera, modificarlas para usar clústeres de tabla se agregaría a la complejidad de la configuración. Pero, ¿beneficiarían los beneficios de rendimiento esperados el costo de una mayor complejidad en el trabajo de mantenimiento futuro?

¿Tiene alguna referencia en línea o libros favoritos que describan bien la agrupación de tablas y proporcionen buenos ejemplos de implementación?

// sugerencias de Oracle muy apreciadas.


No he utilizado los clústeres de tablas de Oracle, pero entiendo que sus clústeres de tablas de índices se parecen mucho a los índices agrupados de MS SQL Server. Es decir, los datos de fila están físicamente organizados por la clave del índice agrupado.

Eso lo hace ideal para una columna de acceso extenso que tiene un número razonablemente pequeño de valores posibles (en comparación con el número total de filas), donde la mayoría de las consultas desea recuperar todas las filas con un valor particular. Debido a que todas las filas se almacenan físicamente juntas, se reduce la E / S del disco, particularmente el tiempo de búsqueda.

"Razonablemente pequeño" no se define fácilmente, pero los códigos postales o postales en una tabla de direcciones parecen razonables si a menudo se consultan todas las direcciones en la región de un solo código. Los códigos de provincia / estado / territorio son probablemente una selección demasiado pequeña para una tabla de direcciones en todo el país.

Por lo tanto, no desea utilizarlos en columnas con pocos valores posibles (por ejemplo, M / F para el género) porque entonces la agrupación no le compra nada y probablemente le cueste dinero por inserciones. Tampoco querrá utilizar el agrupamiento en columnas de clave sustituta "autonumber" (de secuencias en Oracle) porque eso creará un "punto caliente" en la última extensión de la tabla ya que todas las inserciones deben ocurrir físicamente allí. Tampoco desea aplicar el clúster a un valor de columna que se actualizará porque el RDBMS deberá mover físicamente el registro para mantener el orden en clúster.


La característica principal de los clústeres de tablas es que puede almacenar filas relacionadas de diferentes tablas en la misma ubicación física.

Eso puede mejorar el rendimiento de la unión en un orden de magnitud. Sin embargo, no paga tantas veces como suena.

La única vez que lo usé fue una combinación de tres tablas, ejecutada por dos uniones hash. Tomó demasiado tiempo;). Sin embargo, la unión estaba en la misma columna, por lo que fue posible utilizar un clúster de tabla hash codificado por la columna de unión. Eso causó que todas las filas relacionadas se almacenaran junto (idealmente, en el mismo bloque de base de datos). Sabiendo eso, Oracle puede ejecutar el join con una optimización especial ("cluster join").

Está más o menos preincorporado, pero sigue sintiéndose como tablas normales (para INSERT / SELECT / UPDATE / DELETE).

Por otro lado, existen "clusters de tabla única" que se usan principalmente para controlar el "factor de agrupamiento": una idea similar a los índices agrupados (denominada Tabla Organizada por Índice en Oracle) pero que no agrega un alto costo si se utiliza una función secundaria. índice.


Se puede hablar mucho sobre la agrupación en clústeres, pero descubrí que la explicación casi definitiva sobre los clústeres de Oracle (pros y contras, cuándo usar y cómo usarla) se puede encontrar en el libro de Tom Kyte: Oracle Effective by Design , también puede buscar asktom para algunos ejemplos específicos de uso de clúster ( 1 , 2 , etc.). Definitivamente deberías echarle un vistazo a este libro si aún no lo has hecho.

Alguna información que también puedes encontrar aquí .

Pero lo que siempre debe hacer antes de crear estructuras de esquema complejas es probar, probar, comparar y elegir la solución que mejor se adapte a sus necesidades :)

Espero que esto ayude.