Antecedentes:
tengo numerosas bases de datos con una gran cantidad de VIEW y una cantidad extremadamente grande de SYNONYM. Por ejemplo, una base de datos tiene más de 10k VIEW y más de 2 millones de SYNONYM.
Problema general: las
consultas que involucran sys.objects
(y las tablas del sistema en general) tienden a ser lentas. Las consultas que involucran sys.synonyms
son glaciales. Me pregunto qué puedo hacer para mejorar el rendimiento.
Ejemplo específico
Este comando lo ejecuta una herramienta de terceros. Es lento tanto en la aplicación como en SSMS:
exec sp_tables_rowset;2 NULL,NULL
Mi pregunta :
¿Cómo puedo hacer que esto funcione más rápido?
Lo que he intentado :
si SET STATISTICS IO ON
obtengo este resultado:
(2201538 filas afectadas)
Tabla 'sysobjrdb'. Recuento de escaneo 1, lecturas lógicas 28, lecturas físicas 0, lecturas de lectura anticipada 0, lecturas lógicas lob 0, lecturas físicas lob 0, lecturas de lectura anticipada 0.
Tabla 'sysschobjs'. Cuenta de escaneo 1, lecturas lógicas 53926, lecturas físicas 0, lecturas de lectura anticipada 0, lecturas lógicas lob 0, lecturas físicas lob 0, lecturas de lectura lob 0.
He podido actualizar estadísticas en las tablas del sistema subyacente. Esto ha funcionado en mi SQL 2008 R2 o en entornos más nuevos:
UPDATE STATISTICS sys.sysobjrdb WITH FULLSCAN
UPDATE STATISTICS sys.sysschobjs WITH FULLSCAN
También he podido realizar el mantenimiento del índice. Esto funciona en mi SQL 2012 o entornos más nuevos. Por ejemplo, la ejecución sp_help 'sys.sysschobjs'
identifica los índices en la tabla, y desde allí creo y ejecuto estos comandos:
ALTER INDEX clst ON sys.sysschobjs REORGANIZE
ALTER INDEX nc1 ON sys.sysschobjs REORGANIZE
ALTER INDEX nc2 ON sys.sysschobjs REORGANIZE
ALTER INDEX nc3 ON sys.sysschobjs REORGANIZE
La actualización de estadísticas y la reorganización de índices ayuda, pero no mucho.
fuente
Respuestas:
Si aún no lo ha hecho, podría obtener rendimiento moviendo el archivo de datos primario a un conjunto separado de ejes del resto de los datos (consulte Archivos y arquitectura de grupos de archivos y SQL Server: ¿grupo de archivos solo para tablas del sistema? ).
fuente