Spanner 的内置统计信息表可帮助您调查数据库中的问题。您可以查询这些表,以深入了解查询、事务和读取。下表汇总了每个统计信息表及其提供的信息:
查询统计信息
调查数据库中的问题时,可帮您了解哪些查询费用高、运行频繁或可扫描大量数据。
查询统计信息是按 1 分钟、10 分钟和 60 分钟间隔收集的查询(包括 DML 语句和更改流查询)的汇总统计信息。系统会针对已成功完成的语句以及失败、超时或被用户取消的语句收集统计信息。
统计信息包括最高 CPU 使用率、总查询执行计数、平均延迟时间、扫描最多的数据以及其他基本查询统计信息。使用这些统计信息可帮助确定费用较高的查询、频繁运行的查询或数据密集型查询。
您可以使用查询数据分析信息中心直观呈现这些指标的时间序列。这些预构建信息中心可帮助您查看 CPU 使用率峰值并识别效率低下的查询。
最早的活跃查询
有时,您希望通过检查正在运行的查询来查看系统中当前的工作负载。使用最早的活跃查询工具来调查可能对数据库性能有影响的长时间运行的查询。此工具会告诉您查询是什么、何时开始运行查询以及它们属于哪个会话。
最早的活跃查询不包含变更数据流查询。
读取统计信息
使用 Spanner Reads API 可以利用读取统计信息来调查数据库上最常见且使用资源最多的读取。这些统计信息以 3 个不同的时间间隔(每分钟、10 分钟和一小时)收集并存储。对于每个时间间隔,Spanner 都会跟踪使用最多资源的读取。
使用读取统计信息可找出所有读取的总资源使用率,找出使用 CPU 最多的读取,以及找出特定读取随时间推移的频率变化。
事务统计信息
事务统计信息可用于调查事务相关问题。例如,您可以检查是否存在可能会导致争用的运行缓慢的事务,也可以识别导致性能下降的事务形状变化。每行包含 1、10 和 60 分钟间隔内对数据库执行的所有事务的统计信息。
您可以使用交易数据分析信息中心直观呈现这些指标的时间序列。预构建的信息中心可帮助您查看事务延迟时间并找出存在问题的事务。
锁定统计信息
锁定统计信息可用于调查数据库中的锁定冲突。与交易统计信息一起使用时,您可以尝试获取同一时间相同单元格中的锁,从而找出导致锁定冲突的事务。
您可以使用锁定分析信息中心直观呈现这些指标的时间序列。预构建的信息中心可帮助您查看锁等待时间,并确认延迟时间是否由锁争用和较长的锁等待时间所致。
每个工具中包含的 API 方法
在 Spanner 中,事务、读取和查询之间存在一些重叠。因此,您可能不清楚在编译每个内省工具的结果时包含的 API 方法。下表列出了主要的 API 方法及其与每个工具的关系。
API 方法 | 事务模式 | 查询统计信息 | 最早的活跃查询 | 读取统计信息 | 事务统计信息 | 锁定统计信息 |
---|---|---|---|---|---|---|
Read、StreamingRead | 只读事务1 | 否 | 否 | 是 | 否 | 否 |
读写事务 | 否 | 否 | 是 | 是 | 是 | |
ExecuteSql、ExecuteStreamingSql | 只读事务1 | 是2 | 是2 | 否 | 否 | 否 |
读写事务 | 是 | 是 | 否 | 是 | 是 | |
ExecuteBatchDml | 读写事务 | 是3 | 是4 | 否 | 是 | 是 |
提交 | 读写事务(DML5、变更6) | 否 | 否 | 否 | 是 | 是 |
注意:
1 只读事务不会包含在事务统计信息或锁定统计信息中。只有读写事务包含在交易统计信息和锁定统计信息中。
2 使用 PartitionQuery API 运行的查询不包含在最早的活跃查询统计信息中。
3 一批 DML 语句会在查询统计信息中显示为一条条目。
4 批处理中的语句将显示在最早的活跃查询中,而不是整个批处理中。
5 未提交的 DML 操作不包含在事务统计信息中。
6 实际上无操作空变更不包含在事务统计信息中。
表大小统计信息
您可以使用表大小统计信息来监控数据库中表和索引的历史大小。
您可以使用表大小统计信息来查看表、索引和变更数据流表的大小趋势。您还可以跟踪最大的表和索引。
请注意,此功能仅提供历史数据。不适用于实时监控。
表操作统计信息
您可以使用表操作统计信息执行以下操作:
- 监控数据库中表和索引的使用情况。
- 查找表和索引的使用趋势。
- 找出流量变化情况。
此外,您还可以将表存储空间中的变化与写入流量中的变化相关联。
调试分块中的热点
您可以调试数据库中的热点,以查找数据库中温度较高或热度较高的分块,这意味着分块上的负载有很大一部分受可用资源的限制。您可以按 1 分钟的间隔查看过去 6 小时内分块 CPU 使用率得分最高的分块的统计信息。