MOJA KONFIGURACJA ( przykład )
Korzystam z systemu Linux na instancji Amazon High CPU Extra Large EC2 z następującymi specyfikacjami:
- 7 GB pamięci
- 20 jednostek obliczeniowych EC2 (8 wirtualnych rdzeni z 2,5 jednostkami obliczeniowymi EC2 każda)
- 1690 GB pamięci instancji lokalnej
- Platforma 64-bitowa
Mam dwie duże bazy danych MySQL uruchomione na silniku pamięci MyISAM. Jeden ma 2 GB, a drugi 500 MB. Chciałbym się upewnić, że MySQL zużywa tyle pamięci RAM, ile może / potrzebuje, aby zmaksymalizować prędkości zapytań. Wiem, że istnieje kilka opcji konfiguracyjnych pamięci MySQL jak key_buffer_size
i MyISAM_sort_buffer_size,
ale jestem zaznajomiony z optymalizacją nich.
PYTANIA
- Jak sprawdzić, jakiej pamięci MySQL używa obecnie w systemie Linux?
- Jak zmaksymalizować / zoptymalizować wykorzystanie pamięci MySQL?
- Zakładając, że moje zapytania i schemat są zoptymalizowane, jakie inne zmiany powinienem rozważyć?
Odpowiedzi:
To trudny temat. Nie ma tu odpowiedzi, napisano o tym całe książki . Zalecam, aby Twój rozmiar innodb_buffer_pool_size był wystarczająco duży. Jeśli używasz tabel myisam, sprawdź key_buffer_size. Należy również wziąć pod uwagę table_cache i max_connections.
Oto coś, co może ci pomóc:
http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/ http://www.mysqlperformanceblog.com/2007/11/01/innodb- Performance-Optimization-Basics / http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/
EDYTOWAĆ:
Jak powiedział @ drew010, ważne jest, aby wziąć pod uwagę rodzaj zastosowania, jaki ma DB. Strojenie dla ciężkiego odczytu DB jest bardzo różne niż ciężkie zapisywanie. Możesz także rozważyć inne strategie. Jak Memcached, bazy danych nosql itp.
źródło
Jeśli chcesz mieć pewność, że MySQL zużywa całą potrzebną pamięć, musisz przełączyć się na InnoDB. O ile nie użyjesz
FULLTEXT
możliwości wyszukiwania MySQL , nie będzie żadnych poważnych problemów.W przypadku MyISAM wykorzystywanych jest wiele pamięci podręcznych, w tym wewnętrzne bufory kluczy MySQL i pamięć podręczna systemu. Jeśli chcesz uzyskać najlepszą wydajność, musisz zostawić miejsce dla jednej z pamięci podręcznych, ale nadal nie polecam MyISAM do tego celu, szczególnie jeśli twoje bazy danych są obciążone zapisem: MyISAM blokuje całą tabelę podczas zapisu, podczas gdy InnoDB blokuje tylko dotknięte wiersze.
Nawet jeśli umieścisz wszystkie swoje bazy danych w pamięci, nadal możesz mieć wolno działające zapytania z powodu niewystarczających indeksów lub z innych powodów.
źródło