En cuanto al uso de claves secuenciales (como con identidad, secuencia y NEWSEQUENTIALID) frente a las no secuenciales (como con NEWID o un generador de clave aleatorio personalizado), hay varios aspectos a considerar.
Comenzando con las teclas secuenciales, todas las filas van al extremo derecho del índice. Cuando una página está llena, SQL Server asigna una página nueva y la rellena. Esto da como resultado una menor fragmentación en el índice, lo que es beneficioso para el rendimiento de lectura. Además, las inserciones pueden ser más rápidas cuando una sola sesión carga los datos, y los datos residen en una sola unidad o en un número pequeño de unidades.
Sin embargo, con los subsistemas de almacenamiento de gama alta que tienen muchos ejes, la situación puede ser diferente.Al cargar datos de varias sesiones, terminará con contención de bloqueo de página (los pestillos son objetos utilizados para sincronizar el acceso a las páginas de la base de datos) en las páginas más a la derecha de la lista vinculada del nivel de hoja de índice. Este cuello de botella impide el uso del rendimiento total del subsistema de almacenamiento. Tenga en cuenta que si decide utilizar claves secuenciales y está utilizando las numéricas, siempre puede comenzar con el valor más bajo en el tipo para usar todo el rango. Por ejemplo, en lugar de comenzar con 1 en un tipo INT, puede comenzar con -2,147,483,648.
Considere las claves no secuenciales, como las aleatorias generadas con NEWID o con una solución personalizada. Al intentar forzar una fila en una página ya completa, SQL Server realiza una división de página clásica: asigna una nueva página y mueve la mitad de las filas de la página original a la nueva. Una división de página tiene un costo, además da como resultado la fragmentación del índice. La fragmentación del índice puede tener un impacto negativo en el rendimiento de las lecturas. Sin embargo, en términos de rendimiento de inserción, si el subsistema de almacenamiento contiene muchos ejes y está cargando datos de varias sesiones, el orden aleatorio puede ser mejor que secuencial a pesar de las divisiones.
Esto se debe a que no hay un punto caliente en el extremo derecho del índice, y utiliza mejor el rendimiento disponible del subsistema de almacenamiento . Un buen ejemplo de un punto de referencia que demuestra esta estrategia se puede encontrar en un blog de Thomas Kejser al http://blog.kejser.org/2011/10/05/boosting-insert-speed-by-generating-scalable-keys/.
Fuente: Consulta Microsoft® SQL Server® 2012 Examen 70-461 Kit de formación
Huh? Si se generan de forma secuencial ¿Cómo se puede garantizar que el GUID generado sea realmente único, en lugar de ser algo que se parece a un GUID? – Justin
@Justing: no hay * garantía * de que un GUID sea único, es muy probable que lo sea. –
Los enlaces son volátiles ... Fotia ahora 404s el enlace en la respuesta. –