Сколько памяти занимает таблица?


9

Есть ли способ узнать, сколько памяти занимает таблица в SQL Server (2005 и выше)?

Например, предположим, у меня есть таблица с 30 миллионами записей. Я хотел бы знать, сколько страниц, принадлежащих этой таблице, в настоящее время находятся в буферном кеше, включая страницы индекса, данных и текста / изображения .

Я нашел этот запрос Пиналом Дейвом , но кажется, что этот запрос возвращает только страницы, выделенные индексами (будь то кластеризованные или некластеризованные).


2
sp_spaceused возвращает данные о размере, хранящемся на диске, а не о том, что находится в памяти / в буферном кеше.
Марк С. Расмуссен

Ответы:


8
with bd as (
    select count(*) as pages_in_memory, bd.allocation_unit_id
    from sys.dm_os_buffer_descriptors bd
    where bd.database_id = db_id()
    group by bd.allocation_unit_id)
select p.object_id,
    p.index_id,
    p.partition_number,
    bd.pages_in_memory,
    au.total_pages as pages_on_disk,
    au.type_desc
from bd 
join sys.allocation_units au 
    on au.allocation_unit_id = bd.allocation_unit_id
join sys.partitions p
    on p.partition_id = au.container_id

Если вы добавите комментарий к своему ответу, я его выберу. На самом деле это не ответ, а просто кусок кода. (Да, я знаю, что это работает, но это не моя точка зрения.)
ivanmp
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.