Jedną z rzeczy, które należy wziąć pod uwagę, jest sposób, w jaki MySQL używa buforów dla swoich głównych silników pamięci: InnoDB i MyISAM .
To, co leży w pamięci podręcznej, różni się znacznie między tymi silnikami pamięci.
InnoDB buforuje zarówno dane, jak i strony indeksowe. Są one ładowane do puli buforów InnoDB, której rozmiar jest określony przez innodb_buffer_pool_size .
MyISAM buforuje tylko strony indeksowe i są one ładowane do Key Cache (Key Buffer), który jest sortowany według key_buffer_size .
Musisz użyć pliku information_schema.tables, aby zająć rozmiary danych i indeksów na dysku w celu prawidłowego rozmiaru puli buforów InnoDB i bufora kluczy MyISAM .
W zależności od tego, ile masz danych i ile czasu na to pozwolisz, możesz ogrzać pamięć podręczną w następujący sposób:
Dla każdego stołu TableT
- Przejdź do każdego indeksu NDX
- dla każdego indeksu NDX
- uruchom WYBIERZ każdą kolumnę w NDX, przynajmniej jedną kolumnę nie zindeksowaną w TableT z TableT
W ten sposób gwarantujesz, że każda strona danych i indeksu zostanie przeczytana co najmniej raz. Usiądą w skrytce. Ta koncepcja jest praktykowana, częściowo i zasadniczo, przez Perconę . Percona wbudowała tę koncepcję w mk-slave-prefetch . To, co robi ten program, to
- odczyt przekaźników loguje się do slave'a przed przetwarzaniem w nim SQL-a
- pobierz instrukcję SQL z dziennika przekazywania i przekonwertuj ją na WYBÓR, korzystając z klauzul WHERE, GROUP BY i ORDER BY jako przewodnika wyboru indeksów
- wykonaj instrukcję SELECT, która pochodzi z przekonwertowanego SQL
To zmusza slave do posiadania 99,99% danych potrzebnych przez slave do szybkiego przetwarzania SQL. To sprawia, że niewolnik jest przygotowany na wypadek, gdybyś ręcznie przeszedł w tryb failover do niewolnika i wypromował go do mistrza, KTÓRYCH DACHÓW SĄ TYLKO O TYM SAMYM JAKU MASTER, OD KTÓREGO NIE SPADŁEŚ.
WNIOSEK
Nic nie przebije gotowych, chętnych i zdolnych do użycia pamięci podręcznych w środowisku intensywnych WSTAWEK, AKTUALIZACJI i USUŃ.
Spróbuj !!!
CAVEAT
Wraz z narodzinami produktów takich jak memcached, niektórzy z nich uniknęli konieczności odpowiedniego strojenia MySQL. To prawda, że wiele witryn korzysta ze zwiększenia pobierania danych dzięki kontrolowaniu zachowania danych w pamięci podręcznej, co programiści szybko zauważyli dzięki memcached. Wiele innych witryn, po prostu zmieniając silniki pamięci masowej lub poprawnie konfigurując MySQL, uzyskało te same korzyści w zakresie wydajności. Przed rezygnacją z bazy danych i ścisłym użyciem jej jako repozytorium, najlepiej wykorzystaj bazę danych. Postępuj zgodnie z należytą starannością, a możesz być mile zaskoczony, co MySQL zrobi dla Ciebie.