Database Autonomy Service (DAS) detecta automáticamente las sentencias SQL problemáticas durante los picos de tráfico y las limita por palabra clave, sin necesidad de intervención manual. Esto protege su instancia de ApsaraDB RDS contra la degradación del rendimiento causada por aumentos repentinos en la concurrencia, consultas sin índices o patrones de solicitud abusivos.
Versiones compatibles
La limitación automática de SQL está disponible para instancias de ApsaraDB RDS que ejecutan las siguientes versiones y ediciones de MySQL:
|
Versión de MySQL |
Ediciones compatibles |
|
MySQL 8.0 |
RDS High-availability Edition, RDS Enterprise Edition |
|
MySQL 5.7 |
RDS High-availability Edition, RDS Enterprise Edition |
|
MySQL 5.6 |
RDS High-availability Edition |
Casos de uso
La limitación automática de SQL está diseñada para los siguientes escenarios:
Picos de tráfico: La penetración de caché o solicitudes sospechosas provocan un aumento repentino en las consultas SQL concurrentes de un tipo específico.
Consultas intensivas de un solo usuario: Un usuario envía una gran cantidad de consultas SQL en un periodo corto (por ejemplo, un comprador que realiza muchos pedidos simultáneamente) y consume una parte desproporcionada de los recursos de la base de datos.
Índices faltantes: Se ejecuta un gran número de sentencias SQL sin índices, lo que degrada el rendimiento de otras cargas de trabajo.
Limitaciones
El modo de limitación es Throttled by Keywords.
Tipos de SQL compatibles: SELECT, UPDATE, DELETE y INSERT
Las sentencias INSERT...SELECT... no se pueden limitar
La limitación de INSERT solo es compatible con instancias de ApsaraDB RDS que ejecutan MySQL 8.0 y clústeres de PolarDB for MySQL que ejecutan MySQL 5.7 o 8.0
Funcionamiento
Cuando se activa la limitación automática de SQL, el comportamiento depende de la versión de MySQL que ejecute su instancia de ApsaraDB RDS.
MySQL 5.6 o MySQL 5.7
Las sentencias SQL limitadas se interrumpen y se devuelve el siguiente error al cliente:
1317: "query execution was interrupted"
MySQL 8.0
Las sentencias SQL limitadas entran en el estado Concurrency control waiting. Si el número de sentencias en espera supera el valor del parámetro ccl_max_waiting_count, se devuelve el siguiente error:
ERROR 7534 (HY000): "Concurrency control waiting count exceed max waiting count"
El parámetro ccl_max_waiting_count controla cuántas sentencias limitadas pueden esperar antes de que se devuelva un error:
|
**Valor de |
Comportamiento |
|
|
Todas las sentencias limitadas esperan indefinidamente; no se devuelve ningún error |
|
|
DAS cambia automáticamente el valor a |
|
Cualquier valor |
DAS utiliza el valor especificado |
Habilitar la limitación automática de SQL
Vaya a la página de Instances. En la barra de navegación superior, seleccione la región donde reside su instancia de ApsaraDB RDS. Busque la instancia y haga clic en su ID.
-
Abra el panel Autonomous Function Management mediante una de las siguientes rutas:
En el panel de navegación izquierdo, elija Autonomy Services > Diagnostics. Haga clic en la pestaña Autonomy Center y luego en Autonomy Service Settings.
En el panel de navegación izquierdo, elija Autonomy Services > Dashboard. En la pestaña Performance Trends, haga clic en Autonomy Service Settings.
-
En la pestaña Autonomous Function Settings, habilite el servicio de autonomía. Haga clic en la pestaña Optimization and Throttling, seleccione Automatic Throttling y configure las condiciones de activación de la limitación.
Cuando se cumplen las condiciones dentro de la ventana de tiempo configurada, DAS comienza a monitorear la instancia. Si el problema persiste después de iniciar la limitación, DAS revierte automáticamente la operación. La duración de la limitación nunca excede el valor de Maximum Throttling Duration .
Parámetro
Descripción
CPU Utilization >
Umbral de uso de CPU. Establezca un valor ≥ 70. Por ejemplo, introduzca
80para activar la limitación cuando el uso de CPU supere el 80%.Number of Active Sessions >
Umbral de recuento de sesiones activas. Establezca ≥ 16 cuando use una relación OR con CPU Utilization, o ≥ 2 cuando use una relación AND. Por ejemplo, introduzca
64para activar la limitación cuando las sesiones activas superen 64.Available Time Range
La ventana de tiempo durante la cual la limitación automática de SQL está activa.
Maximum Throttling Duration
La duración máxima de un evento de limitación individual. Si se establece en
0, la limitación se activa inmediatamente pero pierde validez al instante.Duration >
Cuánto tiempo deben persistir las condiciones de CPU y sesiones antes de que se active la limitación. Por ejemplo, introduzca
2minutos para que la limitación se active solo después de que las condiciones se mantengan durante más de 2 minutos.
Haga clic en OK.
-
(Opcional) En la sección Alert Configuration, configure una plantilla de alerta y suscríbase a las notificaciones para recibir avisos cuando una tarea de limitación inicie o se detenga. El sistema recomienda una plantilla de alerta y rellena previamente las reglas de alerta para los eventos de autonomía relevantes. Siga las indicaciones en pantalla para completar la configuración.
-
En el paso Select Alert Contact Group, seleccione un grupo de contactos de alerta. Para obtener más información, consulte Manage alert contacts.
Haga clic en Add Contact para agregar un nuevo contacto de alerta.
Haga clic en Create Contact Group para crear un nuevo grupo de contactos de alerta.
Haga clic en Edit o Remove para actualizar o eliminar un contacto existente.
En el paso Associate with Resources, confirme los recursos asociados.
Haga clic en Submit Configuration y confirme en el cuadro de diálogo que aparece.
Si su instancia de ApsaraDB RDS ya tiene una plantilla de alerta, agregue las reglas de alerta necesarias según las indicaciones. Para crear una desde cero, consulte Configure alert templates y Configure alert rules .
-
Consultar el historial de limitaciones
Vaya a la página de Instances. En la barra de navegación superior, seleccione la región donde reside su instancia de ApsaraDB RDS. Busque la instancia y haga clic en su ID.
En el panel de navegación izquierdo, elija Autonomy Services > Diagnostics.
Haga clic en la pestaña Session Management.
-
En la sección Instance Sessions, haga clic en SQL Throttling. En el cuadro de diálogo, consulte las tareas de limitación por estado:
Pestaña
Descripción
Running
Reglas de limitación actualmente vigentes. La tarea permanece en este estado hasta que expire la Maximum Throttling Duration o hasta que DAS revierta automáticamente la operación.
Complete
Tareas de limitación finalizadas. Seleccione un rango de tiempo para filtrar el historial.


Si seleccionó Kill Abnormal SQL Statements in Execution al configurar la limitación, haga clic en End Session History para ver las sesiones que se finalizaron.
Pasos siguientes
Para optimizar sentencias SQL y reducir el consumo de recursos en lugar de aplicar limitaciones, consulte Automatic SQL optimization y SQL optimization.
Si las métricas de la instancia no alcanzan el umbral necesario para activar la limitación automática, configure una regla de limitación manual. Consulte SQL throttling.
Referencia de API
|
Operación |
Descripción |
|
Configura de forma asíncrona los parámetros de limitación automática de SQL para varias instancias de base de datos a la vez |
|
|
Consulta las reglas de limitación automática de SQL de las instancias de base de datos |
|
|
Deshabilita la función de limitación automática de SQL para varias instancias de base de datos a la vez |