Jak zwiększyć wykorzystanie pamięci w MySQL Server, aby poprawić szybkość?


28

Mam serwer Windows 2008 z 8 GB pamięci RAM z uruchomionymi usługami IIS7 i MySQL. Śledziłem zużycie pamięci, procesora i dysku na serwerze i dowiedziałem się, że MySQL używa tylko 250 MB pamięci RAM, utrzymując dyski bardzo zajęte, mimo że mam dużo wolnego ram.

W SQL Server mogę łatwo ustawić ilość pamięci, której chcę użyć, szukam tego samego ustawienia w MySQL.

Jak skonfigurować MySQL, aby używał więcej pamięci i zmniejszał użycie procesora i dysku?

Odpowiedzi:


20

table_cachejest najbardziej użyteczną dyrektywą konfiguracyjną do zmiany. Za każdym razem, gdy MySQL uzyskuje dostęp do tabeli, ładuje ją do pamięci podręcznej. Jeśli masz dużą liczbę tabel, szybsze jest buforowanie ich.

Spójrz na zmienne serwera, uruchamiając:

show status;

i poszukaj zmiennej open_tables. Jeśli jest to ta sama table_cachewartość, co wartość i opened_tablesciągle rośnie, musisz zwiększyć table_cachewartość w pliku konfiguracyjnym. Aby znaleźć równowagę, eksperymentuj z tymi zmiennymi w godzinach szczytu. Chcesz go skonfigurować tak, aby w godzinach szczytu było go mało opened_tablesnawet po długim okresie bezczynności serwera.

key_buffer_sizejest również dobrą zmienną do eksperymentowania. Ta zmienna wpływa na rozmiar bufora indeksu, a powiększenie tej zmiennej zwiększa szybkość obsługi indeksu MySQL. Możesz zajrzeć na zmiennych z show variables;komendą ponownie, i porównać key_read_requestsdo key_reads. Idealnie byłoby, gdyby stosunek między tymi dwiema zmiennymi był jak najniższy, i można to zrobić, zwiększając rozmiar key_buffer_size. Jeśli ustawisz tę zmienną wyżej, będziesz mieć mniej zapisów i odczytów bezpośrednio na dysk iz dysku, co było twoim głównym zmartwieniem.


11
Właściwie to polecenie show status; wyświetla zmienne stanu, takie jak Open_tablesi Opened_tables. table_cachewygląda na to, że został usunięty w najnowszych wersjach MySQL.
Matt Fenwick,

5

Musisz zmienić wartości w my.cnfpliku i zrestartować MySQL, chociaż możesz zmienić wiele z nich również podczas działania MySQL („SET GLOBAL VARIABLE = wartość ”).

Prawdopodobnie będzie chciał spojrzeć na zwiększenie key_buffer_size, sort_buffer, read_bufferi table_cachena początek i prawdopodobnie innodb_buffer_pool_size, jeśli masz żadnych tabel InnoDB. Niektóre z tych wartości można znacznie zwiększyć (nawet o dwa rzędy wielkości), szczególnie biorąc pod uwagę sprzęt. Domyślne ustawienia MySQL są wyjątkowo konserwatywne i wydają się być ukierunkowane na popularne komputery stacjonarne o mieszanym zastosowaniu sprzed około dziesięciu lat. Aha, i ostrzegamy, że wersja 32-bitowa będzie miała problemy z użyciem więcej niż 2 GB pamięci RAM.

Więcej informacji i wskazówek znajdziesz w podręczniku MySQL .

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.