En esta página, se describen los problemas conocidos de uso elevado del disco y se ofrece ayuda para solucionar problemas.
Entre los problemas conocidos de uso elevado del disco, se incluyen los siguientes:
- Uso elevado de archivos
Temporary_filesen MySQL 8.0 y versiones posteriores - Uso elevado de archivos
Othersen MySQL 8.0 y versiones anteriores.
El consumo de archivos temporales se clasifica en archivos tmp_data en las versiones anteriores a MySQL 8.0.
Métrica de desglose del almacenamiento de MySQL
La métrica principal que se usa para supervisar el uso detallado del disco es cloudsql.googleapis.com/database/disk/bytes_used_by_data_type. Esta métrica proporciona un desglose del uso del disco de la instancia por tipo de datos de la siguiente manera:
| Tipo de datos | Definición |
|---|---|
Binlog |
Almacenamiento que usan los registros binarios de MySQL, esencial para la recuperación de un momento determinado y la replicación. |
Cloudsql_mysql_audit_log |
Es el almacenamiento que usa el registro de auditoría de Cloud SQL MySQL. |
Data |
Incluye los tablespaces primarios InnoDB (archivos .ibd) y el tablespace del sistema (ibdata1). |
General_log |
Es el almacenamiento que usa el registro de consultas general. |
General_tablespace |
Es el almacenamiento que usa el espacio de tabla del sistema InnoDB, que consta de los archivos ibdata*. |
Last_sys_tablespace |
Es el almacenamiento utilizado por el tablespace más reciente. |
Others |
Incluye archivos internos del sistema. |
Redo_log |
Almacenamiento que consumen los registros de rehacer de InnoDB que se usan para la recuperación ante fallas. |
Relaylog |
Es el almacenamiento que usan los registros de retransmisión en una instancia de réplica durante la replicación. |
Slow_log |
Es el almacenamiento que usa el registro de consultas lentas si está habilitado y se almacena en el disco. |
Temporary files |
Es el almacenamiento explícitamente rastreado para los archivos temporales creados por MySQL. |
Temporary_space |
Es el almacenamiento que usan los archivos temporales del sistema operativo en el directorio /tmp. |
Tmp_data |
Son los datos temporales que crea MySQL durante operaciones como la ordenación y la unión. |
Undo_log |
Es el almacenamiento que usan los registros de deshacer. |
Cómo ubicar archivos en las categorías Temporary_files y Others
Las consultas de larga duración (como las operaciones complejas de JOIN, ORDER BY o GROUP BY) crean archivos temporales grandes en el directorio de MySQL.
En el caso de las instancias de MySQL que usan versiones de mantenimiento lanzadas a partir de abril de 2026, estos archivos temporales se informan de forma explícita en la categoría Temporary_files.
En versiones anteriores, los archivos temporales se informan en la categoría Others.
Soluciona problemas de uso alto del disco
Para solucionar los problemas de uso elevado del disco causados por archivos temporales grandes, sigue estos pasos:
- Identifica las consultas activas de larga duración.
- Mitigación inmediata.
- Usa las Estadísticas de consultas.
- Realiza un análisis retrospectivo.
- Optimiza las consultas.
- Configura la supervisión y las alertas.
Identifica las consultas activas de larga duración
Los problemas de uso elevado del disco se deben, con mayor frecuencia, a consultas de larga duración (como operaciones complejas de JOIN, ORDER BY o GROUP BY) que crean archivos temporales masivos en el directorio de MySQL. Estos archivos temporales se clasifican en las categorías Temporary_files o Others.
Las instancias de MySQL con versiones de mantenimiento nuevas (versión r20260320.00_00 y posteriores) tienen la tabla INFORMATION_SCHEMA.CLOUDSQL_OPEN_TEMP_FILES, que muestra los archivos temporales creados por las consultas de larga duración y que MySQL desvincula (es decir, los archivos existen, pero no están vinculados al proceso de MySQL).
Usa la siguiente consulta para obtener la consulta activa de larga duración:
SELECT
otf.fd, otf.size, p.id, p.info, p.user
FROM
INFORMATION_SCHEMA.CLOUDSQL_OPEN_TEMP_FILES otf
LEFT JOIN
performance_schema.processlist p
ON
otf.SESSION_ID = p.ID;
Resultado de muestra:
+----+------------+------+----------------------------------+------+
| fd | size | id | info | user |
+----+------------+------+----------------------------------+------+
| 39 | 1670750208 | 8 | select * from t1 order by rand() | root |
| 40 | 1670750208 | 8 | select * from t1 order by rand() | root |
+----+------------+------+----------------------------------+------+
2 rows in set (0.00 sec)
Para las instancias con versiones de mantenimiento r20260320.00_00 y anteriores, usa la siguiente consulta para obtener la consulta activa de larga duración:
SHOW FULL PROCESSLIST;
En el resultado, busca las operaciones que suelen usar archivos temporales de disco:
- Operaciones
JOINgrandes, en especial sin índices adecuados - Operaciones complejas de
ORDER BYoGROUP BYen grandes conjuntos de resultados - Operaciones
ALTER TABLEgrandes
Mitigación inmediata
Si se identifica una consulta en ejecución como la fuente del consumo de disco durante la investigación, puedes finalizarla para liberar el espacio de archivos temporales asociado.
Para finalizar la consulta, ejecuta el siguiente comando:
KILL PROCESS_ID;
Reemplaza PROCESS_ID por el ID del proceso de la consulta:
En el caso de las versiones de mantenimiento
r20260320o posteriores, puedes recuperar el valor de PROCESS_ID a través de la columna SESSION_ID de la tablaINFORMATION_SCHEMA.CLOUDSQL_OPEN_TEMP_FILES.En versiones anteriores (versión
r20260117o anterior) , puedes recuperar el valor de PROCESS_ID del resultado de la operaciónSHOW FULL PROCESSLIST.
Después de que finaliza una consulta responsable del consumo elevado de disco a través de archivos temporales, es posible que estos cambios tarden hasta 5 minutos en registrarse en las métricas de uso del disco.
Usar Estadísticas de consultas
Te recomendamos que uses las estadísticas de consultas para identificar y mejorar las consultas con un rendimiento lento.
Para obtener más información, consulta Usa las estadísticas de consultas para mejorar el rendimiento de las consultas.
Realiza un análisis retrospectivo
Cuando el aumento repentino del uso disminuya, puedes analizar los datos históricos para identificar la causa con lo siguiente:
Estadísticas de consultas Verifica si hay consultas que puedan haber creado archivos temporales grandes. Examina las consultas que se enumeran por resumen de consultas (incluidas métricas como el tiempo de ejecución promedio, la cantidad de consultas y el promedio de filas analizadas y devueltas).
Slow_log. HabilitaSlow_logy establecelong_query_timeen un umbral adecuado. Este registro captura las consultas de larga duración para el análisis y la optimización.General_log: VerificaGeneral_log(si está habilitado) para las búsquedas registradas durante el período del incidente que tengan operacionesJOINoSORTque puedan haber generado archivos temporales grandes. De lo contrario, puedes habilitarGeneral_logy capturar la consulta en el siguiente evento de este tipo.Métricas de Cloud Monitoring Revisa las siguientes métricas:
cloudsql.googleapis.com/database/mysql/tmp_disk_tables_created_count: Realiza un seguimiento de la cantidad de tablas temporales creadas en el disco, que suelen ser la causa de archivos grandes no vinculados.cloudsql.googleapis.com/database/mysql/handler_operations_count: Realiza un seguimiento de la cantidad de operaciones que aumentan en ese momento.cloudsql.googleapis.com/database/mysql/innodb/active_trx_total_time: Realiza un seguimiento de las transacciones activas durante un período más prolongado.
Un aumento en estas métricas que coincide con el incremento repentino en el uso del disco sugiere que las consultas que generan tablas temporales grandes fueron la causa raíz.
Historial de transacciones Revisa las siguientes métricas:
cloudsql.googleapis.com/database/mysql/innodb/history_list_length metric: Una lista de historial larga puede deberse a transacciones de larga duración que bloquean la purga de los registros de deshacer, lo que también puede contribuir a problemas de uso del disco.cloudsql.googleapis.com/database/mysql/innodb/active_trx_longest_time: Transacciones de larga duración durante el período de uso elevado del disco.
Optimiza las consultas
Una vez que el análisis de registros haya identificado las consultas específicas que provocan picos en las métricas, puedes optimizarlas o volver a escribirlas para minimizar la generación de archivos temporales extensos.
Para optimizar una consulta, puedes hacer lo siguiente:
- Agrega los índices adecuados.
- Refactoriza las operaciones complejas de unión o clasificación.
Para obtener más información, consulta Ajuste de consultas.
Configura la supervisión y las alertas
Para evitar futuros incidentes causados por el uso descontrolado del disco, en especial debido a los archivos temporales generados a partir de consultas de larga duración, implementa la supervisión y las alertas proactivas con Monitoring.
Puedes crear alertas para las métricas que indican un alto consumo de recursos o patrones de consultas que se sabe que generan archivos temporales grandes.
| Nombre de la métrica | Descripción | Umbral de alerta recomendado |
|---|---|---|
cloudsql.googleapis.com/database/disk/utilization |
Es el porcentaje del espacio en el disco asignado que se utiliza.
Esta métrica supervisa el uso general de la capacidad del disco. |
Más del 80% (sostenido durante 5 minutos) |
cloudsql.googleapis.com/database/disk/bytes_used |
Cantidad total de bytes de espacio en disco que usa la instancia de base de datos.
Esta métrica hace un seguimiento del crecimiento absoluto del consumo de disco. |
Supervisar según la métrica database/disk/quota |
Para obtener información sobre cómo configurar alertas y supervisar las métricas de Cloud SQL, consulta Descripción general de las alertas y Supervisa instancias de Cloud SQL.