本页介绍了如何使用锁定分析洞见和事务分析洞见,用于识别导致高延迟的事务。
概览
为了确保多个并发事务保持一致,Spanner 使用锁定来控制对数据的访问。当许多事务需要频繁访问同一锁定时,就会发生锁争用,从而导致延迟时间较长。如果没有直观的界面,很难识别导致大量锁争用问题的事务。
如果 Spanner 操作是读写事务的一部分,则会获取锁。 只读事务不会获取锁。
Spanner 可以指导您完成以下步骤,帮助您识别导致高延迟的事务:
价格
使用锁定数据分析或事务数据分析不会产生额外费用。
区域配置
锁定分析洞见和事务分析洞见适用于单区域配置和多区域配置。
数据保留
所显示数据的最长数据保留期
锁定分析洞见和事务分析洞见信息中心的保留时长为 30 天。对于图表,数据是从 SPANNER_SYS.* 表中检索的,这些表的最长保留期限为 30 天。
如需详细了解这些表和数据保留,请参阅锁统计信息和事务统计信息。
所需的角色
您需要不同的 IAM 角色和权限,具体取决于您是 IAM 用户还是精细访问权限控制用户。
Identity and Access Management (IAM) 用户
如需获得查看锁和事务数据分析页面所需的权限,请让您的管理员为您授予实例的以下 IAM 角色:
- 全部:
-
Cloud Spanner Viewer (
roles/spanner.viewer) -
Cloud Spanner Database Reader (
roles/spanner.databaseReader)
-
Cloud Spanner Viewer (
查看锁定和事务数据分析页面需要 Cloud Spanner Database Reader (
roles/spanner.databaseReader) 角色提供的以下权限:
spanner.databases.beginReadOnlyTransactionspanner.databases.selectspanner.sessions.create
精细访问权限控制用户
如果您是精细访问权限控制用户,请确保您:
- 拥有 Cloud Spanner Viewer (
roles/spanner.viewer)- 仅拥有精细访问权限控制权限,并且已获得
spanner_sys_reader系统角色或其成员角色之一。
- 仅拥有精细访问权限控制权限,并且已获得
- 在数据库概览页面上,选择
spanner_sys_reader或成员角色作为当前的系统角色。
如需了解详情,请参阅精细访问权限控制简介和 精细访问权限控制系统角色。
使用 Spanner Monitoring 检查延迟时间是否出现高峰
您可以使用 Cloud Monitoring 为超出指定阈值的所有请求设置指标提醒。
如果您收到有关实例延迟时间出现高峰的提醒,可以在 Spanner Monitoring 信息中心中确认,该信息中心会显示各种重要指标的图表。借助延迟时间图表,您可以查看第 50 百分位和第 99 百分位的较高延迟时间。
如需确认第 99 百分位的写入延迟时间是否出现高峰,请按照以下步骤操作:
在 Google Cloud 控制台中,前往 Spanner 实例页面。
点击实例的名称。
Google Cloud 控制台会显示实例概览。
点击导航菜单中的 Monitoring。
Google Cloud 控制台会显示实例的数据图表。
在延迟时间图表上,将函数设置为
Write,并将百分位设置为99th。检查刷新后的图表,看看是否显示任何高峰。

如果您发现 CPU 利用率未激增,但每秒操作次数中出现错误高峰,则延迟高峰很可能是由于锁争用所导致。
使用锁定数据分析检查是否存在锁争用问题
“锁定数据分析”信息中心可帮助您查看实例或所选数据库中的锁定等待时间。它可以帮助您确认高延迟是否是由锁争用导致的。
检查是否存在较长的锁定等待时间
如需检查是否存在较长的锁定等待时间,请按照以下步骤操作:
点击导航菜单中的锁定数据分析。
Google Cloud 控制台会显示总锁定等待时间图表,其中显示了实例中每个数据库的锁定等待时间。
默认情况下,显示的数据是针对
1 hour,因为锁定数据分析信息中心的右上角显示。如需查看更广泛范围的数据,请选择其他选项,例如1 day。如需了解详情,请参阅使用图表。
从顶部的数据库选择器中,选择显示最长锁定等待时间的数据库。
总锁定等待时间图表会刷新,以仅显示所选数据库的数据。
此外,另一个图表“每个行范围的锁定等待时间”会显示按行范围划分的锁定等待时间图表。
点击图表,然后水平拖动以展开显示延迟时间高峰的小时。

分析锁定等待数据
锁定分析洞见表显示了 SPANNER_SYS.LOCK_STATS 系统表中的以下列:
- 行范围起始键:发生锁冲突的行键。如果冲突涉及一个行范围,则此值表示该范围的起始键。加号 (
+) 表示范围。 - 锁定等待时间:以横条直观呈现的总锁定等待时间。默认情况下,该表会使用此列进行排序,并将具有最长锁定等待时间的行范围起始键显示在顶部。
- 锁定等待时间(秒):针对行键范围内的所有列记录的锁冲突的累计锁等待时间,以秒为单位。
- 锁定等待时间(百分比):针对行键范围内的所有列记录的锁定冲突的等待时间,占数据库中所有行键范围的总锁定等待时间的百分比。
如需将每个行范围的锁定等待时间图表上的数据与表中的数据相关联,请选择一条线。相关行会突出显示。反之,选中表中某行的复选框,即可在图表中看到相关线条。

如需过滤表中的数据,请执行以下操作:
点击过滤条件旁边的字段。
选择一个属性,然后选择一个运算符并指定值。
表会显示符合过滤条件的数据。