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

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

概览

为了确保多个并发事务保持一致,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 监控信息中心中确认这一点,该信息中心会显示各种重要指标的图表。延迟时间图表可帮助您查看第 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 链接。

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

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

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

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

事务数据分析详情页面

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

后续步骤