functions - omita la copia a la tabla tmp en el disco mysql
sintaxis mysql create table (1)
Tengo una pregunta para grandes consultas de mysql. ¿Es posible omitir la copia en la tabla tmp en el paso del disco que mysql toma para consultas grandes o es posible hacerlo más rápido? porque este paso lleva demasiado tiempo para recuperar los resultados de mis consultas. Leí en la página de MySQL que mysql realiza esto para ahorrar memoria, pero no me importa guardar memoria. Solo quiero recuperar los resultados de mis consultas RÁPIDAMENTE, tengo suficiente memoria en mi máquina. Además, mis tablas están indexadas correctamente, así que esa no es la razón por la cual mis consultas son lentas.
¿Alguna ayuda?
Gracias
Hay dos cosas que puede hacer para disminuir el impacto de este
OPCIÓN # 1: Incrementa las variables tmp_table_size y / o max_heap_table_size
Estas opciones determinarán qué tan grande puede ser una tabla temporal en memoria antes de que se considere demasiado grande y luego páginas al disco como una tabla temporal MyISAM. Mientras más grandes sean estos valores, es menos probable que obtenga ''copiando a la tabla tmp en el disco''. Por favor, asegúrese de que su servidor tenga suficiente RAM y max_connections tenga una configuración moderada si una sola conexión de base de datos necesita mucha RAM para sus propias tablas temporales.
OPCIÓN # 2: Use un disco RAM para tablas tmp
Debería poder configurar un disco RAM en Linux y luego configurar el tmpdir en mysql para que sea la carpeta que tiene montado el disco RAM.
Para empezar, configure un disco RAM en el sistema operativo
Crea una carpeta en Linux llamada / var / tmpfs
mkdir /var/tmpfs
A continuación, agregue esta línea a / etc / fstab (por ejemplo, si desea un disco RAM de 16 GB)
none /var/tmpfs tmpfs defaults,size=16g 1 2
y reinicia el servidor.
Nota: Es posible hacer un disco RAM sin reiniciar. Solo recuerde agregar la línea antes mencionada a / etc / fstab para tener el disco RAM después de reiniciar el servidor.
Ahora para MySQL:
Agregue esta línea en /etc/my.cnf
[mysqld]
tmpdir=/var/tmpfs
y reinicia mysql.
OPCIÓN n. ° 3: Obtenga la tabla tmp en el disco RAM lo antes posible (suponiendo que aplique la OPCIÓN n. ° 2 primero)
Es posible que desee forzar las tablas tmp en el disco RAM lo más rápido posible para que MySQL no mueva sus ruedas migrando grandes tablas tmp en memoria en un disco RAM. Solo agrega esto a /etc/my.cnf:
[mysqld]
tmpdir=/var/tmpfs
tmp_table_size=2K
y reinicia mysql. Esto hará que incluso la tabla temporal más pequeña aparezca en el disco RAM. Puede ejecutar periódicamente ls -l /var/tmpfs
para ver cómo van y vienen las tablas temporales.
Darle una oportunidad !!!
ADVERTENCIA
Si no ve más que tablas temporales en / var / tmpfs 24/7, esto podría afectar la funcionalidad / el rendimiento del sistema operativo. Para asegurarse de que / var / tmpfs no esté sobrepoblado, busque ajustar sus consultas. Una vez que lo haga, verá menos tablas tmp materializadas en / var / tmpfs.