Esta es un facil guia para conocer cuales directivas o parametros de la configuracion de MySQl (my.cnf) debemos cambiar para activar la funcion de multi thread en servidores de bases de datos en MySQL.
Si ejecutan el comando top en su sistema linux, podran ver como MySQL utiliza como maximo el 100% de procesador. Lo que haremos es aumentar la disponibilidad de procesadores o CPUs independientes para el proceso de MySQL.
Tomemos como ejemplo un servidor pequeño, con 4GB de ram y procesadores Xeon Duales. Como observacion la configuracion a continuacion se debe a que el servidor no es exclusivo para bases de datos, entonces tiene que compartir la memoria y recursos con otros servicios.
datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock skip-locking skip-innodb query_cache_limit=1M query_cache_size=32M query_cache_type=1 max_connections=900 interactive_timeout=100 wait_timeout=100 connect_timeout=10 thread_cache_size=128 key_buffer=200M join_buffer=1M max_allowed_packet=16M table_cache=1536 sort_buffer_size=1M read_buffer_size=1M read_rnd_buffer_size=1M max_connect_errors=10 # A continuacion la variable para aumentar los hilo de concurrencia thread_concurrency=4 myisam_sort_buffer_size=64M #log-bin server-id=1
Como pueden ver el parametro que ingresamos en thread_concurrency lo obtenemos al multiplicar nuestros procesadores fisicos por 2 y de esa forma activamos los beneficios de multiples procesos para MysQL. Es una medicion comun y aceptable.
Para aumentar el rendimiento del servidor MySQL tambien modificamos los siguientes parametros;
query_cache_limit=1M query_cache_size=32M query_cache_type=1
Recomendaciones para optimizar MysQL en servidores pequeños
Servidor con 512MB RAM:
thread_cache_size=50 key_buffer=40M table_cache=384 sort_buffer_size=768K read_buffer_size=512K read_rnd_buffer_size=512K thread_concurrency=2
Servidor con 1 GB ram:
thread_cache_size=80 key_buffer=150M table_cache=512 sort_buffer_size=1M read_buffer_size=1M read_rnd_buffer_size=768K thread_concurrency=2
http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_thread_concurrency
sysvar_thread_concurrency solo se usa en Solaris
Hola.
En los VPS de un solo procesador pero 4 nucleos, que valor se debe poner en: thread_concurrency?
Es normal que procesos de mysql superen el 150% de uso de CPU mirandolo a traves de TOP?
Gracias.
Cuando esta al 150% es porque esta utilizando mas de 1 procesador.
Excelente info, me resulto muy útil y mejoro la velocidad de respuesta de mi servidor mysql.
Muchas Gracias!!!