View a markdown version of this page

Aumento del rendimiento en caliente de la tabla de DynamoDB existente - Amazon DynamoDB

Aumento del rendimiento en caliente de la tabla de DynamoDB existente

Una vez que haya comprobado el valor actual de rendimiento en caliente de la tabla de DynamoDB, puede actualizarlo con los siguientes pasos:

Para comprobar el valor de rendimiento en caliente de la tabla de DynamoDB mediante la consola de DynamoDB:

  1. Inicie sesión en la AWS Management Console y abra la consola de DynamoDB en https://console.aws.amazon.com/dynamodb/.

  2. En el panel de navegación izquierdo, elija Tables (Tablas).

  3. En la página Tablas, elija la tabla que desee.

  4. En el campo Rendimiento en caliente, seleccione Editar.

  5. En la página Editar rendimiento en caliente, seleccione Aumentar el rendimiento en caliente.

  6. Ajuste las unidades de lectura por segundo y las unidades de escritura por segundo. Estas dos configuraciones definen el rendimiento que la tabla puede gestionar al instante.

  7. Seleccione Guardar.

  8. Las unidades de lectura por segundo y las unidades de escritura por segundo se actualizarán en el campo Rendimiento en caliente cuando la solicitud termine de procesarse.

    nota

    La actualización del valor de rendimiento en caliente es una tarea asíncrona. El Status cambiará de UPDATING a ACTIVE cuando se complete la actualización.

