Quanta memoria occupa una tabella?


9

C'è un modo per scoprire quanta memoria occupa una tabella in SQL Server (2005 e versioni successive)?

Ad esempio, supponiamo che io abbia una tabella con 30 milioni di record. Mi piacerebbe sapere quante pagine appartenenti a questa tabella sono attualmente nella cache del buffer, tra cui pagine indice, dati e testo / immagine .

Ho trovato questa query di Pinal Dave , ma sembra che questa query restituisca solo le pagine allocate dagli indici (sia cluster che non cluster).


2
sp_spaceused restituisce dati sulla dimensione memorizzata sul disco, non su ciò che è in memoria / nella cache del buffer.
Mark S. Rasmussen,

Risposte:


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

Se aggiungi un commento alla tua risposta, lo selezionerò. Allo stato attuale, non è una risposta, solo un pezzo di codice. (Sì, lo so che funziona, ma non è questo il mio punto.)
ivanmp
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.