Compartir a través de


Registros de consultas lentas en Azure Database for MySQL: servidor flexible

En Azure Database for MySQL con servidor flexible, los usuarios pueden configurar registros de consultas lentas y acceder a ellos. De forma predeterminada, los registros de consultas lentas están deshabilitados y se pueden habilitar para ayudar a identificar los cuellos de botella de rendimiento durante la solución de problemas.

Para obtener más información sobre el registro de consultas lentas de MySQL, vea la sección sobre el registro de consultas lentas en la documentación del motor de MySQL.

Configuración del registro de consultas lentas

De forma predeterminada, los registros de consultas lentas están deshabilitados. Para habilitarlos, establezca el parámetro slow_query_log del servidor en Activado. Para ello, se puede usar Azure Portal o la CLI de Azure.

Entre los parámetros que se pueden ajustar para controlar el comportamiento de los registros de consultas lentas se incluyen los siguientes:

  • long_query_time: registra una consulta si tarda más de long_query_time (en segundos) en completarse. El valor predeterminado es 10 segundos. El parámetro del servidor long_query_time se aplica globalmente a todas las conexiones recién establecidas en MySQL. Sin embargo, no afecta a los subprocesos que ya están conectados. Se recomienda volver a conectarse al servidor flexible de Azure Database for MySQL desde la aplicación o bien reiniciar el servidor, lo cual ayudará a borrar subprocesos con valores anteriores de "long_query_time" y aplicar el valor de parámetro actualizado.
  • log_slow_admin_statements: determina si se registran las instrucciones administrativas (por ejemplo, ALTER_TABLE, ANALYZE_TABLE).
  • log_queries_not_using_indexes: determina si se registran las consultas que no usan índices.
  • log_throttle_queries_not_using_indexes: limita el número de consultas que no son de índice que se pueden escribir en el registro de consultas lentas. Este parámetro surte efecto cuando log_queries_not_using_indexes se establece en Activado.

Importante

Si las tablas no están indexadas y se establecen los parámetros log_queries_not_using_indexes y log_throttle_queries_not_using_indexes en Activado, el rendimiento de MySQL puede verse afectado, ya que todas las consultas que se ejecuten en estas tablas no indexadas se escribirán en el registro de consultas lentas.

Consulte la documentación rel registro de consultas lentas de MySQL para obtener una descripción completa de los parámetros de registro de consultas lentas.

Acceso a registros de consultas lentas

Los registros de consultas lentas están integrados con la configuración de diagnóstico de Azure Monitor. Una vez que haya habilitado los registros de consulta lenta en la instancia de servidor flexible de Azure Database for MySQL, puede enviarlos a los registros de Azure Monitor, Event Hubs o Azure Storage. Para obtener más información acerca de la configuración de diagnóstico, vea la documentación de los registros de diagnóstico. Para obtener más información sobre cómo habilitar la configuración de diagnóstico en Azure Portal, vea el artículo sobre registros de consultas lentas en el portal.

Nota:

Las cuentas de Premium Storage no se admiten si envía los registros a Azure Storage a través de diagnósticos y configuración.

En la tabla siguiente se describe la salida del registro de consultas lentas. En función del método de salida que elija, pueden variar los campos incluidos y el orden en el que aparecen.

Propiedad Descripción
TenantId El identificador de inquilino
SourceSystem Azure
TimeGenerated [UTC] Marca de tiempo de cuando se grabó el registro en UTC
Type Tipo del registro. Siempre AzureDiagnostics
SubscriptionId GUID de la suscripción a la que pertenece el servidor
ResourceGroup Nombre del grupo de recursos al que pertenece el servidor
ResourceProvider Nombre del proveedor de recursos Siempre MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI de recurso
Resource Nombre del servidor
Category MySqlSlowLogs
OperationName LogEvent
Logical_server_name_s Nombre del servidor
start_time_t [UTC] Hora de inicio de la consulta
query_time_s Tiempo total en segundos que tardó en ejecutarse la consulta
lock_time_s Tiempo total en segundos durante el que se bloqueó la consulta
user_host_s Nombre de usuario
rows_sent_s Número de filas enviadas
rows_examined_s Número de filas examinadas
last_insert_id_s last_insert_id
insert_id_s Id. de inserción
sql_text_s Consulta completa
server_id_s ID del servidor
thread_id_s Id. de subproceso
\_ResourceId URI de recurso

Nota

Para sql_text_s, el registro se truncará si supera los 2048 caracteres.

Análisis de registros en los registros de Azure Monitor

Una vez que los registros de consultas lentos se canalizan a los registros de Azure Monitor a través de registros de diagnóstico, puede realizar un análisis en mayor profundidad de sus consultas lentas. A continuación encontrará algunas consultas de ejemplo que le ayudarán a ponerse en marcha. Asegúrese de que actualizar los datos siguientes con el nombre del servidor.

  • Consultas que duran más de 10 segundos en un servidor concreto

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | where query_time_d > 10
    
  • Lista de cinco consultas más largas en un servidor concreto

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | order by query_time_d desc
    | take 5
    
  • Resumir las consultas lentas por tiempo de consulta mínimo, máximo, medio y desviación estándar en un servidor concreto

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | summarize count(), min(query_time_d), max(query_time_d), avg(query_time_d), stdev(query_time_d), percentile(query_time_d, 95) by Resource
    
  • Representar en un gráfico la distribución de consultas lentas en un servidor concreto

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | summarize count() by Resource , bin(TimeGenerated, 5m)
    | render timechart
    
  • Mostrar las consultas de más de 10 segundos en todas las instancias de servidor flexible de Azure Database for MySQL con Registros de diagnóstico habilitados

    AzureDiagnostics
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | where query_time_d > 10