

# 在 DynamoDB 中的数据上传期间高效分配写入活动
高效上传数据

通常从其他数据源加载数据时，Amazon DynamoDB 会在多个服务器上分区表数据。如果同时将数据上传到所有分配的服务器，则可以获得更好的性能。

例如，假设要将用户消息上传到的 DynamoDB 表使用复合主键，`UserID` 作为分区键，`MessageID` 作为排序键。

上传数据时，可以为每个用户上传的所有消息项目，一个用户接一个用户：


****  

| UserID | MessageID | 
| --- | --- | 
| U1 | 1 | 
| U1 | 2 | 
| U1 | ... | 
| U1 | ... 最多 100 | 
| U2 | 1 | 
| U2 | 2 | 
| U2 | ... | 
| U2 | ... 最多 200 | 

这种情况下的问题是没有在 DynamoDB 的分区键值中分配写入请求。一次取一个分区键值，上传所有项目，然后下一个分区键值，进行相同操作。

DynamoDB 后台在多个服务器中分区表的数据。要充分利用为表预置的所有吞吐容量，必须在分区键值之间分配工作负载。对全部具有相同分区键值的项目进行不均匀的上传工作，将无法完全利用 DynamoDB 为表预置的所有资源。

可以使用排序键从每个分区键值中加载一个项目，然后从每个分区键值加载另一个项目，以此类推，分配上传工作：


****  

| UserID | MessageID | 
| --- | --- | 
| U1 | 1 | 
| U2 | 1 | 
| U3 | 1 | 
| ... | ... | 
| U1 | 2 | 
| U2 | 2 | 
| U3 | 2 | 
| ... | ... | 

按这个顺序均匀加载，将使用不同的分区键值，使更多 DynamoDB 服务器同时处于繁忙状态，提高吞吐量性能。