2008-08-26 16 views
5

¿Cómo se determina cuándo usar table clusters? 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?¿Cuándo usa los clústeres de tabla?

Si ninguno de sus mesas están dispuestas de esta manera, modificándolos para utilizar agrupaciones de mesa se sumaría a la complejidad de la puesta en marcha. Pero, ¿beneficiarían los beneficios de rendimiento esperados el costo de una mayor complejidad en el trabajo de mantenimiento futuro?

¿Tiene alguna referencias en línea favoritos o libros que describen mesa bien la agrupación y dan buenos ejemplos de implementación?

// sugerencias de Oracle muy apreciadas.

Respuesta

1

No he utilizado grupos de la tabla de Oracle a mí mismo, pero entiendo que sus racimos tabla de índices son muy similares 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 masivo 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 es fácil de definir, pero los códigos postales o postales en una tabla de direcciones parece razonable si lo que 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.

+0

Los clústeres de tabla Oracle no son como los índices agrupados de SQLServer. –

+0

Lo siento por preguntar mucho más tarde, pero no encontré otra pista: ¿hay algo similar a los clusters de tablas de Oracle en MSSQL? – landi

7

La característica principal de los clusters 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 un tres tabla de unión, ejecutada por dos une 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").

es más o menos unidas previamente, pero todavía se siente como mesas normales (para INSERT/SELECT/actualizar/eliminar).

Por otro lado, hay "clústeres de tabla única" que se utilizan principalmente para controlar el "factor de agrupamiento": una idea similar a los índices agrupados (denominada Tabla Organizada por Índice en Oracle) pero sin agregar costos elevados si usa un índice secundario.

2

se puede hablar mucho sobre la agrupación, pero he encontrado que la explicación casi definitiva acerca de Oracle clusters (pros y contras, cuándo usar y cómo de usar) se pueden encontrar en el libro de Tom Kyte - Effective Oracle by Design, también se puede busque 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 usted puede también encontrar here.

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

Espero que esto ayude.

Cuestiones relacionadas