Zgodnie z dokumentacją MySQL należy ustawić thread_cache_size
tak, aby większość nowych połączeń używała wątków z pamięci podręcznej, a nie nowo tworzonych wątków. Oszczędza to trochę narzutów związanych z tworzeniem wątków, choć zwykle nie powoduje znaczącej poprawy wydajności:
Żądania dotyczące wątków są spełnione przez ponowne użycie wątków pobranych z pamięci podręcznej, jeśli to możliwe, i tylko wtedy, gdy pamięć podręczna jest pusta, tworzony jest nowy wątek. Zmienną tę można zwiększyć, aby poprawić wydajność, jeśli masz wiele nowych połączeń. Zwykle nie zapewnia to zauważalnej poprawy wydajności, jeśli masz dobrą implementację wątku. Jeśli jednak twój serwer widzi setki połączeń na sekundę, powinieneś normalnie ustawić wystarczająco wartość thread_cache_size, aby większość nowych połączeń używała buforowanych wątków . (źródło)
Oznaczałoby to, że należy ustawić thread_cache_size
tak, aby Threads_created / Connections
(% połączeń, które prowadzą do tworzenia nowych wątków) był raczej niski. Jeśli weźmiesz dokumenty MySQL dosłownie („większość”), wartość powinna wynosić <50%. Odpowiedź RolandoMySQLDBA mówi <1%. Nie wiem, kto jest bliżej prawdy.
Należy nie ustawić thread_cache_size
wyższy niż Max_used_connections
. Ostatnie zdanie w odpowiedzi RolandoMySQLDBA („Przynajmniej rozmiar_waga_cache powinien być większy niż Max_used_connections”) nie wydaje się sensowne, ponieważ mówi, że należy przechowywać więcej wątków w pamięci podręcznej, niż kiedykolwiek serwer używa. MySQL nigdy nie umieści tak wielu wątków w pamięci podręcznej - nie wyprzedza wątków w pamięci podręcznej - umieszcza je tylko wtedy, gdy klient utworzy wątek i rozłączy się. Jeśli nigdy nie masz X klientów łączących się w tym samym czasie, nigdy nie będziesz mieć X wątków w buforze:
Gdy klient się rozłącza, wątki klienta są umieszczane w pamięci podręcznej, jeśli jest tam mniej niż wątków wątku rozmiar_pamięci_podręcznej. (źródło)
Zobacz także tę odpowiedź Michaela:
Ustawienie wartości thread_cache_size na wartość większą niż max_connections wydaje się być ogromnie nieprzydatną radą ... pamięć podręczna nie może wzrosnąć więcej niż max_connections, a nawet pamięć podręczna w pobliżu tego rozmiaru może mieć sens tylko wtedy, gdy masz ogromną ilość rezygnacji z wątków ... co w dobrze zachowującej się aplikacji nie będzie miało miejsca.
/dba//a/28701