Các chỉ số có tiêu thụ bộ nhớ?


10

Tôi mới bắt đầu tìm hiểu về việc sử dụng bộ nhớ trên SQL Server. Khi sử dụng truy vấn trong câu trả lời cho câu hỏi "Bộ nhớ ma" của SQL Server 2008 R2? , Tôi phát hiện ra rằng một cơ sở dữ liệu duy nhất đang chiếm phần không gian của sư tử trong vùng đệm. Nhìn xa hơn, sử dụng sys.allocation_unitssys.indexes, tôi xác nhận điều này có khả năng gây ra bởi việc sử dụng nhiều chỉ mục trong cơ sở dữ liệu. Hầu hết các chỉ mục được nhóm lại.

Một nhà phát triển cơ sở dữ liệu khác tin rằng chúng tôi đang gặp vấn đề về bộ nhớ trên máy chủ - rằng các truy vấn đang bắt đầu chạy dài vì không có bộ nhớ khả dụng.

Câu hỏi của tôi ở đây là - việc sử dụng các chỉ mục này và sự tồn tại của chúng trong vùng đệm có lấy đi bộ nhớ cho các tiến trình khác không?


2
"Another database developer believes we are having memory issues on the server"-- Dựa trên cái gì? Máy chủ có bao nhiêu RAM, cài đặt bộ nhớ cá thể là bao nhiêu và bao nhiêu bộ nhớ đang được sử dụng bởi bộ đệm thủ tục?
Jon Seigel

Dựa trên thời gian truy vấn mở rộng và xem Trình quản lý tác vụ - mà nghiên cứu của tôi đã chỉ ra là "kẻ nói dối bẩn thỉu" (cảm ơn Brent Ozar - brentozar.com/archive/2011/09/ .) Tôi có thể thấy không có vấn đề về bộ nhớ - Tôi đang làm theo tất cả các đề xuất được cung cấp trong các nhận xét và câu trả lời này!
JHFB

2
Vì chúng tôi đang lăn 8 quả bóng ở đây, tôi nghĩ rằng các truy vấn chạy chậm vì chúng được viết bởi nhà phát triển cơ sở dữ liệu 'khác' đó ...
Remus Rusanu

Câu trả lời:


12

Có, các trang dữ liệu của một chỉ mục được sử dụng được lưu trong bộ đệm sẽ chiếm không gian trong bộ đệm dữ liệu . Nhưng đừng để điều đó khiến bạn không sử dụng các chỉ mục (trước hết, một chỉ mục được nhóm là dữ liệu bảng thực tế vì vậy hãy ghi nhớ điều đó). Tất nhiên, việc sử dụng các chỉ mục (được thiết kế và thực hiện đúng) là một điều tốt.

Vấn đề bộ nhớ của bạn rất có thể không có chỉ mục trên các bảng của bạn . Đi sâu vào các vấn đề bộ nhớ, chính xác những vấn đề là gì? Bạn có tuổi thọ trang thấp ? Bộ nhớ của bạn được cấu hình trên máy chủ như thế nào? Là bộ nhớ máy chủ tối đa đến mức giới hạn thấp kích thước của vùng đệm?

Để phân tích các trang chỉ mục trong bộ đệm dữ liệu của bạn, bạn có thể chạy truy vấn bên dưới:

select
    count(*) as total_page_count,
    count(*) * 8 as total_consumption_kb,
    sum(row_count) as total_row_count
from sys.dm_os_buffer_descriptors
where page_type = 'INDEX_PAGE'
group by page_type

Để có được các số liệu thống kê theo cơ sở dữ liệu:

select
    db_name(database_id) as database_name,
    count(*) as total_page_count,
    count(*) * 8 as total_consumption_kb,
    sum(row_count) as total_row_count
from sys.dm_os_buffer_descriptors
where page_type = 'INDEX_PAGE'
group by database_id
order by total_consumption_kb desc

Tuổi thọ trang của Decent (?) - 4234. Tôi cần nghiên cứu tỷ lệ nhấn bộ đệm bộ đệm và xem xét các phần khác.
JHFB

PLE đó hoàn toàn không hiển thị áp lực bộ nhớ. Bất cứ điều gì trên 1000 như một quy tắc chung (tất nhiên, luôn luôn có "nó phụ thuộc") là chấp nhận được.
Thomas Stringer

Tỷ lệ nhấn bộ đệm bộ đệm có thể rất sai lệch, hoặc ra và vô dụng. Xem các cuộc tranh luận về máy chủ SQL tuyệt vời: Tỷ lệ truy cập bộ đệm của bộ đệm của @JonathanKehayias.
Mark Storey-Smith

@ MarkStorey-Smith Lưu ý, cảm ơn vì con trỏ!
Thomas Stringer

@JHFB Hãy lùi lại một bước. Điều gì khiến bạn nghĩ rằng bạn đang có áp lực bộ nhớ?
Thomas Stringer

7

Chỉ số tiêu thụ không gian bể đệm, có. Đây là một lý do nữa tại sao bạn nên quan tâm đến chiến lược lập chỉ mục của mình và giảm thiểu trùng lặp.

Tôi xác nhận điều này có khả năng gây ra bởi việc sử dụng nhiều chỉ mục trong cơ sở dữ liệu. Hầu hết các chỉ mục được nhóm lại.

Hãy nhớ rằng một chỉ mục cụm là bảng . Chi phí duy nhất tồn tại cho một chỉ mục được nhóm nhiều lần trở lên cho một heap (thường không mong muốn) là dành cho các trang chỉ mục không có lá và bao gồm khóa cụm trong tất cả các chỉ mục không được phân cụm cho bảng đó. Đây là lý do tại sao khóa cụm hẹp được ưa thích.

Các bài viết của Kimberley Tripp về các lựa chọn chính được nhóm lại là một tài liệu tham khảo tuyệt vời cho việc này.


+1 Các bài viết của Ms Tripp là EPIC trên các cụm phân cụm ...
Fabricio Araujo
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.