Bao nhiêu bộ nhớ là một bảng chiếm?


9

Có cách nào để tìm hiểu xem một bảng đang chiếm bao nhiêu bộ nhớ trong SQL Server (2005 trở lên) không?

Ví dụ: giả sử tôi có một bảng với 30 triệu bản ghi. Tôi muốn biết có bao nhiêu trang thuộc bảng này hiện đang nằm trên bộ đệm, bao gồm các trang chỉ mục, dữ liệu và văn bản / hình ảnh .

Tôi đã tìm thấy truy vấn này của Pinal Dave , nhưng có vẻ như truy vấn này chỉ trả về các trang được phân bổ bởi các chỉ mục (có thể là cụm hoặc không được phân loại).


2
sp_spaceuse trả về dữ liệu về kích thước được lưu trữ trên đĩa, không phải những gì trong bộ nhớ / trong bộ đệm bộ đệm.
Mark S. Rasmussen

Câu trả lời:


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

Nếu bạn thêm một số nhận xét vào câu trả lời của bạn, tôi sẽ chọn nó. Như nó đứng, nó không phải là một câu trả lời, chỉ là một đoạn mã. (Vâng, tôi biết nó hoạt động, nhưng đó không phải là quan điểm của tôi.)
ivanmp
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.