¿Cuánta memoria ocupa una mesa?


9

¿Hay alguna manera de averiguar cuánta memoria está ocupando una tabla en SQL Server (2005 y superior)?

Por ejemplo, supongamos que tengo una tabla con 30 millones de registros. Me gustaría saber cuántas páginas que pertenecen a esta tabla están actualmente en la memoria caché del búfer, incluidas las páginas de índice, datos y texto / imagen .

Encontré esta consulta de Pinal Dave , pero parece que esta consulta solo devuelve páginas asignadas por índices (ya sean agrupados o no agrupados).


2
sp_spaceused devuelve datos sobre el tamaño almacenado en el disco, no lo que hay en la memoria / en la memoria caché del búfer.
Mark S. Rasmussen

Respuestas:


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

Si agrega algún comentario a su respuesta, lo seleccionaré. Tal como está, no es una respuesta, solo una pieza de código. (Sí, sé que funciona, pero ese no es mi punto)
Ivanmp
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.