Auditoria SQL Server

01/11/2005 - 07:22 por Antonio Ortiz | Informe spam
Hola,

Mas que una pregunta, es una peticion para obtener sugerencias.

La situacion es la siguiente:

Actualmente estoy auditando un sistema que tiene como back end a SQL Server
6.5, que de lejos se le ven grandes deficiencias. En ocasiones tienen que
reiniciar 2 o 3 veces el servidor en un dia, un simple reporte puede llegar
a tardar mas de 20 mins., etc. Por ahora la meta es mejorar un poco el
rendimiento mientras se define si se compra o realiza un desarrollo nuevo.

Los puntos que he realizado es lo siguiente:

1) Verificar hardware y red { Servidor HP PIV 2.6 Ghz, 2 Gb RAM, HD
SCSI, 2 Tarjetas de red. Bases de datos de hasta 2 gb aprox.
2) Revision de tablas, indices, triguers, normalizacion actual
3) Revisar las peticiones de algunos procesos mediante el analizador de SQL
3) Idenficar cantidad de usuarios y tipo de acceso. (aprox. 60 usuarios en
red local)

Entre las deficiencias encontradas estan:
1) Las conexiones se hacen en su mayoria por la IP de la primer tarjeta,
recomendado un balance de carga por ambas interfaces.
2) La mayoria de los indices estan definidos con Fill Factor de 100%,
iniciando a cambiarlos todos a 0%
3) Un reporte que tardaba mas de 10 mins en obtenerse, detecte gracias al
analizador de consultas, que se utiliza como origen del reporte una consulta
con 3 tablas, de las cuales la mayor tiene +6.5 millones de registros y el
campo que la relaciona en la consulta (llave secundaria) no esta indexada.
Ademas de utilizar criterios del tipo CONVERT(int, campo)=valor, lo cual
descarta el uso de indices para estas columnas. Se indexo el campo,
mejorando el rendimiento notablemente.

* Se procedera a revisar todos los indices y a verificar la mayoria de los
procesos, asi como su rendimiento en el analizador de consultas, detectando
sus deficiencias.
* Por otro lado he propuesto emigrar sus bases de datos a SQL Server 2000 en
un servidor de pruebas y monitorear por unas horas en produccion, para ver
si la aplicacion funciona igual.

Alguna sugerencia que pudiera mejorar el rendimiento global del sistema?.
La idea es que si se demuestra una mejoria notable en el sistema, se
procedera a la compra de un mejor hardware, lo cual estoy recomendando.


Gracias,


Antonio Ortiz
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com
 

Leer las respuestas

#1 Eladio Rincón
01/11/2005 - 13:06 | Informe spam
Hola,

Fillfactor de 100 y 0 es lo mismo, de hecho si intentas crear un índice con
fillfactor 0 te mostrará un error: "Fillfactor 0 is not a valid percentage;
fillfactor must be between 1 and 100." (esto es con SQL Server 2000, no se
como será en 6.5... tanto tiempo .. )

Migrar a SQL Server 2000 sería una de las soluciones, aunque claro, requiere
aplicar las politicas de migración que tengais definidas en la empresa.

La idea de comprar hardware, antes de recomendarlo, lo justificaría; me
explico, puedes crear trazas de sysmon en la que audites uso de disco (%
Disk Time, lectura y escrituras por segundo, Current Disk Queue, Avg. Read
Queue Length, y Avg. Write Queue Length), procesador (% Processor Time, %
Privileged Time), y memoria (por ejemplo Available KBytes... también puedes
monitorizar páginas por segundo, etc.); sobre network interface parece que
has detectado ya un problema. Analizando los resultados de sysmon, tendrás
una base para justificar la compra.

Dices que hay que reiniciar dos o tres veces al día el servicio... mira, pon
las trazas, y verás como ellas solas te dirán qué está causando la parada;

Lo que comentas del Convert, es bastante frecuente; el problema es que tira
por suelo el índice, y como caso mejor podrá hacerse un index scan, lo cual
no es eficiente que digamos; pondría trazas de profiler para encontrar
consultas más costosas


Eladio Rincón

SQL Server MVP, Mentor
Solid Quality Learning
http://www.SolidQualityLearning.com

"Solid Quality Learning is the trusted global provider of advanced education
and solutions for the entire Microsoft database platform"


"Antonio Ortiz" wrote in message
news:O$
Hola,

Mas que una pregunta, es una peticion para obtener sugerencias.

La situacion es la siguiente:

Actualmente estoy auditando un sistema que tiene como back end a SQL
Server 6.5, que de lejos se le ven grandes deficiencias. En ocasiones
tienen que reiniciar 2 o 3 veces el servidor en un dia, un simple reporte
puede llegar a tardar mas de 20 mins., etc. Por ahora la meta es mejorar
un poco el rendimiento mientras se define si se compra o realiza un
desarrollo nuevo.

Los puntos que he realizado es lo siguiente:

1) Verificar hardware y red { Servidor HP PIV 2.6 Ghz, 2 Gb RAM, HD
SCSI, 2 Tarjetas de red. Bases de datos de hasta 2 gb aprox.
2) Revision de tablas, indices, triguers, normalizacion actual
3) Revisar las peticiones de algunos procesos mediante el analizador de
SQL
3) Idenficar cantidad de usuarios y tipo de acceso. (aprox. 60 usuarios en
red local)

Entre las deficiencias encontradas estan:
1) Las conexiones se hacen en su mayoria por la IP de la primer tarjeta,
recomendado un balance de carga por ambas interfaces.
2) La mayoria de los indices estan definidos con Fill Factor de 100%,
iniciando a cambiarlos todos a 0%
3) Un reporte que tardaba mas de 10 mins en obtenerse, detecte gracias al
analizador de consultas, que se utiliza como origen del reporte una
consulta con 3 tablas, de las cuales la mayor tiene +6.5 millones de
registros y el campo que la relaciona en la consulta (llave secundaria) no
esta indexada. Ademas de utilizar criterios del tipo CONVERT(int,
campo)=valor, lo cual descarta el uso de indices para estas columnas. Se
indexo el campo, mejorando el rendimiento notablemente.

* Se procedera a revisar todos los indices y a verificar la mayoria de los
procesos, asi como su rendimiento en el analizador de consultas,
detectando sus deficiencias.
* Por otro lado he propuesto emigrar sus bases de datos a SQL Server 2000
en un servidor de pruebas y monitorear por unas horas en produccion, para
ver si la aplicacion funciona igual.

Alguna sugerencia que pudiera mejorar el rendimiento global del sistema?.
La idea es que si se demuestra una mejoria notable en el sistema, se
procedera a la compra de un mejor hardware, lo cual estoy recomendando.


Gracias,


Antonio Ortiz
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com



Preguntas similares