Database Autonomy Service (DAS) ofrece la función de limitación de SQL para controlar el volumen de solicitudes de acceso a la base de datos y la concurrencia de SQL, con el fin de garantizar la disponibilidad del servicio.
Requisitos previos
Los motores de base de datos compatibles son:
ApsaraDB RDS for MySQL 5.6, 5.7 y 8.0.
-
ApsaraDB RDS for PostgreSQL 13 y versiones posteriores.
NotaPara PostgreSQL 13, la minor engine version debe ser 20250430 o posterior.
Para PostgreSQL 14 o 15, la versión menor del motor debe ser 20230330 o posterior.
Para versiones de PostgreSQL posteriores a la 15, se admite cualquier versión menor del motor.
PolarDB for MySQL 5.6, 5.7 y 8.0.
PolarDB-X 2.0.
MongoDB.
Mensajes de error de limitación
Después de crear una regla de limitación de SQL, el sistema de base de datos devuelve un mensaje de error específico si una aplicación ejecuta una sentencia SQL que coincide con las palabras clave o la plantilla de la regla.
|
Concurrencia máxima |
Versión de la instancia |
Código de error |
Mensaje de error |
|
0 o un entero positivo |
|
1317 |
|
|
MongoDB |
56900 |
|
|
|
Entero positivo |
ApsaraDB RDS for MySQL 5.7 (versión menor del motor 20200630 o posterior) |
5041 |
Nota
La concurrencia máxima es un entero positivo y las consultas SQL relacionadas permanecerán en estado |
|
ApsaraDB RDS for MySQL 8.0 |
7534 |
||
|
PolarDB for MySQL 5.7 |
3277 |
||
|
PolarDB for MySQL 8.0 |
7533 |
||
|
0 |
ApsaraDB RDS for MySQL 5.7 (versión menor del motor 20200630 o posterior) |
5042 |
Nota
Si la concurrencia máxima es 0, se devuelve un error de inmediato. |
|
ApsaraDB RDS for MySQL 8.0 |
7535 |
||
|
PolarDB for MySQL 5.7 |
3278 |
||
|
PolarDB for MySQL 8.0 |
7534 |
Cuando DAS aplica la limitación de SQL, si el parámetro
ccl_max_waiting_countestá establecido en 0, DAS utiliza su valor predeterminado de 10. Si el parámetro se establece en un valor mayor que 0, DAS usa el valor especificado.Para instancias de ApsaraDB RDS for MySQL 5.7 (con versión menor 20200630 o posterior) y ApsaraDB RDS for MySQL 8.0, si el parámetro
ccl_wait_timeoutestá configurado (y es compatible con la versión de la instancia), las sentencias SQL en estadoConcurrency control waitingcontinúan ejecutándose y dejan de limitarse una vez superado este límite.-
Para instancias de PolarDB for MySQL 8.0, puede configurar el parámetro
ccl_modepara controlar el comportamiento de las sentencias SQL cuando se excede el límite de concurrencia. Este parámetro solo está disponible en versiones de instancia compatibles.WAIT (predeterminado): La sentencia espera en una cola.
REFUSE: La sentencia no espera y se devuelve un error de inmediato.
Escenarios
|
Escenario |
Descripción |
|
Aumento repentino en la concurrencia de SQL |
La penetración de caché o llamadas anómalas pueden provocar un incremento súbito en la concurrencia de SQL. |
|
Consultas SQL con sesgo de datos |
Consultar frecuentemente datos activos durante una promoción de ventas puede sobrecargar el sistema. |
|
Índices faltantes |
Un alto volumen de llamadas SQL en una tabla sin índices puede sobrecargar el sistema. |
Modos de limitación
|
Modo |
Descripción |
Bases de datos compatibles |
|
Keyword throttling |
Limita las sentencias SQL que contienen palabras clave específicas. Nota
No puede usar este modo para limitar una sentencia SQL específica. |
|
|
Throttle by SQL Template |
Introduzca una muestra de SQL. El sistema la procesa en una plantilla de SQL y luego limita todas las sentencias SQL coincidentes. |
|
|
Limita sentencias SQL mediante la coincidencia de ID de plantilla de SQL. Puede obtener los ID de plantilla de SQL desde registros de SQL, sesiones y resultados de ejecución de EXPLAIN. Nota
Un ID de plantilla de SQL es una cadena hexadecimal de 8 caracteres. |
PolarDB-X 2.0 Enterprise Edition |
|
|
Throttle by Execution Duration |
Si el tiempo de ejecución de una sentencia SQL supera el umbral especificado, su ID de plantilla de SQL se agrega automáticamente a la regla de limitación. Las sentencias posteriores que coincidan con este ID se ejecutarán según la concurrencia especificada en la regla. Nota
También puede establecer un límite en la cantidad de ID de plantilla de SQL limitados. Una vez alcanzado el límite, no se crearán más reglas de limitación para otras sentencias SQL. |
PolarDB-X 2.0 Enterprise Edition |
|
Operation Type Throttling |
Controla la concurrencia de operaciones find, insert, update y delete en una colección especificada. |
MongoDB
|
Procedimiento
Este tema utiliza ApsaraDB RDS for MySQL como ejemplo para describir cómo usar la función de limitación. Para consultar las operaciones relacionadas con otros tipos de bases de datos, consulte Related documentation.
Inicie sesión en la consola de DAS.
En el panel de navegación izquierdo, haga clic en .
Localice la instancia objetivo y haga clic en su ID para abrir la página de detalles de la instancia.
En el panel de navegación izquierdo, haga clic en Instance Sessions.
En la página Session Management, haga clic en SQL Throttling.
En el cuadro de diálogo, haga clic en Create Throttling Rule.
En el cuadro de diálogo Create Throttling Rule, configure los siguientes parámetros según el motor de base de datos.
-
Este parámetro es obligatorio si establece Throttling Mode en Throttle by Keyword.
-
Solo puede limitar sentencias INSERT en los siguientes motores de bases de datos:
-
ApsaraDB RDS for MySQL 8.0
-
PolarDB for MySQL 5.7 y 8.0
-
PolarDB-X 2.0
-
-
No se pueden limitar sentencias
INSERT...SELECT.... -
Este parámetro es obligatorio si establece Throttling Mode en Throttle by Keyword.
-
Si especifica varias palabras clave, la regla de limitación se activa solo si una sentencia SQL contiene todas las palabras clave especificadas. Separe las palabras clave con tildes (~). El orden de las palabras clave no importa.
Por ejemplo, si la sentencia original es
SELECT min(id), max(id) FROM task_event WHERE gmt_modified < '2020-06-21' AND begin_time > '2020-07-09' AND source IN (527) AND id >= 15673 AND id <= 8015673,las palabras clave de limitación correspondientes son
SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~id. -
No puede especificar únicamente
SELECT, INSERT, UPDATE, DELETEcomo palabras clave de limitación. Las palabras clave distinguen entre mayúsculas y minúsculas. Sin embargo, algunas versiones anteriores de instancias no hacen esta distinción. -
Este parámetro es obligatorio si establece Throttling Mode en Throttle by SQL Template.
-
Para sentencias SQL complejas, DAS transforma la muestra SQL (SQL Sample) para su procesamiento interno, pero la plantilla SQL final permanece sin cambios. Esta transformación no afecta el efecto de la limitación.
Por ejemplo, si introduce
select name from das where name =,dasand age = 21 limit 20se convierte en la plantilla
select name from das where name = ? and age = ? limit ?y luego se reescribe como
select name from das where name =.param0and age =param1limit 20 -
Este parámetro es obligatorio si establece Throttling Mode en Throttle by SQL Template.
-
Para sentencias SQL complejas, DAS transforma la muestra SQL (SQL Sample) para su procesamiento interno, pero la plantilla SQL final permanece sin cambios. Esta transformación no afecta el efecto de la limitación.
Por ejemplo, si introduce
select name from das where name = "das" and age = 21 limit 20,se convierte en la plantilla
select name from das where name = ? and age = ? limit ?y luego se reescribe como
select name from das where name = "param0" and age = "param1" limit 20. -
Solo puede limitar sentencias
INSERTen los siguientes motores de bases de datos:-
ApsaraDB RDS for MySQL 8.0
-
PolarDB for MySQL 5.7 y 8.0
-
PolarDB-X 2.0
-
-
No se pueden limitar sentencias
INSERT...SELECT.... -
Este parámetro es obligatorio si establece Throttling Mode en Throttle by Keyword.
-
Si especifica varias palabras clave, la regla de limitación se activa solo si una sentencia SQL contiene todas las palabras clave especificadas. Separe las palabras clave con tildes (~). El orden de las palabras clave no importa.
Por ejemplo, si la sentencia original es
SELECT min(id), max(id) FROM task_event WHERE gmt_modified < '2020-06-21' AND begin_time > '2020-07-09' AND source IN (527) AND id >= 15673 AND id <= 8015673,las palabras clave de limitación correspondientes son
SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~id. -
No puede especificar únicamente SELECT, INSERT, UPDATE o DELETE como palabras clave de limitación. Las palabras clave distinguen entre mayúsculas y minúsculas. Sin embargo, algunas versiones anteriores de instancias no hacen esta distinción.
-
Este parámetro es obligatorio si establece Throttling Mode en Throttle by SQL Template.
-
Para sentencias SQL complejas, DAS transforma la muestra SQL (SQL Sample) para su procesamiento interno, pero la plantilla SQL final permanece sin cambios. Esta transformación no afecta el efecto de la limitación.
Por ejemplo, si introduce
select name from das where name = "das" and age = 21 limit 20,se convierte en la plantilla
select name from das where name = ? and age = ? limit ?y luego se reescribe como
select name from das where name = "param0" and age = "param1" limit 20. -
Solo puede limitar sentencias
INSERTen los siguientes motores de bases de datos:-
ApsaraDB RDS for MySQL 8.0
-
PolarDB for MySQL 5.7 y 8.0
-
PolarDB-X 2.0
-
-
No se pueden limitar sentencias
INSERT...SELECT.... -
Este parámetro es obligatorio si establece Throttling Mode en Throttle by Keyword.
-
Si especifica varias palabras clave, la regla de limitación se activa solo si una sentencia SQL contiene todas las palabras clave especificadas. Separe las palabras clave con tildes (~). El orden de las palabras clave no importa.
Por ejemplo, si la sentencia original es
SELECT min(id), max(id) FROM task_event WHERE gmt_modified < '2020-06-21' AND begin_time > '2020-07-09' AND source IN (527) AND id >= 15673 AND id <= 8015673,las palabras clave de limitación correspondientes son
SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~id. -
No puede especificar únicamente SELECT, INSERT, UPDATE o DELETE como palabras clave de limitación. Las palabras clave distinguen entre mayúsculas y minúsculas. Sin embargo, algunas versiones anteriores de instancias no hacen esta distinción.
-
Haga clic en Submit.
Una vez creada la regla de limitación de SQL, puede consultar sus detalles en la pestaña Running. La siguiente tabla describe los parámetros.
NotaLos parámetros de la lista varían ligeramente según el motor de base de datos y el modo de limitación.
Parámetro
Descripción
Throttling Mode
El modo que seleccionó.
Throttling Rule
-
Throttle by Keyword: Las palabras clave de limitación configuradas.
-
Throttle by SQL Template: El ID de plantilla correspondiente a la muestra SQL (SQL Sample).
-
Throttle by Execution Duration: El umbral de tiempo de ejecución configurado y el número de plantillas SQL limitadas.
Maximum Concurrency
El número máximo de sentencias SQL simultáneas.
Maximum Waiting Queries
El número máximo de consultas en espera configurado en la regla de limitación.
NotaEste parámetro se muestra para las instancias de ApsaraDB RDS for PostgreSQL cuando Throttling Mode se establece en Throttle by SQL Template.
Throttling Duration (min)
La duración durante la cual la regla de limitación de SQL está activa.
Start Time
La hora en que se configuró la regla de limitación y entró en vigor.
Remaining time
El tiempo restante antes de que caduque la regla de limitación.
SQL Sample
Una sentencia SQL de ejemplo para limitar.
NotaEste parámetro se muestra si establece Throttling Mode en Throttle by SQL Template.
Throttling Template ID
El ID de plantilla correspondiente a la muestra SQL (SQL Sample).
NotaEste parámetro se muestra si establece Throttling Mode en Throttle by SQL Template.
Status
Indica que la regla está activa.
Database
La base de datos donde se limitarán las sentencias SQL.
NotaEste parámetro se muestra si establece Throttling Mode en Throttle by SQL Template.
Search Path
La ruta de búsqueda que corresponde a la sentencia SQL limitada.
NotaEste parámetro se muestra para las instancias de ApsaraDB RDS for PostgreSQL cuando Throttling Mode se establece en Throttle by SQL Template.
Matched SQL Query
El número de consultas SQL que coinciden con la regla de limitación.
NotaEste parámetro se muestra si establece Throttling Mode en Throttle by SQL Template.
Waiting SQL Query
El número de consultas SQL que están en espera debido a la regla de limitación.
NotaEste parámetro se muestra si establece Throttling Mode en Throttle by SQL Template.
Actions
Permite Disable (deshabilitar) o Modify (modificar) la regla.
-
RDS for MySQL
|
Parámetro |
Descripción |
|
Throttling Mode |
Seleccione un throttling mode según sea necesario. |
|
SQL Type |
El tipo de sentencia SQL. Valores válidos: SELECT, UPDATE, DELETE e INSERT. Nota
|
|
Database |
La base de datos donde se limitarán las sentencias SQL. Nota
Este parámetro es obligatorio si establece Throttling Mode en Throttle by SQL Template. |
|
Maximum Concurrency |
El número máximo de sentencias SQL simultáneas. El valor mínimo es 0. Nota
La limitación comienza cuando el número de sentencias SQL simultáneas que coinciden con la regla alcanza este valor. |
|
Throttling Duration |
La duración durante la cual la regla de limitación de SQL está activa. Importante
La limitación de SQL es una medida de emergencia. Se recomienda establecer la duración según sus necesidades empresariales y deshabilitar la regla cuando ya no sea necesaria. |
|
SQL Keywords |
Palabras clave en las sentencias SQL que se van a limitar. Nota
|
|
SQL Sample |
Una sentencia SQL de ejemplo para limitar. Nota
|
RDS for PostgreSQL
|
Parámetro |
Descripción |
|
Throttling Mode |
ApsaraDB RDS for PostgreSQL solo admite Throttle by SQL Template. |
|
Database |
La base de datos donde se limitarán las sentencias SQL. |
|
Search Path |
La ruta de búsqueda para la limitación de SQL. Nota
Separe varias rutas con comas ( |
|
Maximum Concurrency |
El número máximo de sentencias SQL simultáneas. El valor mínimo es 0. Nota
La limitación comienza cuando el número de sentencias SQL simultáneas que coinciden con la regla alcanza este valor. |
|
Maximum Waiting Queries |
El número máximo de consultas en espera. |
|
Throttling Duration |
La duración durante la cual la regla de limitación de SQL está activa. Importante
La limitación de SQL es una medida de emergencia. Se recomienda establecer la duración según sus necesidades empresariales y deshabilitar la regla cuando ya no sea necesaria. |
|
SQL Sample |
Una sentencia SQL de ejemplo para limitar. Nota
|
PolarDB for MySQL
|
Parámetro |
Descripción |
|
Throttling Mode |
Seleccione un throttling mode según sea necesario. |
|
SQL Type |
El tipo de sentencia SQL. Valores válidos: Nota
|
|
Maximum Concurrency |
El número máximo de sentencias SQL simultáneas. El valor mínimo es 0. Nota
La limitación comienza cuando el número de sentencias SQL simultáneas que coinciden con la regla alcanza este valor. |
|
Database |
La base de datos donde se limitarán las sentencias SQL. Nota
Este parámetro es obligatorio si establece Throttling Mode en Throttle by SQL Template. |
|
Throttling Duration |
La duración durante la cual la regla de limitación de SQL está activa. Importante
La limitación de SQL es una medida de emergencia. Se recomienda establecer la duración según sus necesidades empresariales y deshabilitar la regla cuando ya no sea necesaria. |
|
SQL Keywords |
Palabras clave en las sentencias SQL que se van a limitar. Nota
|
|
SQL Sample |
Una sentencia SQL de ejemplo para limitar. Nota
|
PolarDB-X 2.0
|
Parámetro |
Descripción |
|
Throttling Mode |
Seleccione un throttling mode según sea necesario. |
|
SQL Type |
El tipo de sentencia SQL. Valores válidos: Nota
|
|
Maximum Concurrency |
El número máximo de sentencias SQL simultáneas. El valor mínimo es 0. Nota
La limitación comienza cuando el número de sentencias SQL simultáneas que coinciden con la regla alcanza este valor. |
|
Throttling Duration |
La duración durante la cual la regla de limitación de SQL está activa. Importante
La limitación de SQL es una medida de emergencia. Se recomienda establecer la duración según sus necesidades empresariales y deshabilitar la regla cuando ya no sea necesaria. |
|
SQL Keywords |
Palabras clave en las sentencias SQL que se van a limitar. Nota
|
|
SQL Template ID |
El ID de la plantilla SQL que se va a limitar. Un ID es una cadena hexadecimal de 8 caracteres. Separe varios ID de plantillas SQL con comas ( Nota
Este parámetro es obligatorio para las instancias de PolarDB-X cuando Throttling Mode se establece en Throttle by SQL Template. |
|
Minimum SQL Execution Duration |
El umbral para el tiempo de ejecución de SQL. Si el tiempo de ejecución de una sentencia SQL supera el umbral especificado, el sistema agrega el ID de plantilla de dicha sentencia a la regla de limitación. Nota
Este parámetro es obligatorio para las instancias de PolarDB-X cuando Throttling Mode se establece en Throttle by Execution Duration. |
|
Maximum Number of Throttled Queries |
El número máximo de ID de plantillas SQL que se pueden limitar según el tiempo de ejecución. Una vez alcanzado este límite, el sistema deja de crear reglas de limitación para otras sentencias SQL cuyo tiempo de ejecución supere el umbral especificado. Nota
Este parámetro es obligatorio para las instancias de PolarDB-X cuando Throttling Mode se establece en Throttle by Execution Duration. |
|
Database Account with Throttled Queries |
La cuenta de base de datos asociada con la sentencia SQL limitada. Nota
Este parámetro es obligatorio si establece Throttling Mode en Throttle by Keyword o Throttle by SQL Template. |
MongoDB
|
Parámetro |
Descripción |
|
Operation type |
Seleccione los tipos de operación que desea limitar. Puede seleccionar varios tipos. Valores válidos: |
|
Operation concurrency |
Especifique el número máximo de operaciones simultáneas permitidas para los tipos de operación seleccionados. Las solicitudes que superen este umbral se limitarán. |
|
Throttling duration |
Establezca la duración activa de la regla de limitación. Una vez que la regla caduca, el sistema la deshabilita automáticamente y la mueve a la pestaña Ended. |
|
Kill Statement |
(Opcional) Si habilita esta opción, cuando la regla de limitación entra en vigor, el sistema finaliza automáticamente cualquier operación activa que coincida con la regla, como operaciones |
|
Throttling scope |
Esta opción solo está disponible para instancias de clúster fragmentado de ApsaraDB for MongoDB. Puede aplicar la regla a All Shards o a Partial Shards. |
|
Throttled collections |
Especifique las colecciones a las que se aplica la regla. Utilice el formato |
Temas relacionados
API relacionadas
|
API |
Descripción |
|
Habilita la limitación de SQL. |
|
|
Deshabilita una regla de limitación específica. |
|
|
Deshabilita todas las reglas de limitación en ejecución. |
|
|
Devuelve las reglas de limitación en ejecución. |
|
|
Devuelve las reglas de limitación que están en ejecución o que se han activado. |
|
|
Genera palabras clave de limitación a partir de una sentencia SQL. |