Saltar al contenido

¿Cómo calculo los cargos por consultas de Amazon Redshift Spectrum?

7 minutos de lectura
0

Quiero calcular y optimizar los costes cuando uso Amazon Redshift Spectrum para consultar datos de Amazon Simple Storage Service (Amazon S3).

Descripción breve

Requisitos previos:

  • Un clúster de Amazon Redshift y un bucket de S3 que se encuentran en la misma región de AWS.
  • Un cliente SQL que está conectado al clúster para ejecutar comandos SQL.

Se te cobra por la cantidad de bytes que Redshift Spectrum analiza desde Amazon S3. Puedes incurrir en cargos adicionales según la región. Redshift Spectrum redondea los números de bytes al siguiente megabyte, con un mínimo de 10 MB por consulta. Para obtener más información, consulta Precios de Amazon Redshift.

Nota: Redshift Spectrum no cobra por las instrucciones de lenguaje de definición de datos (DDL) CREATE, ALTER y DROP TABLE, que administran particiones y consultas con errores. Los cargos por capacidad informática sin servidor de Amazon Redshift incluyen todas las consultas de datos externas de Amazon S3.

Resolución

Para calcular el coste estimado de la consulta y obtener un resumen de todas las consultas de S3 que ejecutas en Redshift Spectrum, utiliza la tabla SVL_S3QUERY_SUMMARY. La columna s3_scanned_bytes devuelve la cantidad de bytes que Redshift Spectrum analiza desde S3 y envía a la capa de Redshift Spectrum.

Uso

Ejecuta la siguiente consulta en SVL_S3QUERY_SUMMARY para determinar la cantidad de bytes que Amazon S3 transfiere mediante queryID:

SELECT s3_scanned_bytes
FROM SVL_S3QUERY_SUMMARY
WHERE query=queryID;

Nota: Sustituye queryID por el ID de la consulta.

Para determinar la suma de todos los bytes analizados desde S3, ejecuta la siguiente consulta:

SELECT sum(s3_scanned_bytes)
FROM SVL_S3QUERY_SUMMARY;

También puedes determinar la suma de bytes de todas las consultas de Redshift Spectrum que ejecutes en un intervalo de tiempo específico. El siguiente ejemplo muestra cómo calcular el total de bytes de las consultas que has empezado a ejecutar el día anterior:

SELECT sum(s3_scanned_bytes)
FROM SVL_S3QUERY_SUMMARY
WHERE starttime >= current_date-1;

Si ejecutas la siguiente consulta en un bucket de S3 en la región este de EE. UU. (norte de Virginia), Redshift Spectrum cobra por terabyte. Si la suma de s3_scanned_bytes devuelve 621 900 000 000 de bytes al consultar SVL_S3QUERY_SUMMARY, entonces tienes 0,565614755032584 terabytes cuando conviertes de bytes a terabytes.

Ejemplo de consulta:

621900000000 bytes = 621900000000/1024 = 607324218.75 kilobytes
607324218.75 kilobytes = 607324218.75/1024 =  593090.057373046875 megabytes
593090.057373046875  megabytes =  593090.057373046875 /1024 = 579.189509153366089 gigabytes
579.189509153366089  gigabytes =  579.189509153366089/1024 = 0.565614755032584 terabytes

En el siguiente ejemplo, tu uso es de aproximadamente 0,5657 terabytes. Para calcular el coste de uso de Redshift Spectrum, multiplica el coste por terabyte:

$5 * 0.5657= $2.83

Ejecuta la siguiente consulta SQL para calcular los cargos por uso de Redshift Spectrum:

SELECT
   round(1.0*sum(s3_scanned_bytes/1024/1024/1024/1024),4) s3_scanned_tb,
   round(1.0*5*sum(s3_scanned_bytes/1024/1024/1024/1024),2) cost_in_usd
FROM SVL_S3QUERY_SUMMARY;

En el ejemplo anterior, se consultan los cargos de Redshift Spectrum en su bucket de S3 para ver los datos que la consulta analizó del día anterior.

Nota: Todas las consultas que analicen hasta 9,9 MB se redondean al alza y se cobran 10 MB. No hay cargos por consultas fallidas o interrumpidas.

Además, las tablas de registro del sistema (STL) guardan solo de 2 a 5 días del historial de registros, según el uso del registro y el espacio en disco disponible. Para mantener un registro de los bytes transferidos, se recomienda calcular los cargos diarios de consulta y almacenar los datos en otra tabla.

Ejemplo de consulta:

