De acuerdo con los documentos de MySQL, debe configurar thread_cache_size
para que la mayoría de las conexiones nuevas usen hilos del caché en lugar de hilos recién creados. Esto ahorra algunos gastos generales de creación de subprocesos, aunque normalmente no crea una mejora significativa del rendimiento:
Las solicitudes de subprocesos se satisfacen reutilizando los subprocesos tomados del caché si es posible, y solo cuando el caché está vacío se crea un nuevo subproceso. Esta variable se puede aumentar para mejorar el rendimiento si tiene muchas conexiones nuevas. Normalmente, esto no proporciona una mejora notable en el rendimiento si tiene una buena implementación de subprocesos. Sin embargo, si su servidor ve cientos de conexiones por segundo, normalmente debería establecer thread_cache_size lo suficientemente alto como para que la mayoría de las conexiones nuevas usen hilos en caché . (fuente)
Esto significaría que debe configurar su thread_cache_size
modo para que Threads_created / Connections
(el% de conexiones que conducen a la creación de nuevos hilos) sea bastante bajo. Si toma los documentos de MySQL literalmente ("la mayoría"), el valor debe ser <50%. La respuesta de RolandoMySQLDBA dice <1%. No sé quién está más cerca de la verdad.
Usted debe no establecer thread_cache_size
más alto que Max_used_connections
. La oración final en la respuesta de RolandoMySQLDBA ("Como mínimo, thread_cache_size debería ser mayor que Max_used_ connections") no parece sensata porque dice que debe mantener más hilos en la memoria caché de los que utiliza su servidor . MySQL nunca colocará tantos subprocesos en el caché de todos modos, no coloca subprocesos preventivamente en el caché, solo los coloca allí después de que un cliente crea un subproceso y se desconecta. Si nunca tiene clientes X conectados al mismo tiempo, nunca tendrá hilos X en el caché:
Cuando un cliente se desconecta, los hilos del cliente se colocan en la memoria caché si hay menos hilos de thread_cache_size allí. (fuente)
Ver también esta respuesta de Michael:
Establecer thread_cache_size en un valor mayor que max_ connections parece un consejo tremendamente inútil ... el caché no puede crecer más que max_ connections e incluso un caché en cualquier lugar cercano a ese tamaño solo podría tener sentido si tiene una gran cantidad de rotación en sus hilos ... lo cual, en una aplicación con buen comportamiento, no será el caso.
/dba//a/28701