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

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

概览

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

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

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

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

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

表会显示符合过滤条件的数据。

事务数据分析表

查看有关事务的详细信息

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

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

  • 一个柱形,显示了以下各项指标的数值:

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

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

事务数据分析详情页面

调查是否可以优化事务形状以缩短延迟时间。请考虑应用推荐的实践来减少锁争用

后续步骤