SQL Server 2008 lee constantemente archivos MDF, el rendimiento es terrible

SQL Server 2008 lee constantemente archivos MDF, el rendimiento es terrible

Tenemos una aplicación que ejecuta SQL Server 2008 R2 Express en el back-end de un servidor virtual Windows 2008 R2 que se ejecuta en VMWare ESXi. Los usuarios se quejan de que la aplicación es muy lenta. Veo una IO de disco muy alta que no tiene sentido para mí.

Fondo:

  • La longitud promedio de la cola de disco es de alrededor de 60, el máximo es de alrededor de 250
  • El promedio de lecturas de disco por segundo es de alrededor de 2000, con un máximo de alrededor de 3500
  • Resource Monitor muestra que sqlservr.exe está leyendo el archivo .mdf a aproximadamente 40-60 MB/seg (ver más abajo). La escritura IO es muy baja.
  • El archivo .mdf tiene solo 2 GB, lo que significa que todo debería caber en la memoria.
  • El servidor tiene 32 GB de RAM y normalmente se utilizan menos de 16 GB.
  • El servidor tiene 8 discos SAS de 15k en RAID10. Es una Dell con un controlador PERC H710, que es capaz de tomar un SSD para habilitar CacheCade (caché de lectura basado en SSD), lo cual estoy tentado a probar, pero parece que todo debería almacenarse en caché en la RAM de todos modos, así que No estoy seguro de que esto ayude.
  • La máquina virtual SQL se encuentra en un servidor Dell que ejecuta VMWare ESXi 5. Hay otra máquina virtual en ese host ESXi, pero es un controlador de dominio con muy poca E/S.
  • Esta aplicación se ejecutaba anteriormente en un servidor Windows 2003 independiente. Actualizamos a Windows 2008 R2 y también actualizamos la aplicación a una versión más nueva al mismo tiempo, por lo que es posible que cualquiera de esos factores esté contribuyendo.

¿Cuáles son las opciones para profundizar en esto? ¿Hay alguna manera de ver qué está haciendo el servidor SQL bajo el capó (qué consultas se están ejecutando, etc.)? ¿Este comportamiento parece normal y la carga es demasiado para el almacenamiento? Me pregunto si algo no está configurado correctamente.

ingrese la descripción de la imagen aquí

Respuesta1

http://msdn.microsoft.com/en-us/library/cc645993(v=sql.105).aspx#Scalability

Espress no utilizará más de 1 GB de RAM para el proceso SQL. Necesitas comprar e instalar al menos Web o Standard para usar más de 4 GB; ambos admiten 64, que es más de lo que tienes, así que elige uno de esos.

Además, ser un DBA es un tema bastante profundo, pero es muy accesible a través de Technet y el archivo de Ayuda. "¿Cómo sé qué consultas se están ejecutando?" es prácticamente un tema del día 1 (al igual que saber qué edición es apropiada para una tarea determinada). Profiler ni siquiera está disponible para Express, por lo que estás en un aprieto Estás configurado ahora mismo.

Respuesta2

Mire los detalles de la consulta: verifique las consultas que tengan una E/S física o lógica alta, aíslelas y observe el plan de consultas. Hace años que uso una versión obsoleta como 2008 R2... http://gallery.technet.microsoft.com/scriptcenter/Find-ineficiente-query-88f4611fpuede darle un comienzo.

Mi consejo sería que los índices faltantes activen escaneos de tablas. El generador de perfiles y los asistentes de ajuste también pueden ayudar a comprender dónde está el problema. Si 2008 R2 ya tiene la descripción general de la actividad en el administrador, este tiene una ventana agradable con las consultas más costosas.

información relacionada