¿Por qué SQL Server IO es mucho más lento que la capacidad del disco?

¿Por qué SQL Server IO es mucho más lento que la capacidad del disco?

Estoy ejecutando SQL Server 2012 y, al realizar una consulta SELECT * simple, puedo ver que la E/S de mi disco en el monitor de rendimiento es <10 MB/s. Sin embargo, si hago una copia de seguridad de la base de datos, veo valores > 200 MB/s.

¿Por qué el servidor SQL es tan lento a la hora de recuperar datos?

Respuesta1

La razón por la que solo ves 10 MB/seg es que esos contadores de rendimiento analizan datos de un segundo a otro, en lugar de acciones singulares dentro del mismo período de tiempo. Por lo tanto, es posible que su consulta haya obtenido 10 MB en menos de un segundo, pero eso solo se registrará en el Monitor de rendimiento como 10 MB/seg.

Una copia de seguridad extrae grandes cantidades de datos en todos los ámbitos, por lo que se registrará a la máxima velocidad del disco. Si fuera capaz de registrar E/S de disco para acciones individuales, probablemente diría 200 MB/seg o algo similar, posiblemente incluso más para paquetes de datos más pequeños, ya que la velocidad se vuelve casi imposible de medir para paquetes pequeños.

Espero que esto ayude.

Respuesta2

Resulta que todas mis lecturas de la consulta procedían directamente de la memoria, en lugar de hacerlo del disco. La forma en que pude saber esto fue ejecutando el siguiente comando antes de la consulta:

SET STATISTICS IO ON

Después de eso, ejecuté la consulta y miré la pestaña de mensajes para ver las estadísticas. Las lecturas lógicas son desde la memoria, las lecturas físicas son desde el disco.

información relacionada