¿Cómo mejorar la eficiencia de la escritura escribiendo el contenido de múltiples archivos TXT en una base de datos MYSQL con 100 millones de datos? Solicite a los expertos que modifiquen el siguiente código.
Cuando un usuario no root ejecuta MySQL y la configuración de MySQL es alta, los valores efectivos de los parámetros operativos de MySQL son diferentes a los valores configurados, por lo que es necesario analizar específicamente cómo MySQL ajusta estos valores de los parámetros. El propósito de este artículo es explicar cómo MySQL ajusta estos tres parámetros cuando los recursos del sistema son insuficientes. Este artículo cubre los tres parámetros open_files_limit, max_connections y table_open_cache. El recurso del sistema relacionado con estos tres parámetros es el límite en la cantidad de archivos que se pueden abrir, es decir, el límite del descriptor de archivo (fd). La relación entre los parámetros del sistema y los descriptores de archivos es: -?-Cada conexión MySQL requiere un descriptor de archivo: Cada conexión MySQL requiere un descriptor de archivo -?table_open_cache?amp;?fd?Al menos un descriptor de archivo, por ejemplo, dos fds son; requerido para abrir MyISAM: la cantidad máxima de archivos abiertos en el sistema se puede ver usando "ulimit -n". Cómo ajustar los parámetros en MySQL
1. Calcule request_open_files (descriptores de archivos requeridos) según la configuración (valores de configuración o valores predeterminados de los tres parámetros); Obtenga el límite de Effective_open_files del valor del sistema;
3. Ajuste request_open_files (descriptor de archivo requerido);
4. 3. ¿Ajustar request_open_files según Effective_open_files;? 4. Según los request_open_files ajustados, calcule los valores de parámetros efectivos reales (mostrar variables, ver valores de parámetros). Calcular request_open_files: Hay tres fórmulas que se pueden usar para calcular request_open_files: 1. ?// max_connections max_number_of_tables_opened_at_the_same_time otros (varios registros, etc.) 2. limit_1= max_connections table_cache_size * 2 10; la conexión se abre en la tabla Número promedio (2-4) 5.// El código fuente está escrito así: 6.// Intentamos asignar no menos de 7.// max_connections*5 archivos manejan 8.limit_2= max_connections * 5; 9.10.//limit_3 = open_files_limit ? open_files_limit: 5000; 12.request_open_files= max(limit_1, limit_2, limit_3); Calcular Effective_open_files: ?MySQL piensa:?
MySQL intenta establecer el valor de Effective_open_files lo más grande posible dentro del rango de valores limitado.
Reparar request_open_files
requested_open_files= min( Effective_open_files,?request_open_files)
Recalcular valores de parámetros
Reparar open_files_limit
open_files_limit?=? Effective_open_files
Reparar max_connections
max_connections?limit = request_open_files - 10 - TABLE_OPEN_CACHE_MIN * 2;
Si el valor de configuración de max_connections es mayor que límite, entonces el valor de max_connections se corregirá para limitar
De lo contrario, max_connections conserva el valor configurado.
Tamaño_cache_tabla correcto
El tamaño_cache_tabla se corregirá según request_open_files. 1. ?// mysql table_cache_size mínimo, 4002.limit1 = TABLE_OPEN_CACHE_MIN3.?// Calcular 4.limit2 = (requested_open_files - 10 - max_connections) / 25.limit = max(limit1, limit2); el valor de table_cache_size configurado es mayor que el límite, el valor de table_cache_size se corregirá para limitar
De lo contrario, table_cache_size conserva el valor configurado
Ejemplo
Lo siguiente los casos de uso se utilizan en usuarios no ejecutados como root
Configuración de parámetros:
//mysql
max_connections = 500
table_open_cache = 999
>ulimit -n?
1500
Valores válidos:
open_files_limit = 1500 max_connections = min = 500
table_ open_cache = (1500 - 10 - 500) / 2 = 495