Czy indeksy zużywają pamięć?


10

Właśnie zaczynam się uczyć o użyciu pamięci na serwerze SQL. Podczas korzystania z zapytania w odpowiedzi na pytanie SQL Server 2008 R2 „Ghost Memory”? , Odkryłem, że pojedyncza baza danych zajmuje lwia część przestrzeni w puli buforów. Patrząc dalej, używając sys.allocation_unitsi sys.indexespotwierdziłem, że jest to prawdopodobnie spowodowane dużym wykorzystaniem indeksów w bazie danych. Większość indeksów jest zgrupowana.

Inny programista bazy danych uważa, że ​​mamy problemy z pamięcią na serwerze - że zapytania zaczynają działać długo, ponieważ nie ma dostępnej pamięci.

Moje pytanie brzmi - czy użycie tych indeksów i ich istnienie w puli buforów zabiera pamięć dostępną dla innych procesów?


2
"Another database developer believes we are having memory issues on the server"-- Na podstawie czego? Ile pamięci RAM ma serwer, jakie są ustawienia pamięci instancji i ile pamięci zajmuje pamięć podręczna procedur?
Jon Seigel

Na podstawie wydłużonych czasów zapytań i patrzenia na Menedżera zadań - który według moich badań jest „brudnym, brudnym kłamcą” (dzięki Brent Ozar - brentozar.com/archive/2011/09/... ). Może się zdarzyć, że nie ma problemu z pamięcią - stosuję się do wszystkich sugestii zawartych w tych komentarzach i odpowiedziach!
JHFB

2
Ponieważ toczymy tutaj kulę 8, myślę, że zapytania działają wolno, ponieważ zostały napisane przez tego „innego” programistę baz danych ...
Remus Rusanu,

Odpowiedzi:


12

Tak, strony danych używanego indeksu buforowane w puli buforów zajmują miejsce w pamięci podręcznej danych . Ale nie pozwól, aby to odwróciło cię od używania indeksów (po pierwsze, indeks klastrowany to rzeczywiste dane tabeli, więc miej to również na uwadze). Korzystanie z indeksów (oczywiście odpowiednio zaprojektowanych i wdrożonych) jest dobrą rzeczą.

Problemy z pamięcią najprawdopodobniej nie wynikają z posiadania indeksów na stołach . Zanurz się w problemach z pamięcią, jakie dokładnie są problemy? Czy masz niską oczekiwaną długość życia strony ? Jak twoja pamięć jest skonfigurowana na serwerze? Czy maksymalna pamięć serwera jest zbyt niska, ograniczając wielkość puli buforów?

Aby uzyskać podział stron indeksu w pamięci podręcznej danych, możesz uruchomić poniższe zapytanie:

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

Aby uzyskać te statystyki według bazy danych:

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

Przyzwoita (?) Długość życia strony - 4234. Muszę zbadać współczynnik trafień w pamięci podręcznej bufora i zajrzeć do innych części.
JHFB

To PLE w ogóle nie pokazuje presji pamięci. Coś ponad 1000 jako ogólna zasada (oczywiście zawsze istnieje „to zależy”) jest dopuszczalne.
Thomas Stringer

Współczynnik trafień w pamięci podręcznej bufora może być bardzo mylący lub bezużyteczny. Zobacz wielkie debaty SQL Server: Współczynnik trafień bufora bufora przez @JonathanKehayias.
Mark Storey-Smith

@ MarkStorey-Smith Zauważono, dziękuję za wskaźnik!
Thomas Stringer,

@JHFB Cofnijmy się o krok. Co sprawia, że ​​myślisz, że masz presję pamięci?
Thomas Stringer,

7

Indeksy zajmują miejsce w puli buforów, tak. To kolejny powód, dla którego powinieneś zadbać o swoją strategię indeksowania i zminimalizować duplikaty.

Potwierdziłem, że jest to prawdopodobnie spowodowane dużym wykorzystaniem indeksów w bazie danych. Większość indeksów jest zgrupowana.

Pamiętaj, że indeks klastrowany to tabela . Jedyny narzut, jaki istnieje dla indeksu klastrowego ponad stertę (co jest na ogół niepożądane), dotyczy stron indeksowych niepozostawiających liści i włączenia klucza klastra do wszystkich indeksów nieklastrowanych dla tej tabeli. Dlatego preferowane są wąskie klucze klastra.

Artykuły Kimberley Tripp na temat klastrowych wyborów kluczowych są do tego doskonałym odniesieniem.


+1 Że artykuły pani Tripp są EPIC na kluczach do klastrowania ...
Fabricio Araujo
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.