¿Cómo se calcula la variable mysql max_ connections?


Respuestas:


27

Voy a publicar esto como una respuesta, con la información relevante. Las fórmulas básicas son:

RAM disponible = Buffers globales + (Thread Buffers x max_ connections)

max_ connections = (RAM disponible - Buffers globales) / Buffers de subprocesos

Para obtener la lista de buffers y sus valores:

SHOW VARIABLES LIKE '%buffer%';

Aquí hay una lista de los buffers y si son Global o Thread:

Buffers globales : key_buffer_size, innodb_buffer_pool_size, innodb_log_buffer_size, innodb_additional_mem_pool_size, net_buffer_size, query_cache_size

Buffers de subprocesos : sort_buffer_size, myisam_sort_buffer_size, read_buffer_size, join_buffer_size, read_rnd_buffer_size, thread_stack


1
KCD proporcionó este enlace como una calculadora de memoria máxima: mysqlcalculator.com
Derek Downey

Derek, ¿te refieres a "Buffers globales = SUMA de todas las variables de buffers globales y Buffers de subprocesos = suma de todas las variables de buffers de hilos"?
Mat

11

¡ADVERTENCIA! Esto es de 2011 usando MySQL 5.1.x. Úselo bajo su propio riesgo

---- POSTE ORIGINAL ----

Aquí hay otra fórmula alternativa en forma de procedimiento almacenado:

DELIMITER //
CREATE PROCEDURE sproc_show_max_memory ( OUT max_memory DECIMAL(7,4))
BEGIN
SELECT ( @@key_buffer_size + @@query_cache_size + @@tmp_table_size + @@innodb_buffer_pool_size + @@innodb_additional_mem_pool_size + @@innodb_log_buffer_size + @@max_connections * ( @@read_buffer_size + @@read_rnd_buffer_size + @@sort_buffer_size + @@join_buffer_size + @@binlog_cache_size + @@thread_stack ) ) / 1073741824 AS MAX_MEMORY_GB INTO max_memory;
END//
DELIMITER ;
CALL sproc_show_max_memory(@show_max_memory);
SELECT @show_max_memory;

Supongo que estás usando una base de datos MySQL> versión 5.1.xy eres un usuario privilegiado. Pero juegas con las conexiones máximas insertando el número que quieras y ves los resultados.


1
Acabo de leer tu fórmula. Bastante hábil !!! Por cierto +1 !!!
RolandoMySQLDBA

2
Probablemente sea hora de volver a visitar esta fórmula, dados todos los cambios en 5.5 y 5.6, pero aún es bastante útil.
randomx


0

Estoy mirando con el número que obtengo de la simple calulación: número_de_especificado_de_pesadas_por_segundo * esperado_proceso_de_procesamiento_hora * 2.

Para ajustes posteriores, siempre uso un sistema de monitoreo con datos históricos y trato de tener un 20% reservado en caso de algún pico. Es un poco más complejo cuando usa algunas agrupaciones de conexiones (que generalmente es una buena idea), entonces necesita monitorear la cantidad de conexiones usadas en la agrupación.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.