Cluster Index...

04/11/2005 - 09:59 por Oscar | Informe spam
Hola, aqui seguimos preocupados por el rendimiento del sistema.

Os pongo en situación. En mi empresa habiamos desarrollado un sistema en C#
y Oracle, pero cuando todo estaba listo para producción se decidio cambiar a
SQL-SERVER por temas de coste. Asi que nos pusimos manos a la obra y se
cambio todo el código , se migraron los datos ,la estructura y los
procedimientos de Oracle a SQL_SERVER.

Para realizar esta migración me documente un poco, y consegui de internet
unos cuantos documentos sobre como hacer esta migración. Al pasar las
Primary key a SQL-SERVER se convirtieron en Cluster index. El problema que
tengo ahora es el siguiente:
Tengo unas 5 o 6 tablas con unos 12-13 millones de registros, estas tablas
(bueno en realidad todas las tablas ), tiene como clave primaria un GUID
representado como un Varchar(36). Ademas en estas tablas se realizan
continuamente inserciones y querys, y como os podeis imaginar ordenar los
datos por este guid no tiene ningun beneficio. Sin embargo creo que se
penalizan mucho las inserciones por aquello de la reorganización del árbol
B.

En esta situación me estoy planteando muy seriamente eliminar todos los
Cluster index y crear las claves primarias como indices únicos normales y
corrientes,
y SOLO crear Cluster index en las tablas y en los campos en los que tener
una ordenación física de la tabla me reporte algun benecifio.
¿Es una locura eliminar todos los cluster index?, ¿Me penalizaran los joins,
(aun cuando existan pk )?.


Muchas gracias por vuestras respuestas.


www.metasincro.es
 

Leer las respuestas

#1 Carlos Sacristán
04/11/2005 - 10:21 | Informe spam
Sí, sí que es una pequeña locura que una tabla no tenga un índice
agrupado. Otra cosa es que el campo que escojas como parte integrante de
este índice sea el adecuado, algo que se nota más cuanto más grandes sean
las tablas.

Yo buscaría cuál es el(los) campo(s) que mejor se puede(n) adaptar a ser
ese índice agrupado para que efectivamente la reorganización sea la mínima,
pero siempre le dejaría uno porque el resto de los índices de la tabla se
van a basar en el agrupado...


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Oscar" escribió en el mensaje
news:ewc#
Hola, aqui seguimos preocupados por el rendimiento del sistema.

Os pongo en situación. En mi empresa habiamos desarrollado un sistema en


C#
y Oracle, pero cuando todo estaba listo para producción se decidio cambiar


a
SQL-SERVER por temas de coste. Asi que nos pusimos manos a la obra y se
cambio todo el código , se migraron los datos ,la estructura y los
procedimientos de Oracle a SQL_SERVER.

Para realizar esta migración me documente un poco, y consegui de internet
unos cuantos documentos sobre como hacer esta migración. Al pasar las
Primary key a SQL-SERVER se convirtieron en Cluster index. El problema que
tengo ahora es el siguiente:
Tengo unas 5 o 6 tablas con unos 12-13 millones de registros, estas tablas
(bueno en realidad todas las tablas ), tiene como clave primaria un GUID
representado como un Varchar(36). Ademas en estas tablas se realizan
continuamente inserciones y querys, y como os podeis imaginar ordenar los
datos por este guid no tiene ningun beneficio. Sin embargo creo que se
penalizan mucho las inserciones por aquello de la reorganización del árbol
B.

En esta situación me estoy planteando muy seriamente eliminar todos los
Cluster index y crear las claves primarias como indices únicos normales y
corrientes,
y SOLO crear Cluster index en las tablas y en los campos en los que tener
una ordenación física de la tabla me reporte algun benecifio.
¿Es una locura eliminar todos los cluster index?, ¿Me penalizaran los


joins,
(aun cuando existan pk )?.


Muchas gracias por vuestras respuestas.


www.metasincro.es


Preguntas similares