CREATE VIEW spectrum_cost AS
SELECT starttime::date as date, xid, query, trim(usename) as user,
  CASE WHEN s3_scanned_bytes < 10000000 then 10 ELSE s3_scanned_bytes/1024/1024 end as scanned_mb,
  round(CASE WHEN s3_scanned_bytes < 10000000 then 10*(5.0/1024/1024)
  ELSE (s3_scanned_bytes/1024/1024)*(5.0/1024/1024) end,5) as cost_$
FROM svl_s3query_summary s
LEFT JOIN pg_user u ON userid=u.usesysid
JOIN
(select xid as x_xid,max(aborted) as x_aborted from svl_qlog group by xid) q
ON s.xid=q.x_xid
WHERE userid>1 AND x_aborted=0
AND s.starttime >= current_date-1;

Nota: También puedes usar la consulta CREATE TABLE para calcular y almacenar los datos en otra tabla. Si no deseas especificar un periodo de tiempo, elimina current_date-1.

Calcula la suma total de datos que una consulta analiza de S3 a Redshift Spectrum desde el día anterior. Para calcular la estimación total de los cargos, ejecuta la siguiente consulta:

SELECT current_date-1 as query_since, SUM(scanned_mb) as total_scanned_mb, SUM(cost_$) as total_cost_$
FROM spectrum_cost;
Result:
  query_since | total_scanned_mb | total_cost_$
--------------+------------------+---------------
 2020-05-15   |            5029  |      0.02515

Prácticas recomendadas de Redshift Spectrum

Para reducir los cargos por consultas y mejorar el rendimiento de Redshift Spectrum, sigue estas prácticas recomendadas:

  • Usa los controles de costes para Redshift Spectrum y las características de escalamiento simultáneo para supervisar y controlar tu uso.
  • Utiliza formatos de datos optimizados para mejorar el rendimiento y reducir los costes. Utiliza formatos de datos en columnas, como PARQUET y ORC, para seleccionar solo las columnas que deseas analizar desde Amazon S3.
  • Si accedes a los datos con poca frecuencia, cárgalos en Amazon S3 y utiliza Redshift Spectrum.
  • Cuando utilices varios clústeres de Amazon Redshift para escalar la simultaneidad, detén los clústeres en cuanto finalicen los trabajos.

Controles de costes y escalamiento de simultaneidad para Redshift Spectrum

Si usas la característica de controles de costes y escalamiento de simultaneidad para Redshift Spectrum, puedes crear cuotas de uso diarias, semanales y mensuales. Cuando alcanzas las cuotas de uso, Amazon Redshift toma medidas automáticamente.

Para configurar el control de costes, sigue estos pasos:

  1. Abre la consola de Amazon Redshift.
  2. Selecciona Configurar límite de uso.
  3. Actualiza los siguientes ajustes de configuración:
    Periodo de tiempo
    Límite de uso
    Acción
    Nota: La configuración de la acción puede ayudarte a administrar las cuotas de uso.

Para configurar la cuota de uso del escalamiento de simultaneidad, sigue estos pasos:

  1. Abre la consola de Amazon Redshift.
  2. Elige el límite de uso de escalado de simultaneidad como tu cuota de uso.
  3. Actualiza los siguientes ajustes de configuración:
    Periodo de tiempo
    Límite de uso
    Acción
    Nota: El periodo de tiempo está en la zona horaria UTC. Para la configuración de acción, también puedes adjuntar una suscripción a Amazon Simple Notification Service (Amazon SNS) a las características de alerta y desactivación. Si utilizas la consola de Amazon Redshift para activar una alerta, se crea automáticamente una alarma de Amazon CloudWatch para las métricas.

Requisitos y limitaciones adicionales de control de costes

Para administrar el uso y el coste de Redshift Spectrum, revisa los siguientes requisitos y limitaciones:

  • Las cuotas de uso están disponibles con las versiones 1.0.14677 o posteriores compatibles.
  • Puedes agregar hasta cuatro cuotas y acciones para cada categoría, con una cuota total de ocho.
  • Solo las regiones en las que Redshift Spectrum y el escalamiento de simultaneidad están disponibles admiten Redshift Spectrum.
  • Solo una cuota por cada característica puede usar la característica para desactivar.
  • Las cuotas de uso se mantienen hasta que elimines la definición de cuota de uso o el clúster.
  • Si creas una cuota en mitad de un periodo, la cuota se mide desde la mitad hasta el final del periodo.
  • Si eliges las opciones de registro, revisa los detalles de los registros STL_USAGE_CONTROL.

Información relacionada

Establecimiento de límites de uso, incluida la configuración de límites de RPU

SVL_QLOG

Referencia de tablas y vistas del sistema

Prácticas recomendadas para Amazon Redshift Spectrum

OFICIAL DE AWSActualizada hace 10 meses