本页介绍了如何使用锁定数据分析和 事务数据分析,用于识别可带来较高收益的事务 延迟时间
概览
为确保多个并发事务的一致性, Spanner 使用锁来控制 对数据的访问当许多事务需要 频繁访问同一个锁,导致高延迟。如果没有可视界面,识别导致大量锁争用问题的问题事务可能会很繁琐。
如果 Spanner 操作是读写事务的一部分,则会获取锁。只读事务不会获取锁。
Spanner 会引导您完成以下步骤,帮助您识别导致高延迟的事务:
价格
锁定数据分析或事务数据分析不会产生额外费用。
区域配置
锁定分析和事务分析适用于区域级配置和多区域配置。
数据保留
所显示数据的最长数据保留期
锁定数据分析和事务数据分析信息中心的保留时长为 30 天。对于图表,
已从具有最长保留期限的 SPANNER_SYS.*
个表中检索数据
为 30 天
如需详细了解这些表和数据保留,请参阅 锁定统计信息和 事务统计信息。
所需的角色
根据您是 IAM 用户还是精细访问权限控制用户,您需要不同的 IAM 角色和权限。
Identity and Access Management (IAM) 用户
如需获取查看“锁定和事务数据分析”页面所需的权限, 请让管理员授予您 实例上的以下 IAM 角色:
-
Cloud Spanner 查看者 (
roles/spanner.viewer
) -
Cloud Spanner Database Reader (
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 Written:事务写入的列。
- 平均延迟时间(秒):执行事务所需的平均秒数。默认情况下,该表按此列按降序排序。
要将平均延迟时间(每事务)图表上的数据与 数据,请在图表上选择一条线。表中的对应行 突出显示
如需过滤表中的数据,请执行以下操作:
点击过滤旁边的图标。
选择一个属性,选择一个运算符,然后指定一个值。
表格会显示与过滤条件匹配的数据。
查看有关事务的详细信息
要查看有关事务的详细信息(如显示 延迟时间最长,请点击表中相应行上的 Fingerprint 链接。
系统会显示事务详情页面。除了顶部的详细信息表格 其中显示了以下信息:
一个条形,显示以下每个指标的数值:
- 平均字节数:事务写入的平均字节数。
- 平均延迟时间:自 要提交或中止的事务。
- 平均提交延迟时间:执行提交操作所需的平均秒数。
- 总尝试次数:尝试事务的总次数。
- 总中止次数:中止的事务尝试的总次数,包括在调用事务的提交方法之前中止的尝试。
用于显示这些值的图表。
此外,平均参与者数图表会显示每次提交尝试的平均参与者数。
调查是否可以优化事务形状以缩短延迟时间。 请考虑应用建议的做法来减少锁争用。