Trabajo con planes EXPLAIN de Aurora DSQL
Aurora DSQL utiliza una estructura de plan EXPLAIN similar a la de PostgreSQL, pero con adiciones clave que reflejan su arquitectura distribuida y su modelo de ejecución.
En esta documentación, proporcionaremos información general de los planes EXPLAIN de Aurora DSQL y destacaremos las similitudes y diferencias en comparación con PostgreSQL. Cubriremos los distintos tipos de operaciones de escaneo disponibles en Aurora DSQL y lo ayudaremos a comprender el costo de ejecutar las consultas.
Planes EXPLAIN de PostgreSQL frente a Aurora DSQL
Aurora SQL se basa en la base de datos de PostgreSQL y comparte la mayoría de las estructuras planificadas con PostgreSQL, pero presenta diferencias arquitectónicas clave que afectan a la ejecución y optimización de las consultas:
| Característica | PostgreSQL | Aurora DSQL |
|---|---|---|
|
Almacenamiento de datos |
Almacenamiento de montón |
Sin montón, todas las filas están indexadas por un identificador único |
|
Clave principal |
El índice de clave principal está separado de los datos de la tabla |
El índice de clave principal es la tabla con todas las columnas adicionales como columnas INCLUDE |
|
Índices secundarios |
Índices secundarios estándar |
Funciona igual que PostgreSQL, con la posibilidad de incluir columnas no clave |
|
Capacidades de filtrado |
Condición de índice, filtro de montón |
Condición de índice, filtro de almacenamiento, filtro de procesador de consultas |
|
Tipos de exámenes |
Escaneo secuencial, escaneo de índice, escaneo solo de índice |
Escaneo completo, escaneo solo de índice, escaneo de índice |
|
Ejecución de consulta |
Local en la base de datos |
Distribuido (el procesamiento y el almacenamiento son independientes) |
Aurora DSQL almacena los datos de la tabla directamente en orden de clave principal en lugar de en un montón independiente. Cada fila se identifica mediante una clave única, normalmente la clave principal, que permite a la base de datos optimizar las búsquedas de manera más eficiente. La diferencia arquitectónica explica por qué Aurora DSQL suele utilizar escaneos solo de índice en los casos en que PostgreSQL puede elegir un escaneo secuencial.
Otra distinción clave es que Aurora DSQL separa la informática del almacenamiento, lo que permite aplicar filtros en una fase más temprana de la ruta de ejecución para reducir el movimiento de datos y mejorar el rendimiento.
Para obtener más información sobre el uso de los planes EXPLAIN con PostgreSQL, consulte la documentación EXPLAIN de PostgreSQL
Elementos clave de los planes EXPLAIN de Aurora DSQL
Los planes EXPLAIN de Aurora DSQL proporcionan información detallada sobre cómo se ejecutan las consultas, incluido dónde se produce el filtrado y qué columnas se recuperan del almacenamiento. La comprensión de este resultado ayuda a optimizar el rendimiento de las consultas.
- Condición de índice
Condiciones utilizadas para navegar por el índice. El filtrado más eficiente que reduce los datos escaneados. En Aurora DSQL, las condiciones de índice se pueden aplicar en varios niveles del plan de ejecución.
- Proyecciones
Columnas recuperadas del almacenamiento. Menos proyecciones significan un mejor rendimiento.
- Filtro de almacenamiento
Condiciones aplicadas por almacenamiento. Más eficiente que los filtros del procesador de consultas.
- Filtro de procesador de consultas
-
Condiciones aplicadas por procesador de consultas. Requiere transferir todos los datos antes de filtrarlos, lo que se traduce en una mayor sobrecarga de procesamiento y movimiento de datos.
Filtros en Aurora DSQL
Aurora DSQL separa la informática del almacenamiento, lo que significa que el punto en el que se aplican los filtros durante la ejecución de la consulta tiene un impacto significativo en el rendimiento. Los filtros que se aplican antes de transferir grandes volúmenes de datos reducen la latencia y mejoran la eficiencia. Cuanto antes se aplique un filtro, menos datos deberán procesarse, moverse y escanearse, lo que se traducirá en consultas más rápidas.
Aurora DSQL puede aplicar filtros en varias etapas de la ruta de consulta. la comprensión de estas etapas es clave para interpretar los planes de consultas y optimizar el rendimiento.
| Nivel | Tipo de filtro | Descripción |
|---|---|---|
| 1 | Condición de índice |
Se aplica al escanear el índice. Limita la cantidad de datos que se leen del almacenamiento y reduce los datos que se envían a la capa de procesamiento. |
| 2 | Filtro de almacenamiento | Se aplica después de leer los datos del almacenamiento, pero antes de enviarlos a informática. Un ejemplo de esto es un filtro en una columna de inclusión de un índice. Reduce la transferencia de datos, pero no la cantidad leída. |
| 3 | Filtro de procesador de consultas | Se aplica después de que los datos lleguen a la capa de informática. Todos los datos se deben transferir primero, lo que aumenta la latencia y el costo. Actualmente, Aurora DSQL no puede realizar todas las operaciones de filtrado y proyección en el almacenamiento, por lo que es posible que algunas consultas se vean obligadas a recurrir a este tipo de filtrado. |