

# DynamoDB 读取一致性
<a name="HowItWorks.ReadConsistency"></a>

Amazon DynamoDB 从表、本地二级索引（LSI）、全局二级索引（GSI）和流中读取数据。有关更多信息，请参阅 [Amazon DynamoDB 的核心组件](HowItWorks.CoreComponents.md)。表和 LSI 都提供两个读取一致性选项：*最终一致*读取（原定设置）和*强一致性*读取。来自 GSI 和流的所有读取是最终一致的。

 当您的应用程序向 DynamoDB 表写入数据并收到 HTTP 200 响应（OK）时，这意味着写入已成功完成并且已持久保持。DynamoDB 提供*读取已提交*隔离，并确保读取操作始终为项目返回提交的值。读取从不会显示在写入过程中最终未取得成功的项目。读取已提交隔离无法防止在读取操作后立即修改项目。

## 最终一致性读取
<a name="HowItWorks.ReadConsistency.Eventual"></a>

最终一致性是所有读取操作的原定设置读取一致性模型。当对 DynamoDB 表或索引发出最终一致读取时，响应可能不会反映最近完成的写入操作的结果。如果您在短时间后重复执行读取请求，响应最终将返回最新的项目。表、本地二级索引和全局二级索引都支持最终一致读取。另请注意，来自 DynamoDB 流的所有读取也是最终一致的。

 最终一致读取的成本是强一致性读取的一半。有关更多信息，请参阅 [Amazon DynamoDB 定价](https://aws.amazon.com/dynamodb/pricing/)。

## 强一致性读取
<a name="HowItWorks.ReadConsistency.Strongly"></a>

读取操作（例如 `GetItem`、`Query` 和 `Scan`）提供了一个可选 `ConsistentRead` 参数。如果您将 `ConsistentRead` 设置为 true，DynamoDB 会返回具有最新数据的响应，从而反映来自之前所有已成功的写入操作的更新。只有表和本地辅助索引才支持强一致性读取。不支持从全局二级索引或 DynamoDB 流进行强一致性读取。

## 全局表读取一致性
<a name="HowItWorks.ReadConsistency.Global"></a>

DynamoDB 还支持使用[全局表](GlobalTables.md)进行多活动和多区域复制。一个全局表由不同 AWS 区域中的多个副本表组成。对任何副本表中的任何项目所做的任何更改都将复制到同一全局表中的所有其他副本，时间通常在一秒钟内，并且最终一致。有关更多信息，请参阅 [一致性模式](V2globaltables_HowItWorks.md#V2globaltables_HowItWorks.consistency-modes)。