Amazon DynamoDB
Developer Guide (API Version 2012-08-10)
« PreviousNext »
View the PDF for this guide.Go to the AWS Discussion Forum for this product.Go to the Kindle Store to download this guide in Kindle format.Did this page help you?  Yes | No |  Tell us about it...

Limits in Amazon DynamoDB

Following is a table that describes current limits within Amazon DynamoDB (or no limit, in some cases, for your information).

Note

Each limit listed below applies on a per-region basis.

Table name; local secondary index nameFor table and local secondary index names, allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot). Names can be between 3 and 255 characters long.
Table sizeNo practical limit in number of bytes or items.
Tables per accountBy default, the number of tables per account is limited to 256 per region. However, you can request an increase in this limit. For more information, go to Amazon DynamoDB Limit Increase Form.
Hash or hash-and-range primary key: Number of hash key values

No practical limit.

Hash-and-range primary key: Number of range keys per hash value

No practical limit for non-indexed tables.

For a table with local secondary indexes, there is a limit on item collection sizes: For every distinct hash key value, the total sizes of all table and index items cannot exceed 10 GB. Depending on your item sizes, this may constrain the number of range keys per hash value. For more information, see Item Collection Size Limit.

Provisioned throughput capacity unit sizesOne read capacity unit = one strongly consistent read per second, or two eventually consistent reads per second, for items up 4 KB in size.

One write capacity unit = one write per second, for items up to 1 KB in size.

Provisioned throughput minimum per table1 read capacity unit and 1 write capacity unit.
Provisioned throughput limits

DynamoDB is designed to scale without limits. However, there are some initial limits in place on provisioned throughput:

US East (Northern Virginia) Region:

  • Per table – 40,000 read capacity units or 40,000 write capacity units

  • Per account – 80,000 read capacity units or 80,000 write capacity units

All Other Regions:

  • Per table – 10,000 read capacity units or 10,000 write capacity units

  • Per account – 20,000 read capacity units or 20,000 write capacity units

You can request an increase on any of these limits. For more information, go to the Amazon DynamoDB Limit Increase Form.

UpdateTable: Limits when increasing provisioned throughputYou can call UpdateTable as often as necessary to increase provisioned throughput. You can increase ReadCapacityUnits or WriteCapacityUnits for a table, subject to these conditions:
  • You can call the UpdateTable API to increase ReadCapacityUnits or WriteCapacityUnits (or both), up to twice their current values.

  • The new provisioned throughput settings do not take effect until the UpdateTable operation is complete.

  • You can call UpdateTable multiple times, until you reach the desired throughput capacity for your table.

UpdateTable: Limits when decreasing provisioned throughputYou can reduce the provisioned throughput on a table no more than four times in a single UTC calendar day. These reductions can be any of the following operations:
  • Decrease ReadCapacityUnits.

  • Decrease WriteCapacityUnits.

  • Decrease both ReadCapacityUnits and WriteCapacityUnits in a single request. This counts as one of your allowed reductions for the day.

Maximum concurrent Control Plane API requests (includes cumulative number of tables in the CREATING, UPDATING or DELETING state)

In general, you can have up to 10 of these requests running concurrently.

The only exception is when you are CREATING a table and you have defined a local secondary index on that table. You can only have one such request running at a time.

Maximum number of local secondary indexes per tableYou can define up to 5 local secondary indexes per table.
Maximum number of projected attributes per table (local secondary indexes only)

You can project a total of up to 20 attributes into all of a table's local secondary indexes. This only applies to user-specified projected attributes.

In a CreateTable operation, if you specify a ProjectionType of INCLUDE, the total count of attributes specified in NonKeyAttributes, summed across all of the local secondary indexes, must not exceed 20. If you project the same attribute name into two different indexes, this counts as two distinct attributes when determining the total.

This limit does not apply for indexes with a ProjectionType of KEYS_ONLY or ALL.
Attribute name lengths

The following attribute names are length-restricted:

  • Primary key attribute names.

  • The names of any user-specified projected attributes (applicable only to local secondary indexes). In a CreateTable operation, if you specify a ProjectionType of INCLUDE, then the names of the attributes in the NonKeyAttributes parameter are length-restricted. The KEYS_ONLY and ALL projection types are not affected.

For any of the attribute names listed above, the name must be between 1 and 255 characters long, inclusive. The name can be any UTF-8 encodable character, but the total size of the UTF-8 string after encoding cannot exceed 255 bytes.

Item size

Cannot exceed 64 KB which includes both attribute name binary length (UTF-8 length) and attribute value lengths (again binary length). The attribute name counts towards the size limit. For example, consider an item with two attributes: one attribute named "shirt-color" with value "R" and another attribute named "shirt-size" with value "M". The total size of that item is 23 bytes.

These limits apply to items stored in tables, and also to items in local secondary indexes.

Attribute valuesAttribute values cannot be null or empty.
Attribute name-value pairs per itemThe cumulative size of attributes per item must be under 64 KB.
Hash primary key attribute value2048 bytes
Range primary key attribute value1024 bytes
StringAll strings must conform to the UTF-8 encoding. Since UTF-8 is a variable width encoding, string sizes are determined using the UTF-8 bytes.
NumberA number can have up to 38 digits precision and can be between 10^-128 to 10^+126.
Maximum number of values in an attribute setNo practical limit on the quantity of values, as long as the item containing the values fits within the 64 KB item limit.
BatchGetItem item maximum per operationUp to 100 items retrieved, with the request size not exceeding 1 MB.
BatchWriteItem item maximum per operationUp to 25 items put or delete operations, with the request size not exceeding 1 MB.
QueryResult set limited to 1 MB per API call. You can use the LastEvaluatedKey from the query response to retrieve more results.
ScanScanned data set size maximum is 1 MB per API call. You can use the LastEvaluatedKey from the scan response to retrieve more results.