En el siguiente ejemplo de la AWS CLI se muestra cómo actualizar el valor de rendimiento en caliente de la tabla de DynamoDB.

  1. Ejecute la operación update-table en la tabla de DynamoDB.

    aws dynamodb update-table \ --table-name GameScores \ --warm-throughput ReadUnitsPerSecond=12345,WriteUnitsPerSecond=4567 \ --global-secondary-index-updates \ "[ { \"Update\": { \"IndexName\": \"GameTitleIndex\", \"WarmThroughput\": { \"ReadUnitsPerSecond\": 88, \"WriteUnitsPerSecond\": 77 } } } ]" \ --region us-east-1
  2. Verá una respuesta similar a la siguiente. La configuración de WarmThroughput se mostrará como ReadUnitsPerSecond y WriteUnitsPerSecond. El Status será UPDATING cuando se actualice el valor de rendimiento en caliente y ACTIVE cuando se establezca el nuevo valor de rendimiento en caliente.

    { "TableDescription": { "AttributeDefinitions": [ { "AttributeName": "GameTitle", "AttributeType": "S" }, { "AttributeName": "TopScore", "AttributeType": "N" }, { "AttributeName": "UserId", "AttributeType": "S" } ], "TableName": "GameScores", "KeySchema": [ { "AttributeName": "UserId", "KeyType": "HASH" }, { "AttributeName": "GameTitle", "KeyType": "RANGE" } ], "TableStatus": "ACTIVE", "CreationDateTime": 1730242189.965, "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "ReadCapacityUnits": 20, "WriteCapacityUnits": 10 }, "TableSizeBytes": 0, "ItemCount": 0, "TableArn": "arn:aws:dynamodb:us-east-1:XXXXXXXXXXXX:table/GameScores", "TableId": "XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "GlobalSecondaryIndexes": [ { "IndexName": "GameTitleIndex", "KeySchema": [ { "AttributeName": "GameTitle", "KeyType": "HASH" }, { "AttributeName": "TopScore", "KeyType": "RANGE" } ], "Projection": { "ProjectionType": "INCLUDE", "NonKeyAttributes": [ "UserId" ] }, "IndexStatus": "ACTIVE", "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "ReadCapacityUnits": 50, "WriteCapacityUnits": 25 }, "IndexSizeBytes": 0, "ItemCount": 0, "IndexArn": "arn:aws:dynamodb:us-east-1:XXXXXXXXXXXX:table/GameScores/index/GameTitleIndex", "WarmThroughput": { "ReadUnitsPerSecond": 50, "WriteUnitsPerSecond": 25, "Status": "UPDATING" } } ], "DeletionProtectionEnabled": false, "WarmThroughput": { "ReadUnitsPerSecond": 12300, "WriteUnitsPerSecond": 4500, "Status": "UPDATING" } } }

En los siguientes ejemplos del SDK se muestra cómo actualizar el valor de rendimiento en caliente de la tabla de DynamoDB.

Java
SDK para Java 2.x

Actualice la configuración de rendimiento en caliente en una tabla de DynamoDB existente con AWS SDK for Java 2.x.

import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.DynamoDbException; import software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexUpdate; import software.amazon.awssdk.services.dynamodb.model.UpdateGlobalSecondaryIndexAction; import software.amazon.awssdk.services.dynamodb.model.UpdateTableRequest; import software.amazon.awssdk.services.dynamodb.model.WarmThroughput; public static WarmThroughput buildWarmThroughput(final Long readUnitsPerSecond, final Long writeUnitsPerSecond) { return WarmThroughput.builder() .readUnitsPerSecond(readUnitsPerSecond) .writeUnitsPerSecond(writeUnitsPerSecond) .build(); } /** * Updates a DynamoDB table with warm throughput settings for both the table and a global secondary index. * * @param ddb The DynamoDB client * @param tableName The name of the table to update * @param tableReadUnitsPerSecond Read units per second for the table * @param tableWriteUnitsPerSecond Write units per second for the table * @param globalSecondaryIndexName The name of the global secondary index to update * @param globalSecondaryIndexReadUnitsPerSecond Read units per second for the GSI * @param globalSecondaryIndexWriteUnitsPerSecond Write units per second for the GSI */ public static void updateDynamoDBTable( final DynamoDbClient ddb, final String tableName, final Long tableReadUnitsPerSecond, final Long tableWriteUnitsPerSecond, final String globalSecondaryIndexName, final Long globalSecondaryIndexReadUnitsPerSecond, final Long globalSecondaryIndexWriteUnitsPerSecond) { final WarmThroughput tableWarmThroughput = buildWarmThroughput(tableReadUnitsPerSecond, tableWriteUnitsPerSecond); final WarmThroughput gsiWarmThroughput = buildWarmThroughput(globalSecondaryIndexReadUnitsPerSecond, globalSecondaryIndexWriteUnitsPerSecond); final GlobalSecondaryIndexUpdate globalSecondaryIndexUpdate = GlobalSecondaryIndexUpdate.builder() .update(UpdateGlobalSecondaryIndexAction.builder() .indexName(globalSecondaryIndexName) .warmThroughput(gsiWarmThroughput) .build()) .build(); final UpdateTableRequest request = UpdateTableRequest.builder() .tableName(tableName) .globalSecondaryIndexUpdates(globalSecondaryIndexUpdate) .warmThroughput(tableWarmThroughput) .build(); try { ddb.updateTable(request); } catch (DynamoDbException e) { System.err.println(e.getMessage()); throw e; } System.out.println(SUCCESS_MESSAGE); }
  • Para obtener información sobre la API, consulte UpdateTable en la referencia de la API de AWS SDK for Java 2.x.

JavaScript
SDK para JavaScript (v3)

Actualice la configuración de rendimiento en caliente en una tabla de DynamoDB existente con AWS SDK para JavaScript.

import { DynamoDBClient, UpdateTableCommand } from "@aws-sdk/client-dynamodb"; export async function updateDynamoDBTableWarmThroughput( tableName, tableReadUnits, tableWriteUnits, gsiName, gsiReadUnits, gsiWriteUnits, region = "us-east-1" ) { try { const ddbClient = new DynamoDBClient({ region: region }); // Construct the update table request const updateTableRequest = { TableName: tableName, GlobalSecondaryIndexUpdates: [ { Update: { IndexName: gsiName, WarmThroughput: { ReadUnitsPerSecond: gsiReadUnits, WriteUnitsPerSecond: gsiWriteUnits, }, }, }, ], WarmThroughput: { ReadUnitsPerSecond: tableReadUnits, WriteUnitsPerSecond: tableWriteUnits, }, }; const command = new UpdateTableCommand(updateTableRequest); const response = await ddbClient.send(command); console.log(`Table updated successfully! Response: ${JSON.stringify(response)}`); return response; } catch (error) { console.error(`Error updating table: ${error}`); throw error; } } // Example usage (commented out for testing) /* updateDynamoDBTableWarmThroughput( 'example-table', 5, 5, 'example-index', 2, 2 ); */
  • Para obtener información sobre la API, consulte UpdateTable en la referencia de la API de AWS SDK para JavaScript.

Python
SDK para Python (Boto3)

Actualice la configuración de rendimiento en caliente en una tabla de DynamoDB existente con AWS SDK para Python (Boto3).

from boto3 import client from botocore.exceptions import ClientError def update_dynamodb_table_warm_throughput( table_name, table_read_units, table_write_units, gsi_name, gsi_read_units, gsi_write_units, region_name="us-east-1", ): """ Updates the warm throughput of a DynamoDB table and a global secondary index. :param table_name: The name of the table to update. :param table_read_units: The new read units per second for the table's warm throughput. :param table_write_units: The new write units per second for the table's warm throughput. :param gsi_name: The name of the global secondary index to update. :param gsi_read_units: The new read units per second for the GSI's warm throughput. :param gsi_write_units: The new write units per second for the GSI's warm throughput. :param region_name: The AWS Region name to target. defaults to us-east-1 :return: The response from the update_table operation """ try: ddb = client("dynamodb", region_name=region_name) # Update the table's warm throughput table_warm_throughput = { "ReadUnitsPerSecond": table_read_units, "WriteUnitsPerSecond": table_write_units, } # Update the global secondary index's warm throughput gsi_warm_throughput = { "ReadUnitsPerSecond": gsi_read_units, "WriteUnitsPerSecond": gsi_write_units, } # Construct the global secondary index update global_secondary_index_update = [ {"Update": {"IndexName": gsi_name, "WarmThroughput": gsi_warm_throughput}} ] # Construct the update table request update_table_request = { "TableName": table_name, "GlobalSecondaryIndexUpdates": global_secondary_index_update, "WarmThroughput": table_warm_throughput, } # Update the table response = ddb.update_table(**update_table_request) print("Table updated successfully!") return response # Make sure to return the response except ClientError as e: print(f"Error updating table: {e}") raise e
  • Para obtener información sobre la API, consulte UpdateTable en la referencia de la API del AWS SDK para Python (Boto3).