识别可能导致高延迟的事务

本页介绍了如何使用锁定数据分析和 交易数据分析,用于识别可带来较高收益的交易 延迟时间

概览

为确保多个并发事务的一致性, Spanner 使用锁来控制 对数据的访问当许多事务需要 频繁访问同一个锁,导致高延迟。如果没有 因此,识别有问题的事务可能非常繁琐 锁争用问题。

当 Spanner 操作属于 读写事务。 只读事务不会获取锁。

Spanner 可以帮助您识别 高延迟:

  1. 使用 Spanner Monitoring 检查延迟时间是否急剧增加。
  2. 使用锁数据分析检查锁争用问题。
  3. 使用交易数据分析找出有问题的交易。

价格

锁定数据分析或事务数据分析不会产生额外费用。

区域配置

锁定数据分析和事务数据分析位于 单区域配置和多区域配置

数据保留

所显示数据的最长数据保留期 锁定数据分析和交易数据分析信息中心的保留时长为 30 天。对于图表, 已从具有最长保留期限的 SPANNER_SYS.* 个表中检索数据 为 30 天

如需详细了解这些表和数据保留,请参阅 锁定统计信息事务统计信息

所需的角色

您需要不同的 IAM 角色和权限,具体取决于 您是 IAM 用户或精细访问权限控制用户。

Identity and Access Management (IAM) 用户

如需获取查看“锁定和事务数据分析”页面所需的权限, 请让管理员向您授予 实例上的以下 IAM 角色:

如需查看“锁定和事务数据分析”页面,Cloud Spanner Database Reader (roles/spanner.databaseReader) 角色需要具备以下权限:

  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.select
  • spanner.sessions.create

精细的访问权限控制用户

如果您是精细访问权限控制用户,请确保:

  • 拥有 Cloud Spanner Viewer(roles/spanner.viewer)
  • 仅具有精细的访问权限控制权限,并且会被授予 spanner_sys_reader 系统角色或某个成员角色。
  • 选择 spanner_sys_reader 或成员角色作为当前系统角色 查看数据库概览页面上的说明

如需了解详情,请参阅精细访问权限控制简介精细的访问权限控制系统角色

使用 Spanner Monitoring 检查延迟时间是否有峰值

您可以使用 Cloud Monitoring 为超出指定值的指标设置提醒 所有请求的阈值

如果您收到指示某应用的延迟时间 您可以在Spanner Monitoring 信息中心,其中会显示图表 了解各种重要指标延迟时间图表可帮助您查看 第 50 和第 99 百分位的延迟时间。

如需确认第 99 百分位的写入延迟时间是否达到峰值,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,转到 Spanner 实例页面。

    转到 Spanner 实例

  2. 点击实例的名称。

    Google Cloud 控制台会显示实例的概览。

  3. 点击导航菜单中的 Monitoring

    Google Cloud 控制台会显示 实例。

  4. 延迟时间图表上,将函数设置为 Write,将百分位设置为 99th

  5. 检查刷新后的图表,检查其是否显示任何峰值。

显示第 99 百分位的写入延迟时间的图表

如果您发现 CPU 利用率未激增,且错误数量激增, 那么延迟时间峰值可能是由 争用。

使用锁数据分析检查锁争用问题

锁定数据分析信息中心可帮助您在 实例或选定的数据库。它可以帮助您确认 而是由锁争用导致的

检查锁定等待时间是否过长

如需检查锁定等待时间是否过长,请按以下步骤操作:

  1. 点击导航菜单上的锁定数据分析

    Google Cloud 控制台会显示总锁定等待时间 显示实例中每个数据库的锁定等待时间的图表。

    默认情况下,显示的数据是 1 hour 的,因为 。查看数据 ,请选择其他选项,例如 1 day

    如需了解详情,请参阅使用图表

  2. 从顶部的数据库选择器中,选择显示 最长的锁定等待时间。

    总锁定等待时间图表会刷新,仅显示所选数据库的数据。

    此外,另一个图表 锁定每行范围的等待时间显示了 按行范围锁定等待时间。

  3. 点击图表并水平拖动以展开出现延迟的小时 峰值。

锁定数据分析信息中心

分析锁等待数据

