Máximo (teoricamente) possível uso de memória = Total Server Buffer + (max_connections * Buffer por thread), que é:
key_buffer_size + tmp_table_size + max_heap_table_size + max_heap_table_size + tmp_table_size + innodb_buffer_pool_size + innodb_additional_mem_pool_size + innodb_log_buffer_size + query_cache_size + (max_connections * (read_buffer_size + read_rnd_buffer_size + sort_buffer_size + thread_stack + join_buffer_size))
O que será um bom número depende desses componentes. Como você ajustará esses componentes depende do que seu banco de dados faz.
Você pode definir max_connections
a 100 e outros parâmetros para valores mais altos que o normal e todos os segmentos serão rápidos devido a buffers grandes, você pode defini-los como 800 e outros parâmetros com valores menores que o normal e DB pode se tornar lento para cada conexão porque lerá dados do disco para cache global.
Então, tudo depende do seu banco de dados, quantos dados ele processará no momento e como você otimizará sua configuração para ele.
Você precisa examinar todos os parâmetros listados aqui para saber quais são os valores ideais para o seu banco de dados. Talvez, sua arquitetura de aplicativo e banco de dados seja tão ruim, que você tenha associações muito grandes e join_buffer_size
seja muito grande, ou talvez precise de classificação, portanto, cada thread pode comer mais e mais memória ram, mas isso não significa que todos os threads fará isso ao mesmo tempo. Isso é máximo teórico. Média, os valores ideais podem variar. Você pode ter 10000000 solicitações que exigem apenas 8 MB de RAM por thread para funcionar totalmente com o buffer, mas um thread pode exigir 10 GB de RAM para operar com o buffer. Pode não ser ideal alterar os parâmetros para satisfazer essa consulta grande. Então, depende:)
Permita que seu aplicativo seja executado, colete estatísticas e otimize o BD de acordo, e não vice-versa.