La optimización del rendimiento de MySQL implica muchos aspectos. Este artículo explica algunos parámetros clave en MySQL. Estos parámetros son, hasta cierto punto, los parámetros clave que determinan el rendimiento de la base de datos MySQL. A menudo nos encontramos con problemas de rendimiento durante la gestión y el desarrollo de bases de datos, lo que implica la optimización del rendimiento de MySQL. A través de la búsqueda de información en Internet y los propios intentos del autor, creo que los siguientes parámetros del sistema son más críticos:
Parámetro clave uno: back_log
El número de conexiones que MySQL debe tener. Esto funciona cuando el hilo principal de MySQL recibe muchas solicitudes de conexión en un corto período de tiempo, y luego el hilo principal toma algún tiempo (aunque sea brevemente) para verificar las conexiones e iniciar un nuevo hilo.
El valor back_log indica cuántas solicitudes se pueden almacenar en la pila en un corto período de tiempo antes de que MySQL deje de responder temporalmente a nuevas solicitudes. Sólo si espera muchas conexiones en un corto período de tiempo necesita aumentarlo; en otras palabras, este valor es el tamaño de la cola de escucha para las conexiones TCP/IP entrantes. Su sistema operativo tiene su propio límite en el tamaño de esta cola. Intentar establecer back_log por encima del límite de su sistema operativo no tendrá ningún efecto.
Cuando observa la lista de procesos de su host y encuentra una gran cantidad de 264084 | usuarios no autenticados | xxx.xxx.xxx.xxx | NULL | Connect | NULL | El valor predeterminado es 50, lo cambié a 500.
Parámetro clave dos: Interactive_timeout
La cantidad de segundos que el servidor espera una acción en una conexión interactiva antes de cerrarla. Un cliente interactivo se define como un cliente que utiliza la opción CLIENT_INTERACTIVE para mysql_real_connect(). El valor predeterminado es 28800, lo cambié a 7200.
Parámetro clave tres: key_buffer_size
Los bloques de índice están almacenados en buffer y son compartidos por todos los subprocesos. key_buffer_size es el tamaño del búfer utilizado para los bloques de índice; increméntelo para obtener un mejor manejo del índice (para todas las lecturas y escrituras múltiples), tanto como pueda. Si lo hace demasiado grande, el sistema comenzará a buscar y se ralentizará mucho. El valor predeterminado es 8388600 (8M) y mi host MySQL tiene 2 GB de memoria, así que lo cambié a 402649088 (400 MB).
Parámetro clave cuatro: max_connections
El número de clientes simultáneos permitidos. Al aumentar este valor, aumenta la cantidad de descriptores de archivos requeridos por mysqld. Este número debe aumentarse; de lo contrario, verá errores de demasiadas conexiones con frecuencia. El valor predeterminado es 100, lo cambié a 1024.
Parámetro clave cinco: record_buffer
Cada subproceso que realiza un escaneo secuencial asigna un búfer de este tamaño para cada tabla que escanea. Si realiza muchos escaneos secuenciales, es posible que desee aumentar este valor. El valor predeterminado es 131072 (128K), lo cambié a 16773120 (16M)
Parámetro clave seis: sort_buffer
A cada hilo que necesita ordenarse se le asigna un búfer de este tamaño. Aumentar este valor acelera las operaciones ORDER BY o GROUP BY. El valor predeterminado es 2097144 (2M), lo cambié a 16777208 (16M).
Parámetro clave siete: table_cache
El número de tablas abiertas para todos los subprocesos. Al aumentar este valor, aumenta la cantidad de descriptores de archivos requeridos por mysqld. MySQL requiere 2 descriptores de archivos para cada tabla abierta única. El valor predeterminado es 64, lo cambié a 512.
Parámetro clave ocho: thread_cache_size
La cantidad de subprocesos almacenados que se pueden reutilizar. Si lo hay, el nuevo hilo se recupera del caché y, si hay espacio cuando se desconecta la conexión, el hilo del cliente se coloca en el caché. Si hay muchos subprocesos nuevos, este valor de variable se puede utilizar para mejorar el rendimiento. Al comparar las variables en los estados Connections y Threads_created, puede ver la función de esta variable. Lo puse en 80.
Parámetro clave nueve: wait_timeout
La cantidad de segundos que el servidor espera una acción en una conexión antes de cerrarla. El valor predeterminado es 28800, lo cambié a 7200.
Nota: El ajuste de parámetros se puede lograr modificando el archivo /etc/my.cnf y reiniciando MySQL. Este es un trabajo relativamente cauteloso y los resultados anteriores son solo algunas de mis opiniones. Puede modificarlo aún más de acuerdo con las condiciones del hardware de su propio host (especialmente el tamaño de la memoria).