锁定数据分析表会显示 SPANNER_SYS.LOCK_STATS 系统表:

  • 行范围起始键:发生锁定冲突的行键。时间 冲突涉及一系列行,该值表示 范围。加号 (+) 表示范围。
  • 锁定等待时间:水平条上直观呈现的总锁定等待时间。修改者 默认情况下,表格使用此列进行排序,并显示行范围起始键 最长的锁定等待时间位于顶部。
  • 锁定等待时间(秒):记录的锁定冲突的累计锁定等待时间 (以秒为单位)。
  • 锁定等待时间 (%):针对所有设备记录的锁定冲突的等待时间 以占所有行键范围中的总锁定等待时间的百分比表示, 数据库中的行键范围。

要将“每行的锁定等待时间”图表上的数据与 然后选择一行相关行将突出显示。反之,选择 选中表格中相应行对应的复选框,以在图表中显示相关折线。

锁定数据分析表

如需过滤表中的数据,请执行以下操作:

  1. 点击过滤条件旁边的文本框。

  2. 选择属性,选择运算符,然后指定值。

表格会显示与过滤条件匹配的数据。

查看示例锁定请求

示例锁定请求面板显示有关示例锁定的详细信息 来自竞争交易的请求

要查看行范围起始键的示例锁定请求信息,请点击 表格中的相关链接

该表格会显示以下各列信息:

  • 示例列名称:遇到锁定的列 行键范围冲突。
  • 锁定模式:请求的锁定模式
  • 查看交易:指向交易数据分析页面的链接, 显示可能正在争用锁的事务。

锁定数据分析详情页面

使用交易数据分析识别竞争交易

交易数据分析信息中心可帮助您查看 实例或所选数据库。它可以帮助您识别 可能导致因锁争用而导致的高延迟。

查看事务的延迟时间

如需查看事务的延迟时间,请按以下步骤操作:

  1. 点击左侧导航栏中的交易数据分析

  2. 从顶部的数据库选择器中,选择显示 最长的锁定等待时间。

    或者,在锁定数据分析信息中心,点击查看 事务来过滤读取或写入特定 示例列。

    默认情况下,显示的数据是 1 hour 的,因为 右上角显示的“交易数据分析”信息中心

信息中心会显示以下图表:

  • 平均延迟时间(所有事务)图表会显示所有事务的延迟时间 实例中的事务。

  • 平均延迟时间(按事务)图表会显示每项事务的延迟时间 事务。

交易数据分析信息中心

分析交易数据

您可以在 图表。此表格会显示SPANNER_SYS.TXN_STATS中的指标数据 系统表的以下列中:

  • Fingerprint:交易代码的哈希值(如果存在)。否则, 根据事务中涉及的操作计算得出。该值为 指向“交易详情”页面的链接。
  • 交易代码:可选的交易代码 。具有相同标记的多项交易的统计数据 字符串会被分到一行中,并且 TRANSACTION_TAG 标签与 代码字符串。
  • 受影响的表:受事务影响的表。
  • Table.column Read:事务从中读取数据的列。
  • Table.column 写入:事务写入的列。
  • 平均延迟时间(秒):执行事务所需的平均秒数。 默认情况下,该表按此列按降序排序。

要将平均延迟时间(每交易)图表上的数据与 数据,请在图表上选择一条线。表中的对应行 突出显示

如需过滤表中的数据,请执行以下操作:

  1. 点击过滤条件旁边的按钮。

  2. 选择属性,选择运算符,然后指定值。

表格会显示与过滤条件匹配的数据。

交易数据分析表

查看有关交易的详细信息

要查看有关交易的详细信息(如显示 延迟时间最长,请点击表中相应行上的 Fingerprint 链接。

系统会显示交易详情页面。除了顶部的详细信息表格 其中显示了以下信息:

  • 以条形图的形式显示以下每个指标的数值:

    • 平均字节数:事务写入的平均字节数。
    • 平均延迟时间:自 要提交或中止的事务。
    • 平均提交延迟时间:执行提交操作所需的平均秒数。
    • 总尝试次数:尝试交易的总次数。
    • 中止总次数:因以下原因导致的操作尝试的总次数: 已取消,包括在调用事务的 commit 方法。
  • 描绘这些值的图表。

    此外,您可以查看平均参与者人数图表。 会显示平均参与者人数 。

交易数据分析详情页面

调查是否可以优化事务形状以缩短延迟时间。 考虑采用建议的做法来减少锁争用

后续步骤