本页介绍了如何使用锁定数据分析和 交易数据分析,用于识别可带来较高收益的交易 延迟时间
概览
为确保多个并发事务的一致性, Spanner 使用锁来控制 对数据的访问当许多事务需要 频繁访问同一个锁,导致高延迟。如果没有 因此,识别有问题的事务可能非常繁琐 锁争用问题。
当 Spanner 操作属于 读写事务。 只读事务不会获取锁。
Spanner 可以帮助您识别 高延迟:
价格
锁定数据分析或事务数据分析不会产生额外费用。
区域配置
锁定数据分析和事务数据分析位于 单区域配置和多区域配置
数据保留
所显示数据的最长数据保留期
锁定数据分析和交易数据分析信息中心的保留时长为 30 天。对于图表,
已从具有最长保留期限的 SPANNER_SYS.*
个表中检索数据
为 30 天
如需详细了解这些表和数据保留,请参阅 锁定统计信息和 事务统计信息。
所需的角色
您需要不同的 IAM 角色和权限,具体取决于 您是 IAM 用户或精细访问权限控制用户。
Identity and Access Management (IAM) 用户
如需获取查看“锁定和事务数据分析”页面所需的权限, 请让管理员向您授予 实例上的以下 IAM 角色:
-
Cloud Spanner 查看者 (
roles/spanner.viewer
) -
Cloud Spanner 数据库读取者 (
roles/spanner.databaseReader
)
如需查看“锁定和事务数据分析”页面,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 百分位的写入延迟时间是否达到峰值,请按以下步骤操作:
在 Google Cloud 控制台中,转到 Spanner 实例页面。
点击实例的名称。
Google Cloud 控制台会显示实例的概览。
点击导航菜单中的 Monitoring。
Google Cloud 控制台会显示 实例。
在延迟时间图表上,将函数设置为
Write
,将百分位设置为99th
。检查刷新后的图表,检查其是否显示任何峰值。
如果您发现 CPU 利用率未激增,且错误数量激增, 那么延迟时间峰值可能是由 争用。
使用锁数据分析检查锁争用问题
锁定数据分析信息中心可帮助您在 实例或选定的数据库。它可以帮助您确认 而是由锁争用导致的
检查锁定等待时间是否过长
如需检查锁定等待时间是否过长,请按以下步骤操作:
点击导航菜单上的锁定数据分析。
Google Cloud 控制台会显示总锁定等待时间 显示实例中每个数据库的锁定等待时间的图表。
默认情况下,显示的数据是
1 hour
的,因为 。查看数据 ,请选择其他选项,例如1 day
。如需了解详情,请参阅使用图表。
从顶部的数据库选择器中,选择显示 最长的锁定等待时间。
总锁定等待时间图表会刷新,仅显示所选数据库的数据。
此外,另一个图表 锁定每行范围的等待时间显示了 按行范围锁定等待时间。
点击图表并水平拖动以展开出现延迟的小时 峰值。
分析锁等待数据
锁定数据分析表会显示
SPANNER_SYS.LOCK_STATS
系统表:
- 行范围起始键:发生锁定冲突的行键。时间
冲突涉及一系列行,该值表示
范围。加号 (
+
) 表示范围。 - 锁定等待时间:水平条上直观呈现的总锁定等待时间。修改者 默认情况下,表格使用此列进行排序,并显示行范围起始键 最长的锁定等待时间位于顶部。
- 锁定等待时间(秒):记录的锁定冲突的累计锁定等待时间 (以秒为单位)。
- 锁定等待时间 (%):针对所有设备记录的锁定冲突的等待时间 以占所有行键范围中的总锁定等待时间的百分比表示, 数据库中的行键范围。
要将“每行的锁定等待时间”图表上的数据与 然后选择一行相关行将突出显示。反之,选择 选中表格中相应行对应的复选框,以在图表中显示相关折线。
如需过滤表中的数据,请执行以下操作:
点击过滤条件旁边的文本框。
选择属性,选择运算符,然后指定值。
表格会显示与过滤条件匹配的数据。
查看示例锁定请求
示例锁定请求面板显示有关示例锁定的详细信息 来自竞争交易的请求
要查看行范围起始键的示例锁定请求信息,请点击 表格中的相关链接
该表格会显示以下各列信息:
- 示例列名称:遇到锁定的列 行键范围冲突。
- 锁定模式:请求的锁定模式。
- 查看交易:指向交易数据分析页面的链接, 显示可能正在争用锁的事务。
使用交易数据分析识别竞争交易
交易数据分析信息中心可帮助您查看 实例或所选数据库。它可以帮助您识别 可能导致因锁争用而导致的高延迟。
查看事务的延迟时间
如需查看事务的延迟时间,请按以下步骤操作:
点击左侧导航栏中的交易数据分析。
从顶部的数据库选择器中,选择显示 最长的锁定等待时间。
或者,在锁定数据分析信息中心,点击查看 事务来过滤读取或写入特定 示例列。
默认情况下,显示的数据是
1 hour
的,因为 右上角显示的“交易数据分析”信息中心
信息中心会显示以下图表:
平均延迟时间(所有事务)图表会显示所有事务的延迟时间 实例中的事务。
平均延迟时间(按事务)图表会显示每项事务的延迟时间 事务。
分析交易数据
您可以在
图表。此表格会显示SPANNER_SYS.TXN_STATS
中的指标数据
系统表的以下列中:
- Fingerprint:交易代码的哈希值(如果存在)。否则, 根据事务中涉及的操作计算得出。该值为 指向“交易详情”页面的链接。
- 交易代码:可选的交易代码
。具有相同标记的多项交易的统计数据
字符串会被分到一行中,并且
TRANSACTION_TAG
标签与 代码字符串。 - 受影响的表:受事务影响的表。
- Table.column Read:事务从中读取数据的列。
- Table.column 写入:事务写入的列。
- 平均延迟时间(秒):执行事务所需的平均秒数。 默认情况下,该表按此列按降序排序。
要将平均延迟时间(每交易)图表上的数据与 数据,请在图表上选择一条线。表中的对应行 突出显示
如需过滤表中的数据,请执行以下操作:
点击过滤条件旁边的按钮。
选择属性,选择运算符,然后指定值。
表格会显示与过滤条件匹配的数据。
查看有关交易的详细信息
要查看有关交易的详细信息(如显示 延迟时间最长,请点击表中相应行上的 Fingerprint 链接。
系统会显示交易详情页面。除了顶部的详细信息表格 其中显示了以下信息:
以条形图的形式显示以下每个指标的数值:
- 平均字节数:事务写入的平均字节数。
- 平均延迟时间:自 要提交或中止的事务。
- 平均提交延迟时间:执行提交操作所需的平均秒数。
- 总尝试次数:尝试交易的总次数。
- 中止总次数:因以下原因导致的操作尝试的总次数: 已取消,包括在调用事务的 commit 方法。
描绘这些值的图表。
此外,您可以查看平均参与者人数图表。 会显示平均参与者人数 。
调查是否可以优化事务形状以缩短延迟时间。 考虑采用建议的做法来减少锁争用。