Ajustar los parámetros de ejecución de MySQL, modificar el archivo /etc/my.cnf Ajustar los parámetros de ejecución de MySQL para que surjan efecto tras reiniciar MySQL, después de la versión 4 de MySQL, algunas variables internas pueden configurarse en tiempo de ejecución de MySQL, pero será inválido cuando se reinicie MySQL. Programa MySQL - Directorios y archivos basedir = ruta # Usa el directorio dado como directorio raíz (directorio de instalación). datadir = path # Lee el archivo de la base de datos de un directorio dado. pid-file = nombre de archivo # Especificar un archivo para el programa mysqld que almacene el ID del proceso (disponible solo para sistemas UNIX/Linux);
[mysqld] socket = /tmp/mysql.sock # Especifica un archivo socket para la comunicación local entre el programa cliente MySQL y el servidor (el archivo por defecto es /var/lib/mysql/mysql.sock en Linux) port=3306 # Especifica el puerto que escucha MsSQL key_buffer = 384M # key_buffer es el tamaño del búfer utilizado para indexar bloques, aumentando el índice que maneja mejor (para todas las lecturas y multiescrituras). El bloque índice está almacenado en búfer y compartido por todos los hilos, y el tamaño del key_buffer depende del tamaño de la memoria. table_cache = 512 # El número de tablas abiertas para todos los hilos. Aumentar este valor incrementa el número de descriptores de archivo requeridos por mysqld. Evita la sobrecarga de abrir tablas de datos con frecuencia sort_buffer_size = 2M # Asigna un búfer de ese tamaño para cada hilo que necesite ordenarse. Aumentar este valor acelera las operaciones ORDER BY o GROUP BY. Nota: ¡La memoria asignada correspondiente a este parámetro es exclusiva de cada conexión! Si hay 100 conexiones, entonces el tamaño total del búfer de clasificación realmente asignado es 100×6 = 600MB read_buffer_size = 2M # El tamaño del búfer que puede usarse para la operación de consulta de lectura. Al igual que en sort_buffer_size, la memoria asignada correspondiente a este parámetro también es exclusiva de cada conexión. query_cache_size = 32M # Especifica el tamaño del búfer de resultados de la consulta MySQL read_rnd_buffer_size = 8M # Cambia el parámetro para leerse aleatoriamente después de ordenar usando el puntero de fila. myisam_sort_buffer_size =64M # Se requiere búfer para reordenar las tablas MyISAM cuando cambian thread_concurrency = 8 # El número máximo de hilos concurrentes se establece como el número de CPUs lógicas del servidor ×2, y si la CPU soporta hiperhilo H.T, × 2 thread_cache = 8 # #缓存可重用的线程数 El bloqueo de salto # evita el bloqueo externo de MySQL, reduce la posibilidad de errores y mejora la estabilidad. [mysqldump] max_allowed_packet =16M # El paquete máximo posible de información que se puede enviar entre el servidor y el cliente
[mi isamchk] key_buffer = 256M sort_buffer = 256M read_buffer = 2M write_buffer = 2M
Otros parámetros opcionales: back_log = 384 Especifica el número de posibles conexiones para MySQL. Cuando el hilo principal de MySQL recibe un número muy grande de solicitudes de conexión en un periodo muy corto, este parámetro entra en efecto y el hilo principal tarda un poco en comprobar la conexión y iniciar un nuevo hilo. El valor de back_log parámetro indica cuántas peticiones pueden almacenarse en la pila durante un corto periodo de tiempo antes de que MySQL deje temporalmente de responder a nuevas solicitudes. Si el sistema tiene muchas conexiones en un corto periodo de tiempo, es necesario aumentar el valor de este parámetro, que especifica el tamaño de la cola de escucha para las conexiones TCP/IP entrantes. Intentar establecer un límite que back_log superior al de tu sistema operativo será ineficaz. El valor por defecto es 50. Para sistemas Linux, se recomienda establecer un entero menor que 512. max_connections = n El número máximo de conexiones a la base de datos que el servidor MySQL puede gestionar al mismo tiempo (la configuración por defecto es 100). Si se supera el límite, se reportará el error de demasiadas conexiones key_buffer_size = n Valor RMA para bloques de índice (configuración por defecto es 8M), aumentando el índice para un mejor manejo (para todas las lecturas y multiescrituras) record_buffer: Cada hilo que realiza un escaneo secuencial asigna un búfer de este tamaño a cada tabla que escanea. Si haces muchos escaneos secuenciales, quizá quieras aumentar ese valor. El valor por defecto es 131072 (128K) wait_timeout: El número de segundos que el servidor espera a una acción en una conexión antes de apagarla. interactive_timeout: El número de segundos que el servidor espera a una acción en una conexión interactiva antes de apagarlo. Un cliente que interactúa se define como un cliente que utiliza la opción CLIENT_INTERACTIVE para mysql_real_connect(). El valor por defecto es 28800, puedes cambiarlo a 3600. Saltar-nombre-resolver Desactiva MySQL de la resolución DNS en conexiones externas; usar esta opción elimina el tiempo que tarda MySQL en resolver el DNS. Sin embargo, debe señalarse que si esta opción está activada, toda la autorización remota de conexión al host debe usar el método de dirección IP, de lo contrario MySQL no podrá procesar la solicitud de conexión con normalidad. log-slow-consultas = slow.log Registra consultas lentas y optimízalas una a una skip-innodb Skip-BDB Cierra los tipos de tablas no deseadas y no añadas esto si lo necesitas
# > MOSTRAR VARIABLES COMO '%query_cache%'; # > MOSTRAR ESTADO COMO 'Qcache%'; Si el valor de Qcache_lowmem_prunes es muy grande, indica que a menudo hay un almacenamiento intermedio insuficiente; Si el valor de la Qcache_hits es muy grande, indica que el búfer de consulta se usa con mucha frecuencia, y si el valor es pequeño pero afectará a la eficiencia, entonces puedes considerar no usar búfer de consultas. Si el valor de Qcache_free_blocks es muy grande, indica que hay muchos restos en el buffer.
########################################## ###### max_allowed_packet ###### ########################################## Un paquete de comunicación es una única instrucción SQL enviada al servidor MySQL o una sola línea al cliente. El paquete máximo posible que se puede enviar entre el servidor MySQL 5.1 y el cliente es de 1 GB. Cuando un cliente MySQL o servidor mysqld recibe un paquete mayor de max_allowed_packet bytes, se emite un error de "paquete es demasiado grande" y la conexión se cierra. Para algunos clientes, si el paquete de comunicación es demasiado grande, puede encontrarse con el error "Pérdida de conexión al servidor MySQL" durante la consulta. Tanto el cliente como el servidor tienen sus propias variables max_allowed_packet, así que si planeas manejar paquetes grandes, debes añadir esa variable tanto al cliente como al servidor. Si usas un programa cliente Mysql, su variable de max_allowed_packet por defecto es de 16MB. Para establecer un valor mayor, puedes empezar mysql de la siguiente manera: mysql> mysql --max_allowed_packet=32M Establece el tamaño del paquete de información en 32MB. El valor predeterminado de max_allowed_packet del servidor es 1MB. Si el servidor necesita procesar consultas grandes, puedes aumentar este valor (por ejemplo, si te preparas para procesar grandes columnas de blob). Por ejemplo, para ponerlo en 16MB, puedes iniciar el servidor de la siguiente manera: mysql> mysqld --max_allowed_packet=16M
También puedes usar archivos de opciones para configurar max_allowed_packet. Para establecer esta variable para el servidor en 16MB, añade contenido de enlace descendente al archivo de opciones: [mysqld] max_allowed_packet=16M Es seguro aumentar el valor de esta variable porque se asigna memoria adicional solo cuando se necesita. Por ejemplo, mysqld asignará más memoria solo si emites una consulta larga o si mysqld tiene que devolver líneas de resultado grandes. El valor por defecto pequeño de esta variable es una medida de precaución para detectar paquetes de error entre el cliente y el servidor y para asegurar que los desbordamientos de memoria no sean causados por el uso accidental de paquetes grandes. Si usas valores de blob grandes y no concedes permiso a mysqld para acceder a suficiente memoria para procesar consultas, también te encontrarás con problemas extraños relacionados con paquetes grandes. Si sospechas que es así, prueba a empezar a aumentar ulimit -d 256000 en mysqld_safe script y reinicia mysqld. ########################################## ##### Cómo abrir y cerrar tablas de bases de datos en MySQL ##### ########################################## table_cache, max_connections y max_tmp_tables afectan al número máximo de archivos que el servidor mantiene abiertos. Si aumentas uno o ambos valores, puedes encontrarte con el límite impuesto por tu sistema operativo en el número de descriptores de archivo que abre cada proceso. Sin embargo, puedes aumentar el límite en muchos sistemas. Pide a la documentación de tu sistema operativo cómo hacerlo, ya que los métodos para cambiar los límites varían mucho de un sistema a otro. table_cache relacionado con max_connections. Por ejemplo, para 200 join abiertos, deberías tener un buffer de tabla de al menos 200 * n, donde n es el número máximo de tablas en una join. La caché de tablas abiertas puede aumentarse hasta un máximo de un table_cache (64 por defecto; Esto se puede hacer con la -O table_cache=#选项来改变) de mysqld. Una tabla nunca se cierra salvo cuando la caché está llena y otro hilo intenta abrir una tabla o si usas mysqladmin refresh o mysqladmin flush-tables. Cuando la caché de la tabla está llena, el servidor utiliza el siguiente procedimiento para encontrar una entrada de caché que utilizar: Las tablas que no están en uso actualmente se publican, en orden de menor uso (LRU). Si la caché está llena y no hay tablas que liberar, pero es necesario abrir una nueva tabla, la caché debe ampliarse temporalmente. Si la caché está en un estado temporal expandido y una tabla cambia de activa a inactiva, se cierra y se libera de la caché. Abre una tabla para cada acceso concurrente. Esto significa que si tienes 2 hilos accediendo a la misma tabla o accediendo a la tabla dos veces en la misma consulta (con AS), la tabla debe abrirse dos veces. La primera apertura de cualquier tabla tiene en cuenta 2 descriptores de archivo; Cada uso adicional de la tabla representa solo un descriptor de archivo. Para la primera apertura, se utiliza un descriptor adicional para indexar el archivo; Este descriptor se comparte entre todos los hilos
|