Berapa banyak memori yang digunakan meja?


9

Apakah ada cara untuk mengetahui berapa banyak memori yang digunakan tabel di SQL Server (2005 dan lebih tinggi)?

Misalnya, saya punya meja dengan 30 juta catatan. Saya ingin tahu berapa banyak halaman yang termasuk dalam tabel ini saat ini pada cache buffer, termasuk halaman indeks, data, dan teks / gambar .

Saya menemukan kueri ini oleh Pinal Dave , tetapi tampaknya kueri ini hanya mengembalikan halaman yang dialokasikan oleh indeks (baik itu yang berkerumun atau yang tidak tersusun).


2
sp_spaceused mengembalikan data tentang ukuran yang disimpan di disk, bukan apa yang ada di memori / di cache buffer.
Mark S. Rasmussen

Jawaban:


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

Jika Anda menambahkan beberapa komentar ke jawaban Anda, saya akan memilihnya. Seperti berdiri, itu bukan jawaban, hanya sepotong kode. (Ya, saya tahu itu berhasil, tetapi itu bukan poin saya.)
ivanmp
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.