Me gustaría configurar un tipo de sistema de seguimiento de auditoría en mi base de datos para monitorear las UPDATE/INSERT
declaraciones en una tabla específica con una actividad muy alta. Tengo dos opciones frente a mí: usar el sistema de auditoría incorporado de SQL Server o ir con eventos extendidos.
Como SQL Server Audit usa internamente eventos extendidos, supongo que habrá algún tipo de sobrecarga cuando use Auditoría en lugar de eventos extendidos directamente.
¿Hay alguna forma de hacer algunas pruebas para analizar qué sistema está afectando más al servidor? Si pudiera saber qué sucede realmente cuando se crea una sesión XE, me ayudaría a analizar el impacto en el servidor.
Consideramos los desencadenantes y omitimos esa opción debido a la sobrecarga. Pero eso se decidió basándose en información de Internet.
fuente
Respuestas:
Creé una plataforma de prueba simple para probar SQL Server Audit contra los desencadenantes y, potencialmente, otras opciones. En mis pruebas de insertar 1 millón de filas en una tabla obtuve 52, 67 y 159 segundos para la línea de base, Auditoría SQL y mi disparador respectivamente:
Ahora, esto no es particularmente científico, pero potencialmente le ofrece una forma de comparar enfoques. Eche un vistazo a la secuencia de comandos, vea si puede serle útil:
Si bien la opción de activación no funcionó muy bien aquí, mi código de activación podría simplificarse dependiendo de lo que desea capturar y le permite acceder a los valores antiguos y nuevos en un formato bastante utilizable que SQL Audit no. He usado esta técnica para una tabla de configuración de menor actividad y funciona bastante bien. Dependiendo de lo que desee capturar, también podría considerar Cambiar captura de datos .
Déjame saber cómo te va con tus pruebas. Buena suerte.
fuente
Un beneficio de la Auditoría que viene a la mente es que registrará automáticamente quién lo enciende y apaga, XE no lo hará de forma inmediata (aunque puede encontrar un evento que rastrea XE stop / start). También puede encontrar que los dos capturan datos diferentes, dependiendo de exactamente lo que desee.
Con respecto a hacer algunas pruebas, necesitaría tener una copia de seguridad de la base de datos, capturar un rastro de la aplicación bajo carga y luego restaurar la copia mientras realiza una reproducción / reproducción con auditoría / reemplazo con XE y compara los datos de rendimiento.
¿Qué datos de rendimiento? Tu decides. Para algunas ideas, Linchi Shea hizo una comparación entre Auditoría y Rastreo al enfocarse en Transacciones / segundo, mientras que Kehayias hizo una comparación entre Rastreo y XE al enfocarse en lotes / segundo y tiempo de ejecución general de repetición.
Te animo a leer ambos y sus comentarios porque debes saber que no importa lo que hagas, estará abierto a interpretación. Es difícil obtener una comparación de manzanas por manzanas. Además, un seguimiento / reproducción puede fallar al simular la carga correctamente, por ejemplo, cuando su aplicación está haciendo muchas cargas masivas de archivos de disco que ya no existen.
Pero lo importante es que intentes al menos una cosa, para que puedas justificar tus decisiones, y también bloguear sobre eso para el resto de nosotros.
fuente