En esta sección se ofrece una visión general de cómo evaluar periódicamente sus recursos sin utilizar. A medida que evolucionan los requisitos de su aplicación, debe asegurarse de que no haya recursos sin utilizar que contribuyan a generar costos de Amazon DynamoDB innecesarios. Los procedimientos descritos a continuación utilizarán las métricas de Amazon CloudWatch para identificar los recursos sin utilizar y le ayudarán a identificar y tomar medidas sobre esos recursos para reducir los costos.
Puede supervisar DynamoDB con CloudWatch, que recopila y procesa los datos sin procesar de DynamoDB y los convierte en métricas legibles casi en tiempo real. Estas estadísticas se conservan durante un periodo de tiempo, de modo que pueda acceder a la información histórica para comprender mejor su utilización. De forma predeterminada, los datos de las métricas de DynamoDB se envían a CloudWatch automáticamente. Para obtener más información, consulte ¿Qué es Amazon CloudWatch? y Retención de métricas en la Guía del usuario de Amazon CloudWatch.
Cómo identificar los recursos sin utilizar
Para identificar las tablas o los índices sin utilizar, examinaremos las siguientes métricas de CloudWatch a lo largo de un periodo de 30 días para saber si hay alguna lectura o escritura activa en la tabla o alguna lectura en los índices secundarios globales (GSI):
ConsumedReadCapacityUnits
Número de unidades de capacidad de lectura consumidas durante el periodo de tiempo especificado, para que pueda hacer un seguimiento de la capacidad consumida. Puede recuperar la capacidad total de lectura consumida para una tabla y todos sus índices secundarios globales, o para un índice secundario global determinado.
ConsumedWriteCapacityUnits
Número de unidades de capacidad de escritura consumidas durante el periodo de tiempo especificado, para que pueda hacer un seguimiento de la capacidad consumida. Puede recuperar la capacidad total de escritura consumida para una tabla y todos sus índices secundarios globales, o para un índice secundario global determinado.
Identificación de recursos de tabla sin utilizar
Amazon CloudWatch es un servicio de supervisión y observabilidad que proporciona las métricas de tabla de DynamoDB que utilizará para identificar los recursos sin utilizar. Las métricas de CloudWatch se pueden consultar mediante la AWS Management Console y la AWS Command Line Interface.
Para ver las métricas de sus tablas a través de la AWS Command Line Interface, puede utilizar los siguientes comandos.
-
En primer lugar, evalúe las lecturas de su tabla:
aws cloudwatch get-metric-statistics --metric-name ConsumedReadCapacityUnits --start-time <start-time> --end-time <end- time> --period <period> --namespace AWS/DynamoDB --statistics Sum -- dimensions Name=TableName,Value=<table-name>
Para evitar la identificación falsa de una tabla como no utilizada, evalúe las métricas durante un periodo más largo. Elija un intervalo de tiempo de inicio y fin apropiado, como 30 días, y un periodo apropiado, como 86400.
En los datos devueltos, cualquier suma superior a 0 indica que la tabla que está evaluando recibió tráfico de lectura durante ese periodo.
En el siguiente resultado se muestra una tabla que recibe tráfico de lectura en el periodo evaluado:
{ "Timestamp": "2022-08-25T19:40:00Z", "Sum": 36023355.0, "Unit": "Count" }, { "Timestamp": "2022-08-12T19:40:00Z", "Sum": 38025777.5, "Unit": "Count" },
En el siguiente resultado se muestra una tabla que no recibe tráfico de lectura en el periodo evaluado:
{ "Timestamp": "2022-08-01T19:50:00Z", "Sum": 0.0, "Unit": "Count" }, { "Timestamp": "2022-08-20T19:50:00Z", "Sum": 0.0, "Unit": "Count" },
-
A continuación, evalúe las escrituras de su tabla:
aws cloudwatch get-metric-statistics --metric-name ConsumedWriteCapacityUnits --start-time <start-time> --end-time <end- time> --period <period> --namespace AWS/DynamoDB --statistics Sum -- dimensions Name=TableName,Value=<table-name>
Para evitar la identificación falsa de una tabla como no utilizada, es recomendable evaluar las métricas durante un periodo más largo. Elija un intervalo de tiempo de inicio y de finalización apropiado, como 30 días, y un periodo apropiado, como 86 400.
En los datos devueltos, cualquier suma superior a 0 indica que la tabla que está evaluando recibió tráfico de lectura durante ese periodo.
En el siguiente resultado se muestra una tabla que recibe el tráfico de escritura en el periodo evaluado:
{ "Timestamp": "2022-08-19T20:15:00Z", "Sum": 41014457.0, "Unit": "Count" }, { "Timestamp": "2022-08-18T20:15:00Z", "Sum": 40048531.0, "Unit": "Count" },
En el siguiente resultado se muestra una tabla que no recibe tráfico de escritura en el periodo evaluado:
{ "Timestamp": "2022-07-31T20:15:00Z", "Sum": 0.0, "Unit": "Count" }, { "Timestamp": "2022-08-19T20:15:00Z", "Sum": 0.0, "Unit": "Count" },
Limpieza de los recursos de tabla no utilizados
Si ha identificado los recursos de tabla no utilizados, puede reducir sus costos continuos de las siguientes maneras.
nota
Si ha identificado una tabla que no se utiliza, pero quiere mantenerla disponible por si es necesario acceder a ella en el futuro, considere la posibilidad de cambiarla al modo bajo demanda. De lo contrario, puede plantearse hacer una copia de seguridad y eliminar la tabla por completo.
Modos de capacidad
DynamoDB cobra por leer, escribir y almacenar datos en sus tablas de DynamoDB.
DynamoDB tiene dos modos de capacidad, que incorporan opciones de facturación específicas para el procesamiento de lecturas y escrituras en sus tablas: bajo demanda y aprovisionada. El modo de capacidad de lectura/escritura controla cómo se le cobrará el rendimiento de lectura y escritura y cómo se administra la capacidad.
Para tablas en modo en diferido, no necesita especificar el rendimiento de lectura y escritura que espera de su aplicación. DynamoDB le carga las lecturas y escrituras que la aplicación lleva a cabo en las tablas en términos de unidades de solicitud de lectura y de escritura, respectivamente. Si no hay actividad en su tabla o índice, no pagará por el rendimiento, pero sí incurrirá en un cargo por almacenamiento.
Clase de tabla
DynamoDB también ofrece dos clases de tablas diseñadas para ayudarle a optimizar el costo. La clase de tabla DynamoDB Standard es la predeterminada y se recomienda para la mayoría de las cargas de trabajo. La clase de tabla DynamoDB Estándar - Acceso poco frecuente (DynamoDB Standard-IA) está optimizada para tablas en las que el almacenamiento es el costo dominante.
Si no hay actividad en la tabla o el índice, es probable que el almacenamiento sea el costo dominante y el cambio de clase de tabla ofrecerá un ahorro significativo.
Eliminación de tablas
Si ha descubierto una tabla que no se utiliza y desea eliminarla, es recomendable hacer primero una copia de seguridad o exportar los datos.
Las copias de seguridad realizadas a través de AWS Backup pueden aprovechar el almacenamiento en frío por niveles, lo que reduce aún más los costos. Consulte la documentación de Uso de AWS Backup con DynamoDB para obtener información sobre cómo habilitar las copias de seguridad a través de AWS Backup, así como la documentación de Managing backup plans (Administración de los planes de copia de seguridad) para obtener información sobre cómo utilizar el ciclo de vida para mover la copia de seguridad al almacenamiento en frío.
Como alternativa, puede exportar los datos de la tabla a S3. Para ello, consulte la documentación de Export to Amazon S3 (Exportación a Amazon S3). Una vez exportados los datos, si desea aprovechar S3 Glacier Instant Retrieval, S3 Glacier Flexile Retrieval o S3 Glacier Deep Archive para reducir aún más los costos, consulte Administración del ciclo de vida del almacenamiento.
Una vez realizada la copia de seguridad de la tabla, puede eliminarla a través de la AWS Management Console o la AWS Command Line Interface.
Identificación de recursos de GSI sin utilizar
Los pasos para identificar un índice secundario global no utilizado son similares a los de la identificación de una tabla no utilizada. Como DynamoDB replica los elementos escritos en su tabla base en su GSI si contienen el atributo utilizado como clave de partición del GSI, es probable que un GSI no utilizado siga teniendo ConsumedWriteCapacityUnits
por encima de 0 si su tabla base está en uso. Como resultado, solo evaluará la métrica ConsumedReadCapacityUnits
para determinar si su GSI no se utiliza.
Para ver las métricas de sus GSI a través de la AWS CLI de AWS, puede utilizar los siguientes comandos para evaluar las lecturas de las tablas:
aws cloudwatch get-metric-statistics --metric-name ConsumedReadCapacityUnits --start-time <start-time> --end-time <end- time> --period <period> --namespace AWS/DynamoDB --statistics Sum -- dimensions Name=TableName,Value=<table-name> Name=GlobalSecondaryIndexName,Value=<index-name>
Para evitar la identificación falsa de una tabla como no utilizada, es recomendable evaluar las métricas durante un periodo más largo. Elija un intervalo de tiempo de inicio y de finalización apropiado, como 30 días, y un periodo apropiado, como 86400.
En los datos devueltos, cualquier suma superior a 0 indica que la tabla que está evaluando recibió tráfico de lectura durante ese periodo.
En el siguiente resultado se muestra un GSI que recibe tráfico de lectura en el periodo evaluado:
{
"Timestamp": "2022-08-17T21:20:00Z",
"Sum": 36319167.0,
"Unit": "Count"
},
{
"Timestamp": "2022-08-11T21:20:00Z",
"Sum": 1869136.0,
"Unit": "Count"
},
En el siguiente resultado se muestra un GSI que recibe tráfico de lectura mínimo en el periodo evaluado:
{
"Timestamp": "2022-08-28T21:20:00Z",
"Sum": 0.0,
"Unit": "Count"
},
{
"Timestamp": "2022-08-15T21:20:00Z",
"Sum": 2.0,
"Unit": "Count"
},
En el siguiente resultado se muestra un GSI que no recibe tráfico de lectura en el periodo evaluado:
{
"Timestamp": "2022-08-17T21:20:00Z",
"Sum": 0.0,
"Unit": "Count"
},
{
"Timestamp": "2022-08-11T21:20:00Z",
"Sum": 0.0,
"Unit": "Count"
},
Limpieza de los recursos de GSI no utilizados
Si ha identificado un GSI no utilizado, puede eliminarlo. Como todos los datos presentes en un GSI están también presentes en la tabla base, no es necesario realizar una copia de seguridad adicional antes de eliminar un GSI. Si en el futuro se vuelve a necesitar el GSI, se puede volver a agregar a la tabla.
Si ha identificado un GSI de uso poco frecuente, debería considerar la posibilidad de realizar cambios de diseño en su aplicación que le permitan eliminarlo o reducir su costo. Por ejemplo, aunque los escaneos de DynamoDB deben utilizarse con moderación porque pueden consumir grandes cantidades de recursos del sistema, pueden ser más rentables que un GSI si el patrón de acceso que admite se utiliza con muy poca frecuencia.
Además, si se requiere un GSI para respaldar un patrón de acceso poco frecuente, considere la posibilidad de proyectar un conjunto más limitado de atributos. Aunque esto puede requerir consultas posteriores en la tabla base para respaldar sus patrones de acceso poco frecuentes, puede ofrecer potencialmente una reducción significativa de los costos de almacenamiento y escritura.
Limpieza de tablas globales no utilizadas
Las tablas globales de Amazon DynamoDB proporcionan una solución completamente administrada para implementar una base de datos en varias regiones y multiactiva sin tener que crear ni mantener su propia solución de replicación.
Las tablas globales son ideales para proporcionar un acceso de baja latencia a los datos cerca de los usuarios y también como región secundaria para la recuperación de desastres.
Si la opción de tablas generales está activada para un recurso con el fin de proporcionar un acceso de baja latencia a los datos, pero no forma parte de su estrategia de recuperación de desastres, valide que ambas réplicas están sirviendo activamente el tráfico de lectura mediante la evaluación de sus métricas de CloudWatch. Si una réplica no sirve tráfico de lectura, puede ser un recurso no utilizado.
Si las tablas generales forman parte de su estrategia de recuperación de desastres, puede esperarse que una réplica no reciba tráfico de lectura según un patrón activo/en espera.
Limpieza de las copias de seguridad no utilizadas o recuperación en un momento dado (PITR)
DynamoDB ofrece dos estilos de copia de seguridad. La recuperación en un momento dado proporciona copias de seguridad continuas hasta 35 días para ayudarlo a protegerse contra escrituras o eliminaciones accidentales, mientras que la copia de seguridad bajo demanda permite la creación de instantáneas que pueden guardarse a largo plazo. Puede establecer el periodo de recuperación en cualquier valor entre 1 y 35 días. Ambos tipos de copias de seguridad tienen costos asociados.
Consulte la documentación de Copia de seguridad y restauración para DynamoDB y Copias de seguridad a un momento dado para DynamoDB para determinar si sus tablas tienen activadas copias de seguridad que ya no sean necesarias.