暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片
数据库可观测性
编辑
简介:数据库可观测性,是指数据库在运行的过程中,提供数据库的运行指标、当前运行状态、当前资源使用情况、内部执行步骤等数据,提供对底层文件结构、底层进程状态等信息的访问接口。从而让数据库使用者更清晰地了解数据库的当前运行状态、性能状况,或者在出现故障时,更准确定位故障的原因。
简介:数据库可观测性,是指数据库在运行的过程中,提供数据库的运行指标、当前运行状态、当前资源使用情况、内部执行步骤等数据,提供对底层文件结构、底层进程状态等信息的访问接口。从而让数据库使用者更清晰地了解数据库的当前运行状态、性能状况,或者在出现故障时,更准确定位故障的原因。
产品概览 用户评价

技术名称:

数据库可观测性,是指数据库在运行的过程中,提供数据库的运行指标、当前运行状态、当前资源使用情况、内部执行步骤等数据,提供对底层文件结构、底层进程状态等信息的访问接口。从而让数据库使用者更清晰地了解数据库的当前运行状态、性能状况,或者在出现故障时,更准确定位故障的原因。

作用或背景:

在数据库使用过程中,为了方便性能调优、故障诊断、容量和性能预测等功能的进行,需要对数据库进行观测,并通过观测结果进行相应的工作。数据库的可观测性不仅仅让开发和运维更好的进行性能调优、故障诊断、容量和性能预测等,同时也是数据库自治的重要基石。

技术源头:

可观测性(Observability)的概念是由美国匈牙利工程师Rudolf E. Kalman提出的,用于线性动力系统。 在控制理论中,它是衡量通过了解系统外部输出可以很好地推断系统内部状态的一种度量。

国外技术现状:

国外数据库厂商中,Oracle在可观测性上做的是最好的,它提供的可观测性组件包括:

  1. 日志体系
    很完备的日志体系。

  2. 通过丰富的性能视图(v表)涵盖了多数数据库的当前状态和统计指标。 如: 当前状态信息 vsession会话里有近百个栏位,涵盖会话和会话正在执行的SQL的相关信息
    vlock、vtransaction记录锁与事务的相关信息。
    系统指标准实时统计 – vsysmetric指标统计(statistics) a)系统实时指标及累计 – vsysstat, vsegstat b)实时等待事件及累计 – vsystem_event, vsession_event c)SQL指标实时累计 – vsqlstat
    d)对象指标实时累计– vsegstat e)共享内存对象实施累计 – vlatch_summary , vdb_cache_objects等 历史指标统计(statistics history) 活动会话历史:Vactive_session_history
    各类性能指标的周期性 历史统计DBA_HIST*
    并且通过ASH/AWR工具包全面展示特定周期内数据库的性能状况。

  3. 通过events体系对数据库进行各种跟踪, 如
    Events 10046 可跟踪SQL的执行情况
    Events 10053 可跟踪执行计划生成的决策过程
    通过events "error stack"子句进行特定错误捕捉

  4. 通过dump/event体系进行各类转储(dump)
    如:
    Dump系统状态
    ALTER SESSION SET EVENTS ‘immediate trace name systemstate level n’;
    Dump进程状态
    ALTER SESSION SET EVENTS ‘immediate trace name processstate level n’;
    Dump 库缓冲区
    ALTER SESSION SET EVENTS ‘immediate trace name library_cache level n’;
    Dump数据文件的数据块信息
    ALTER SYSTEM DUMP DATAFILE file# BLOCK block#;
    Dump索引结构
    ALTER SESSION SET EVENTS ‘immediate trace name treedump level n’;
    Dump控制文件
    ALTER SESSION SET EVENTS ‘immediate trace name controlf level n’;
    Dump日志文件
    ALTER SYSTEM DUMP LOGFILE ‘FileName’;

但主要开源数据库在这一方面做相对不足。指标监控上相对好一些,在跟踪和转储上做得较少,实现的寥寥无几。

国内技术现状:

国产数据库中,大多数基于MySQL/PostgreSQL发展起来的,除了Opengauss系和达梦数据库,多数沿袭了MySQL/PostgreSQL在可观测性上的功能,相对比较薄弱。
OpenGauss通过内置的dbe_perf模式、WDR功能、ASP功能及gstrace工具, 大幅的增加了可观测性。

  • dbe_perf模式 - dbe_perf模式可对以下各种类型的数据进行收集并实时更新。包括SQL执行相关信息、对象访问、锁、等待事件、事务各类统计信息信息等。
  • WDR功能 - WDR功能可周期性持久化dbe_perf里的相关性能数据,并通过WDR工具包对数据进行,生成WDR报表,对数据库性能瓶颈进行迅速定位。
  • ASP功能 - ASP功能可对活动回话进行高频转存,并形成活动回话历史信息。
  • gstrace - gstrace跟踪特定线程跟踪内核代码执行路径,记录内核数据结构,分析代码性能的工具内核代码执行路径,记录内核数据结构,分析代码性能。

