Tenemos algunas bases de datos con fragmentación de índice que es> 95%. Lo mejor que puedo decir es que los índices nunca han sido reconstruidos y mucho menos reorganizados. En años.
(Para ser justos, estas tablas parecen tener estadísticas actualizadas automáticamente. También, para ser justos, es diligente con las copias de seguridad: registros diarios completos y trx por hora).
Cuando pregunté, el DBA dijo que era reacio a reconstruir o reorganizar los índices. Cuando le pregunté por qué, realmente no podía articularlo. Finalmente, dijo que estaba preocupado por la posible pérdida de datos. Por ejemplo, nuestra aplicación de contabilidad Great Plains Dynamics utiliza una de las bases de datos, y parecía muy ansioso por eso.
No soy un DBA, pero por lo que he leído, su ansiedad parece ... difícil de entender para mí.
No estoy seguro de qué hacer a continuación. ¿Sugerencias de cómo debo proceder?
fuente
Respuestas:
La reconstrucción de un índice de base de datos no debería causar ninguna pérdida de datos. Sin embargo, probablemente causará una degradación sustancial del rendimiento ya que los índices que se están reconstruyendo normalmente no estarán disponibles para su uso hasta que finalice la reconstrucción. Por esa razón, debe hacerse fuera de horario cuando los sistemas afectados están inactivos.
La paranoia es algo bueno en un DBA: si están preocupados por la pérdida de datos, les pediría que realicen una prueba adecuada de las copias de seguridad (restaurarlas en un sistema separado y asegurarse de que todos los datos estén allí), y si están aún preocupado, realizar una copia de seguridad completa antes de reconstruir los índices sería una precaución razonable.
fuente
WITH (ONLINE=ON)
siempre que el índice no contenga columnas BLOB.)REINDEX
"mantenimiento preventivo" en las tablas donde el contenido del índice cambia mucho es bastante común en mi experiencia (si el índice es mayormente estático, es menos importante)No hay riesgo de pérdida de datos por la reconstrucción o desfragmentación de índices.
fuente
La reorganización de los índices llevará menos tiempo y menos esfuerzo del servidor SQL, por lo que se pueden hacer en un tipo de instancias de la noche a la semana. Si lo que dice es cierto, incluso reorganizar los índices que nunca lo han sido, también puede causar un mayor impacto en el servidor. La reconstrucción de los índices requerirá una cantidad considerable de esfuerzo del servidor SQL, ya que se eliminan y reconstruyen. Hacer una reconstrucción en una noche de la semana no vale el riesgo de que el servidor esté ocupado con los índices y no sirva a las personas que lo usan.
Estoy de acuerdo con voretaq7, si está preocupado por trabajar con índices, pruébelo primero en el desarrollo o pruebe los servidores para ver cómo reaccionan.
fuente
DROP INDEX
y volver aCREATE INDEX
- No estoy seguro acerca de SQL Server, pero sé que PostgreSQL a veces funciona mejor eliminando un índice y comenzando desde cero en lugar de intentar reconstruirlo (REINDEX
).