查询一致性

一致性模式

Azure 数据资源管理器支持两种查询一致性模式:强一致性查询和弱一致性查询。

强一致性查询(默认)具有“读取我的更改”保证。 如果你发送控制命令并收到“命令已成功完成”的确认,那么可以保证紧随其后的任何查询都会观察到该命令的结果。

弱一致性查询没有该保证。 进行查询的客户端可能会在更改与反映这些更改的查询之间观察到一些延迟(通常为 1-2 分钟)。

  • 使用弱一致性运行查询的优点在于,它可以减少处理数据库更改的群集节点上的负载。

  • 弱一致查询在管理数据库的群集节点以外的节点上执行。 这可以是群集(默认值)中的任何“随机”节点,也可以根据查询文本(“查询关联的弱一致查询”)或查询范围内的数据库(“数据库关联的弱一致查询”)进行关联 。

    • 根据查询文本使用相关性的优点是在同时使用查询结果缓存时提高了性能。
    • 根据上下文数据库名称使用相关性的优点是在大型群集(>10 个节点)和许多数据库(>100 个)的场景中提高了效率。

通常,建议首先尝试强一致性模式。 仅在必要时切换到弱一致性查询。

控制查询一致性

在查询开始实际执行之前,首先确定其一致性模式。

  1. 可以通过设置queryconsistency客户端请求属性,按查询控制一致性模式。

  2. .NET SDK 的用户还可以通过 Kusto 连接字符串设置查询一致性。 这样做会影响通过该连接字符串发送的所有查询(通过自动设置客户端请求属性。)

  3. 或者,可以通过设置查询一致性策略来控制一致性模式。 这样做会影响发送到与该工作负载组关联的服务的所有查询,因此用户无需手动指定它。 (如果两者都指定,则每个查询设置优先。)此策略还允许管理员控制弱一致性查询的延迟和其他控制参数;有关详细信息,请参阅查询弱一致性策略

一致性 将客户端请求属性设置为 将查询一致性策略设置为
strongconsistency Strong
弱(随机) weakconsistency Weak
弱(查询文本相关性) affinitizedweakconsistency WeakAffinitizedByQuery
弱(数据库相关性) databaseaffinitizedweakconsistency WeakAffinitizedByDatabase