达梦数据库,也可通过一系列性能视图记录系统活动的信息。同时也有部分trace功能用于跟踪数据库的活动。

国外代表产品:

Oracle数据库。

国内代表产品:

OpenGauss、达梦

详细描述:

数据库的可观测性可分为几类不同层面的实现,实现的越多,信息越准确,就可以更好进行性能调优、故障诊断、容量和性能预测等操作。

  1. 日志体系
    包括数据库主日志、各个进程或者线程的日志。
    完备的日志体系可以让更准确的定位故障,也可以通过日志把异常信息输出,与监控系统联动,更及时的暴露故障。
  2. 当前状态信息
    显示数据库当前的状态,比如会话信息,内存使用量,当前执行中的SQL,SQL执行计划、当前等待事件等。
    数据库当前状态相关信息可以把准确的把握当前的系统状态,包括异常状态及其原因,比如说,如果数据库中某些会话hung住,可以通过会话状态、等待事件等迅速定位hung住的原因。又或者是当前获取当前数据库正在运行的SQL及其执行计划,定位当前状态下的性能问题。
  3. 指标统计(statistics)及历史指标统计(statistics history)
    统计数据库中各类统计的指标,包括
  • SQL执行情况的指标,如执行次数,执行时间、CPU消耗、物理读、逻辑读等

  • 系统执行期的各项活动的指标,如物理读、逻辑读、登陆次数等

  • 数据库库对象访问指标,如表的访问次数,更新次数,插入次数等

  • 等待事件,如各个等待事件的等待次数和等待时间等

  • 共享内存统计指标

    当前的信息状态只能代表其中当前点的信息,而通过系统指标的统计和累计,则可以了解数据库时间维度的信息。
    同时,也通过把各种指标周期性的转存为可供后续分析的历史信息,形成性能资料库,用于跟进一步的性能分析。
    其中包括获取特定周期内数据库的活动情况,以定位特定周期内的性能问题;也可以将多个周期的数据形成趋势图,了解整个数据库多个周期内的性能变化情况,可以用于容量和性能预测,也可以为数据库自治管理提供准确的基础数据。
    部分数据库产品的历史指标统计功能还包括了活动回话历史,高频(通常是秒级)捕捉数据库中的活动会话信息以供查询及使用,方便在更细的时间力度粒度上定位性能问题和故障。

  1. 跟踪(trace)

    跟踪数据库的各类功能的执行过程,比如,跟踪SQL执行的各个步骤,消耗的时间,涉及的等待事件、逻辑读、返回行数等;或者跟踪SQL执行计划生成的决策过程等,跟踪网络收发包等。
    通过跟踪功能,可以更深入的分析性能问题或者数据库故障问题。

  2. 转储(dump)
    对内存中的信息或者文件中的信息进行转储,包括系统状态的转储、进程的转储,数据文件中数据块转储。转储包括手动发起的转储或因系统触发特定错误或者特定故障时的自动转储。
    转储不是简单地将二进制信息直接保存下来,而是包含了一定的可读性,包含了对内存内容或者文件内容的解析。
    当数据库处于异常状态时,为了快速恢复,通常需要对数据库进行重启或者中指某些进程(线程),而某些关键信息可能随之丢失,通过内存转储(包括系统状态的转储、进程的转储),可以一定程度上保留故障时刻的现场状态,方便更准确的定位问题。
    而当出现文件级别问题时,通过文件或者数据块转储功能,将非人类可读的信息转换成易于理解的信息,方便更准确的定位问题。

参考文献

[1]Kalman, R. On the general theory of control systems[J]. Ire Transactions on Automatic Control, 1959, 4(3):110-110.
[2] Oracle Tuning Guide, https://docs.oracle.com/en/database/oracle/oracle-database/21/tgdba/index.html
[3] Database Administrator’s Guide https://docs.oracle.com/en/database/oracle/oracle-database/21/admin/diagnosing-and-resolving-problems.html
[4] OpenGauss 开发者指南
https://opengauss.org/zh/docs/3.0.0/docs/Developerguide/Developerguide.html
[5] OpenGauss 工具参考
https://opengauss.org/zh/docs/3.0.0/docs/Toolreference/Toolreference.html

用户评价

0
1
词条统计
创建者:罗海雄
编辑次数:3
浏览次数:1333
API调用次数:0
贡献者