Wie viel Speicher nimmt ein Tisch ein?

9

Gibt es eine Möglichkeit herauszufinden, wie viel Speicher eine Tabelle in SQL Server (2005 und höher) belegt?

Angenommen, ich habe eine Tabelle mit 30 Millionen Datensätzen. Ich möchte wissen, wie viele Seiten, die zu dieser Tabelle gehören, sich derzeit im Puffercache befinden, einschließlich Index-, Daten- und Text- / Bildseiten .

Ich habe diese Abfrage von Pinal Dave gefunden , aber es scheint, dass diese Abfrage nur Seiten zurückgibt, die durch Indizes zugeordnet sind (sei es gruppiert oder nicht gruppiert).

ivanmp
quelle
2
sp_spaceused gibt Daten über die auf der Festplatte gespeicherte Größe zurück, nicht über die Größe im Speicher / im Puffercache.
Mark S. Rasmussen

Antworten:

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
Remus Rusanu
quelle
Wenn Sie Ihrer Antwort einen Kommentar hinzufügen, werde ich ihn auswählen. So wie es aussieht, ist es keine Antwort, nur ein Stück Code. (Ja, ich weiß, dass es funktioniert, aber das ist nicht mein Punkt.)
ivanmp