powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / sys.dm_exec_requests logical_reads
3 сообщений из 3, страница 1 из 1
sys.dm_exec_requests logical_reads
    #39873658
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
снова на ночь глядя решил поиграться со статистикой чтений и что то показания set statistics io не сходятся с показаниями logical_reads в dmv


репро:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
drop table if exists buf_test;
select top (100000)
      identity(int, 1,1) as id
into buf_test 
from master.dbo.spt_values c1 
    cross join master.dbo.spt_values c2;

set statistics io on;

begin tran;
select * from buf_test with(repeatableread, paglock)
waitfor delay '00:00:05'
commit



в другой сессии пока идет waitfor
Код: sql
1.
2.
3.
select logical_reads from sys.dm_exec_requests where session_id = 79 --id первой сессии

select total_pages, data_pages, * from sys.partitions p join sys.allocation_units au on au.container_id = p.partition_id where p.object_id = object_id('buf_test')



итог:
Table 'buf_test'. Scan count 1, logical reads 335, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

sys.dm_exec_requests.logical_reads == 343

результат statistics io совпадает с количеством страниц data_pages в allocation_units и это гут.
не гут: что я не могу понять откуда берутся лишние чтения для sys.dm_exec_requests при учете что sql trace / XE по sql_statement_completed показывают цифры по чтениям теже что DMV

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
create event session reads_stats on server 
add event physical_page_read(where session_id=79),
add event page_reference_tracker(where session_id = 79),
add event lock_acquired (where session_id = 79 and resource_type = 'PAGE'),
add event scan_stopped (where session_id = 79),
add event sql_batch_completed (where session_id = 79),
add event sql_statement_completed (where session_id = 79)
with  (max_memory = 16 MB, EVENT_RETENTION_MODE = ALLOW_MULTIPLE_EVENT_LOSS, MAX_DISPATCH_LATENCY=3 SECONDS)



кол-во событий lock_acquired на страницы ровно столько сколько data_pages, а вот результаты событий sql_batch_completed уже рисуют цифорки что показывает DMV

кто мне скажет что сиквел может такого дочитывать что влияет на показатель lr dmv причем в разных вариантах по разному при селекте из маленькой таблички не существенно а из большой разница может доходить до 1000 страниц при том что фактически страниц данных оператор вычитывает всего 40-50?
аля io: 46 vs dmv:1633
...
Рейтинг: 0 / 0
sys.dm_exec_requests logical_reads
    #39873663
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ffне гут: что я не могу понять откуда берутся лишние чтения для sys.dm_exec_requests при учете что sql trace / XE по sql_statement_completed показывают цифры по чтениям теже что DMVВозможно, в sys.dm_exec_requests показывается общее количество чтений, которые понадобилось сделать для выполнения запроса. Включая чтения планов из кэша, чтение метаданных таблицы, и т.п.
А в статистике показаны только чтения страниц таблицы.
...
Рейтинг: 0 / 0
sys.dm_exec_requests logical_reads
    #39873670
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

возможно но показетель очень сильно разнится, я не думаю что метаданные могли бы занимать 12 метров при вычитке из таблицы всего 400 КБ.

собственно я почему и обратил внимание у меня диссонанс происходит на таком запросе:
Код: sql
1.
2.
3.
select top (1000) * from [dbo].[table_with_1222640_rows] with(index=0)
select top (1000) * from [dbo].[table_with_1222640_rows] with(index=2)
select top (1000) * from [dbo].[table_with_1222640_rows] with(index=3)



io:46 dmv:1639 --index0
io:24 dmv:30 --index2
io:1025 dmv:1097 --index3


возможно на это влияет фрагментация:
index 0 :44,4270907283828
index 2: 3,271484375
index 3: 30,6168224299065

но на куче она 44% на 3 индексе 30% а разница по статистикам не сходится, у кучи отклонение большое у индекса не особо
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / sys.dm_exec_requests logical_reads
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]