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 servidorlong_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