¿Cuál es la diferencia entre Index Rebuilding y Index Reorganizing?SQL Server: ¿Cuál es la diferencia entre Index Rebuilding y Index Reorganizing?
Respuesta
Existen varias diferencias. Básicamente, la reconstrucción es una reconstrucción total de un índice: construirá un nuevo índice, luego descartará el existente, mientras que reorganizarlo simplemente, bueno ... lo reorganizará .
This entrada de blog Me encontré hace un tiempo lo explicaré mucho mejor que yo. :)
Piensa cómo se implementa el índice. Generalmente es un tipo de árbol, como B + Tree o B-Tree. El índice en sí se crea mirando las claves en los datos y construyendo el árbol para que la tabla se pueda buscar de manera eficiente.
Cuando reorganizar el índice, que pasan por el índice existente, la limpieza de los bloques de registros eliminados, etc. Esto podría hacerse (y se encuentra en algunas bases de datos) cuando se hace una deleción, pero que impone algunas pena de rendimiento. en cambio, lo haces por separado para hacerlo en modo más o menos por lotes.
Cuando reconstruir el índice, se elimina el árbol existente y leer todos los registros, la construcción de un nuevo árbol directamente de los datos. Eso le da un árbol nuevo, y afortunadamente optimizado, que puede ser mejor que los resultados de reorganizar la tabla; también le permite regenerar el árbol si de alguna manera se ha corrompido.
Muchas gracias – Anoop
feliz de ayudar, de nada. –
"Reorganizar índice" es un proceso de limpieza, organización y desfragmentación del "nivel de hoja" del árbol B (en realidad, páginas de datos).
La reconstrucción del índice está cambiando todo el árbol B, recreando el índice.
Se recomienda reorganizar el índice cuando la fragmentación del índice es del 10% al 40%; si la fragmentación del índice es superior al 40%, es mejor reconstruirla.
La reconstrucción de un índice requiere más recursos, produce bloqueos y ralentiza el rendimiento (si elige mantener la tabla en línea). Entonces, necesitas encontrar el momento adecuado para ese proceso.
REBUILD
bloquea la tabla durante todo el período de funcionamiento (que puede ser horas y días si la tabla es grande).
REORGANIZE
no bloquea la mesa.
Bien. en realidad, coloca algunos bloqueos temporales en las páginas con las que funciona ahora mismo, pero se eliminan tan pronto como se completa la operación (que es fracciones de segundo para cualquier bloqueo dado).
Como @Andomar
notado, hay una opción en REBUILD
un índice en línea, que crea el nuevo índice, y cuando la operación se completa, simplemente reemplaza el índice anterior por el nuevo.
Esto, por supuesto, significa que debe tener espacio suficiente para conservar tanto la copia antigua como la nueva del índice.
REBUILD
es también una operación DML
que cambia las tablas del sistema, afecta a las estadísticas, habilita los índices desactivados, etc.
REORGANIZE
es una operación de limpieza pura que deja todo el estado del sistema tal como está.
Las versiones empresariales de Sql Server pueden reconstruir índices sin bloquear la tabla, consulte RECONSTRUIR CON (ONLINE = ON) http://blogs.techrepublic.com.com/datacenter/?p=249 – Andomar
índice de reconstrucción reconstruye uno o más índices para una tabla en la base de datos espaciada. reorganizado - desfragmentar los índices agrupados y secundarios de la tabla espaciada hte
¡Corrija esto para que sea inteligible! –
Reconstruir dropeando los índices actuales y recreando los nuevos.
Reorganizar es como poner la casa en orden con lo que ya tienes.
es una buena práctica usar una fragmentación del 30% para determinar la reconstrucción frente a la reorganización.
< 30% reorganizar vs> 30% reconstruir
Además de las diferencias mencionadas anteriormente (básicamente reconstruir creará el índice de nuevo, y luego "intercambiarlo en" de la ya existente, en lugar de tratar de arreglar el existente), una consideración importante es que una reconstrucción, incluso una reconstrucción de Enterprise ONLINE, interferirá con las transacciones de aislamiento de instantáneas.
TX1 comienza transacción de instantánea
TX1 lee de T
TX2 reconstruye índice en T
TX2 reconstrucción completa
TX1 leer de T de nuevo:
error 3961, la transacción de aislamiento de instantánea falló en la base de datos porque el objeto al que accedió la declaración ha sido modificado por una declaración DDL en otra transacción simultánea desde el inicio de esta transacción. No se permite porque los metadatos no están versionados. Una actualización simultánea de los metadatos puede provocar incoherencias si se combina con el aislamiento de instantáneas.
- 1. ¿cuál es la diferencia entre UNIQUE INDEX y UNIQUE KEY?
- 2. SQL Server Index ¿Qué debería agruparse?
- 3. Generar instrucciones CREATE INDEX en SQL Server
- 4. ¿Cuál es la diferencia entre Unique Key e Index with IsUnique = Yes?
- 5. Tablas de SQL Server: ¿cuál es la diferencia entre @, # y ##?
- 6. Sql Server Legacy Database To Clustered index o no
- 7. z-index entre Niños y Padres
- 8. ¿Cuál es la diferencia entre SQL Server Compact Edition y SQL Server Express Edition?
- 9. SQL Server Index: ¿alguna mejora para las consultas LIKE?
- 10. ¿Cuál es la diferencia entre ";" y "IR" en T-SQL?
- 11. Todo sobre .... Z-Index?
- 12. ¿Cuál es la diferencia entre SQL Azure y SQL Server 2008?
- 13. Mysql index configuration
- 14. jQuery y CSS - Z-index
- 15. Java ArrayList Index
- 16. ¿Cuál es la diferencia entre la reconstrucción del índice OFFLINE y ONLINE en SQL Server?
- 17. ¿Cuál es la diferencia entre SQL Server Management Studio y la edición Express?
- 18. ¿Cuál es la diferencia entre el inicio de sesión y la credencial en SQL Server 2008?
- 19. ¿Por qué este SQL da como resultado Index Scan en lugar de Index Search?
- 20. ¿Por qué Dictionary [index] arroja KeyNotFoundException pero Hashtable [index] no?
- 21. MySQL index ralentizar consulta
- 22. ¿Cuál es la diferencia entre "LIKE" y "=" en SQL?
- 23. ¿Cuál es la diferencia entre SQLite y SQL
- 24. Diferencia entre SQL Server y Oracle 'Usuario'
- 25. Cambiando Z-Index onclick
- 26. ¿LINQ funciona en Index?
- 27. Cálculo h-index
- 28. RavenDB MultiMap Index
- 29. jQuery index and selectors: lt y: gt
- 30. ¿Cuál es la diferencia entre tran y transacción en SQL Server 2005
Iba a publicar ese enlace también. :-) En internet, casi toda la información está allí, solo tiene que encontrarla. – MicSim