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

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

概览

为确保多个并发事务的一致性, 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 Written:事务写入的列。
  • 平均延迟时间(秒):执行事务所需的平均秒数。默认情况下,该表按此列按降序排序。

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

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

  1. 点击过滤旁边的图标。

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

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

事务数据分析表

查看有关事务的详细信息

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

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

  • 一个条形,显示以下每个指标的数值:

    • 平均字节数:事务写入的平均字节数。
    • 平均延迟时间:自 要提交或中止的事务。
    • 平均提交延迟时间:执行提交操作所需的平均秒数。
    • 总尝试次数:尝试事务的总次数。
    • 总中止次数:中止的事务尝试的总次数,包括在调用事务的提交方法之前中止的尝试。
  • 用于显示这些值的图表。

    此外,平均参与者数图表会显示每次提交尝试的平均参与者数

事务数据分析详情页面

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

后续步骤