Estou tentando entender o churn de cache causado por instruções SQL que estão fazendo algumas varreduras de tabela.
Assumindo caches LRU, se algo está fazendo 400K E/S lógicas, quanta memória é transmitida (tamanho do bloco de E/S * E/S lógicos).
Além disso, estou tentando entender como obter o relatório sobre as principais instruções SQL de E/S lógica e obter a E/S física que elas incorreram.
Diante disso, minhas dúvidas são:
- Qual é o tamanho do bloco de E/S ao qual uma operação de E/S lógica do SQL Server se refere.
- Como obtenho E/S físicos para uma instância específica de execução de SQL?
No SQL Server, 1 "E/S lógica" refere-se à leitura de 1 8 KB de página do buffer pool (memória). É possível que uma E/S física ocorra primeiro (para levar a página do disco para a memória). Portanto, 400 mil leituras lógicas são 400.000 * 8 KB = 3.200.000 KB de dados sendo lidos (~3 GB).
Uma referência para isso, com informações muito mais detalhadas, pode ser encontrada no site Microsoft Docs: Pages and Extents Architecture Guide
Você menciona o tamanho do bloco, que imagino ser uma referência ao tamanho do bloco no nível do sistema operacional. Embora isso seja importante no nível do sistema operacional e possa afetar potencialmente o desempenho do SQL Server, não é relevante para a E/S lógica em termos de número de páginas - que é fixado em 8 KB.
Você pode encontrar isso em
sys.dm_exec_query_stats
. Isso inclui colunas para:...etc.