Згідно з документами MySQL, ви повинні встановити thread_cache_size
так, що більшість нових з'єднань використовують потоки з кеша, а не новостворені потоки. Це економить деякі накладні витрати на створення потоку, хоча зазвичай не створює значного покращення продуктивності:
Запити на потоки задовольняються повторним використанням ниток, взятих із кеша, і лише тоді, коли кеш порожній, створюється новий потік. Цю змінну можна збільшити для підвищення продуктивності, якщо у вас багато нових підключень. Зазвичай це не забезпечує помітного поліпшення продуктивності, якщо у вас є хороша реалізація потоку. Однак, якщо ваш сервер бачить сотні підключень в секунду, вам слід встановити достатньо високий thread_cache_size, щоб більшість нових з'єднань використовували кешовані потоки . (джерело)
Це означає, що ви повинні встановити thread_cache_size
так, що Threads_created / Connections
(% з'єднань, що призводять до створення нових потоків), є досить низьким. Якщо ви приймете документи MySQL буквально ("більшість"), значення повинно бути <50%. Відповідь RolandoMySQLDBA говорить <1%. Я не знаю, хто ближче до істини.
Ви не повинні встановлювати thread_cache_size
вище, ніж Max_used_connections
. Заключне речення у відповіді RolandoMySQLDBA ("Принаймні, розмір теми_cache_size повинен бути більшим, ніж Max_used_connections") не здається розумним, оскільки в ньому йдеться про те, що ви повинні зберігати більше тем у кеші, ніж коли-небудь використовує ваш сервер . MySQL ніколи не поміщає стільки потоків у кеш-пам'ять - він попередньо не ставить потоки в кеш - він розміщує їх туди лише після того, як клієнт створить потік і відключиться. Якщо у вас ніколи не підключаються одночасно X-клієнти, ви ніколи не матимете потоків X у кеші:
Коли клієнт відключається, потоки клієнта поміщаються в кеш-пам'ять, якщо там менше ниток thread_cache_size. (джерело)
Дивіться також цю відповідь Майкла:
Визначення значення thread_cache_size до значення, що перевищує max_connections, здається надзвичайно корисним порадою ... кеш не може зрости більшим, ніж max_connections, і навіть кеш у будь-якому місці, близького до цього розміру, може мати сенс лише, якщо у вас є величезна кількість збиття ... що у добре сприйнятій програмі не буде.
/dba//a/28701