Descripción de las DPU en EXPLAIN ANALYZE
Aurora DSQL proporciona información sobre la unidad de procesamiento distribuido (DPU) por instrucción en la producción del plan de EXPLAIN ANALYZE VERBOSE, lo que le brinda una mayor visibilidad del costo de las consultas durante el desarrollo. Esta sección explica qué son las DPU y cómo interpretarlas en el resultado de EXPLAIN ANALYZE VERBOSE.
¿Qué es una DPU?
Una unidad de procesamiento distribuido (DPU) es la medida normalizada del trabajo realizado por Aurora DSQL. Está compuesta por:
ComputeDPU: tiempo dedicado a ejecutar consultas SQL
ReadDPU: recursos utilizados para leer datos del almacenamiento
WriteDPU: recursos que se utilizan para escribir datos en el almacenamiento
MultiRegionWriteDPU: recursos que se utilizan para replicar las escrituras en clústeres interconectados en configuraciones multirregionales.
Uso de la DPU en EXPLAIN ANALYZE VERBOSE
Aurora DSQL amplía EXPLAIN ANALYZE VERBOSE para incluir una estimación del uso de la DPU por instrucción al final del resultado. Esto proporciona una visibilidad inmediata del costo de las consultas, lo que le ayuda a identificar los factores de costo de la carga de trabajo, ajustar el rendimiento de las consultas y pronosticar mejor el uso de los recursos.
Los siguientes ejemplos muestran cómo interpretar las estimaciones de la DPU por instrucción incluidas en el resultado de EXPLAIN ANALYZE VERBOSE.
Ejemplo 1: consulta SELECT
EXPLAIN ANALYZE VERBOSE SELECT * FROM test_table;
QUERY PLAN
----------------------------------------------------
Index Only Scan using test_table_pkey on public.test_table (cost=125100.05..171100.05 rows=1000000 width=36) (actual time=2.973..4.482 rows=120 loops=1)
Output: id, context
-> Storage Scan on test_table_pkey (cost=125100.05..171100.05 rows=1000000 width=36) (actual rows=120 loops=1)
Projections: id, context
-> B-Tree Scan on test_table_pkey (cost=125100.05..171100.05 rows=1000000 width=36) (actual rows=120 loops=1)
Query Identifier: qymgw1m77maoe
Planning Time: 11.415 ms
Execution Time: 4.528 ms
Statement DPU Estimate:
Compute: 0.01607 DPU
Read: 0.04312 DPU
Write: 0.00000 DPU
Total: 0.05919 DPU
En este ejemplo, la instrucción SELECT realiza un análisis solo de índices, por lo que la mayor parte del costo proviene de la DPU de lectura (0.04312), que representa los datos recuperados del almacenamiento y Compute DPU (0.01607), que refleja los recursos informáticos utilizados para procesar y devolver los resultados. No hay ninguna DPU de escritura, ya que la consulta no modifica los datos. La DPU total (0.05919) es la suma de Informática + Lectura + Escritura.
Ejemplo 2: consulta INSERT
EXPLAIN ANALYZE VERBOSE INSERT INTO test_table VALUES (1, 'name1'), (2, 'name2'), (3, 'name3');
QUERY PLAN
----------------------------------------------------
Insert on public.test_table (cost=0.00..0.04 rows=0 width=0) (actual time=0.055..0.056 rows=0 loops=1)
-> Values Scan on "*VALUES*" (cost=0.00..0.04 rows=3 width=122) (actual time=0.003..0.008 rows=3 loops=1)
Output: "*VALUES*".column1, "*VALUES*".column2
Query Identifier: jtkjkexhjotbo
Planning Time: 0.068 ms
Execution Time: 0.543 ms
Statement DPU Estimate:
Compute: 0.01550 DPU
Read: 0.00307 DPU (Transaction minimum: 0.00375)
Write: 0.01875 DPU (Transaction minimum: 0.05000)
Total: 0.03732 DPU
Esta instrucción realiza principalmente escrituras, por lo que la mayor parte del costo está asociado a una DPU de escritura. La DPU de informática (0.01550) representa el trabajo realizado para procesar e insertar los valores. La DPU de lectura (0.00307) refleja las lecturas menores del sistema (para búsquedas en catálogos o comprobaciones de índices).
Observe los mínimos de transacciones que se muestran junto a las DPU de lectura y escritura. Indican los costos básicos por transacción que se aplican solo cuando la operación incluye lecturas o escrituras. No significan que cada transacción incurra automáticamente en un cargo de DPU de lectura de 0.00375 o DPU de escritura de 0.05. En cambio, estos mínimos se aplican por transacción durante la agregación de costos y solo si se realizan lecturas o escrituras dentro de esa transacción. Debido a esta diferencia de alcance, es posible que las estimaciones por instrucción en EXPLAIN ANALYZE VERBOSE no coincidan exactamente con las métricas por transacción de las que se informa en CloudWatch o en los datos de facturación.
Uso de la información de la DPU para la optimización
Las estimaciones de la DPU por instrucción ofrecen una forma eficaz de optimizar las consultas más allá del tiempo de ejecución. Los casos de uso comunes incluyen:
Conocimiento de los costos: comprenda lo caro que es una consulta en relación con otras.
Optimización del esquema: compare el impacto de los índices o los cambios en el esquema tanto en el rendimiento como en la eficiencia de los recursos.
Planificación presupuestaria: calcule el costo de la carga de trabajo en función del uso observado de la DPU.
Comparación de consultas: evalúe los enfoques de consulta alternativos según su consumo relativo de DPU.
Interpretación de la información de la DPU
Tenga en cuenta las siguientes prácticas recomendadas al utilizar datos de DPU de EXPLAIN ANALYZE VERBOSE:
Úselo de forma direccional: trate la DPU de la que se ha informado como una forma de entender el costo relativo de una consulta, en lugar de una coincidencia exacta con las métricas o los datos de facturación de CloudWatch. Se esperan diferencias porque
EXPLAIN ANALYZE VERBOSEinforma del costo por instrucción, mientras que CloudWatch agrega la actividad por transacción. CloudWatch también incluye operaciones en segundo plano (como ANALYZE o compactaciones) y gastos de transacción (BEGIN/COMMIT) queEXPLAIN ANALYZE VERBOSEexcluye intencionadamente.La variabilidad de la DPU entre las ejecuciones es normal en los sistemas distribuidos y no indica errores. Factores como el almacenamiento en caché, los cambios en el plan de ejecución, la simultaneidad o los cambios en la distribución de los datos pueden provocar que la misma consulta consuma recursos diferentes de una ejecución a la siguiente.
Operaciones pequeñas por lotes: si la carga de trabajo emite muchas instrucciones pequeñas, considere agruparlas en lotes en operaciones más grandes (que no superen los 10 MB). Esto reduce los gastos generales de redondeo y produce estimaciones de costos más significativas.
Úselo para ajustar, no para facturar: los datos de la DPU en
EXPLAIN ANALYZE VERBOSEestán diseñados para conocer los costos, ajustar las consultas y optimizar. No es una métrica apta para la facturación. Confíe siempre en las métricas de CloudWatch o en los informes de facturación mensuales para obtener datos fiables sobre costos y uso.