您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[未知机构]:详解瀚高数据库PDR性能诊断报告 - 发现报告

详解瀚高数据库PDR性能诊断报告

2023-11-12-未知机构d***
详解瀚高数据库PDR性能诊断报告

pdr功 能 介 绍通 常 国 产数 据库运 维是 一个 难点,特别 是DBA人员对数据库进行 性 能 分 析 时,使用一 些工 具等手 段会 大大降 低分 析难度 。瀚高数据库(以下简 称HGDB) 提 供 性能 监控与 诊断 工具pdr,实 现 了 周 期 性的收集、处理、持久 化 和 维 护 性能 统计 数据,主要 用于 数据库 性能 问题的 诊断 与解决,可以用来作 为 一 段 时 期内 数据 库性能 调整 的参 考。另外,pdr可 以生成 简单明了、信息丰 富 和 分 类 清晰 的HTML格式性 能诊 断报告 ,让DBA人员 阅读起来非常方便。pdr实 现 原 理HGDB的Postmaster负责fork出postgres进程,用于相应用 户 的 查 询 请求 ,同时 还fork出若 干辅助 进程 ,用于支 持HGDB的运行。pdr也 是 在postmaster启 动时, 注册 的一个 后台 工作 者进程 。后台工作者进程hgPdr会 使 用SPI接口 ,对HGDB内 核进 行直 接访 问,实 现统计信息的采集和 存 储 。采 集数 据的 过程类 似于PgStat,不 同之处 在于 ,hg_pdr不会反馈采集 信 息 给HGDB。pdr启动 后,首 先初 始化SPI接口 ,用于 统计信息的采集和保 存 。所 有 信息 保存 在一 个_pg_pdr模式中 。_pg_pdr模式 一共有四个表,分别 保 存 等 待 事件 信息 、SQL执行 信息 、Database基本信 息以 及Table基本信息。 默 认 情 况 下 ,每 隔一 个小 时,pdr会采集 一次 信息,将这 些信息 存入hg_pdr_模 式 的 四 个 表里 。每一 条信 息都带 有一 个快照id,用 以识别 采集的数据属于哪 个 时 间 段 。这 些数 据,Database基本 信息和Table基本信 息,来自 于HGDB自 带 的PgStat进程,pdr直 接从 共享内 存中 将这部 分数 据读取 出来,并存入_pg_pdr_的表中 。SQL执行 信息来 自pg_stat_statements插件,这部分信息也 是 保 存 在 共享 内存 中的,可以 通过 相关函 数直 接读出 。等 待事件目前使用了pg_wait_sampling插 件, 对pg_stat_activity视图 进行高 频采样,将等待事件 进 行 保 存 。_pg_pdr_中 保存 的统计 信息 ,默认 保留7天 ,超过7天的信息会 被 清 理 , 以节 约存 储空间 。HGDB还提供 一个pdr_report工具,用于生成性 能 分 析 报 告。pdr_report工具 会连 接HGDB, 将 用户指 定的时间段内的数据 库 信 息 取 出, 再结 合报告 模板 ,生 成一份HTML格式 的报 告。当使用pdr_report工具时 ,用 户需 要指定 生成 的数据 库名 ,快照id的 起止范围,生成报告 的 文 件 名 。pdr_report工 具会根 据这 些信 息,从数 据库中 把用户指定的信息读 取 出 来 , 填 写 到p d r _ r e p o r t .h t m l模 板 中 , 最 终 生 成p d r报 告 。 模 板 文 件 存 放在share目 录下 ,模 板文 件的样 式可 以进行 修改 ,不会影响到报告 的 生 成 。使 用pdr1、启 用pdrHGDB初 始化 完成后 ,实 际上已经包含了pdr功 能 , 我 们 只 需 要 通 过 配 置postgresql.conf来 启 用 : shared_preload_libraries='worker_pg_pdr,pg_stat_statements,pg_wait_sampling' 完 成 修 改 后 ,重 启数据 库,pdr功能启 用成 功。让 我们 查看一 下后台进程情况: ps-ef|grep postgres 2、配 置pdr通 过修 改postgresql.conf中pdr相关参 数,可 以对pdr进行配 置 。 pg_pdr.naptime=60#快照的产生间隔,单位为分钟,默认为60分钟产生一次快照。naptime=0时,代表不启用PDR功能。 pg_pdr.naplife=7#快照的保存时间,单位为天,默认保存最近7天的快照。超过naplife的快照,会自动删除。 pg_pdr.napdb='highgo'#用于保存PDR快照数据表的数据库,默认设置为highgo数据库。 3、使 用pdr初 次 安 装和使 用pdr时 ,采集 的第一 个快 照id是0,用户可以用于 生 成 性 能 分析 报告 的快照id是从1开始 的。 每采集 一次 快照,snap_id加1。生 成 快 照 的时 机有 两种。(1)自 动快 照:在数 据库 启动1分钟后自动产生一 次 快 照 ,然后 根据配 置文 件中的pg_pdr.naptime自动 产生后续快照,无需操 作 。(2)手动 快照 :在psql中 输入select pg_pdr_new_snap()即 可 立即产 生 一 次 快 照。psql返回t, 表示生 成快 照成功 。psql返 回f,表示生成快照 4、生成报 告使 用pdr_report命令 ,可以 生成 性能分 析报 告。pdr生成的 快照 存储在napdb配 置 的数 据库 中,快 照包 含整个 数据 集簇中 所有 数据库 的性能信息。按照提 示 ,依 次 输入 数据 库用 户名、用户 密码、快照 存储数 据库 名、报告目标数据库 名 、 开 始 快 照i d、 结 束 快 照i d、 报 告 文 件 名 后 即 可 生 成 报 告 。 性 能 分 析 报 告为html网页 格式, 可在 浏览器 中打 开和使 用。5、阅 读pdr报告(1) 基 本 信 息部 分, 包括 数据 库、 硬件 环境 、报 告生 成时 间等基础信息。 (2)负载概要,主要显示数据库的主要负载情况。 此 外 在 摘 要 部 分 我 们 还 看 到 前 台 事 件 等 待t o p 1 0的 情 况 。 等 待 状 态 首 先 是HGDB的 三 种 锁spinlock,lwlock和lock的 等待情况。 LWLock是 一种 基于spinlock机 制实 现的轻 量级 的锁,有互 斥、共享 、WAIT UNTILFREE三种锁模式; Lock是 和Oracle e nqueue类 似 的普 通锁,用于 操作HGDB中 的数 据对 象的。从Lock锁的等待情 况 中 可 以 分析HGDB的 锁的 争用情 况, 从而用 于优 化HGDB配置与应用程 BufferPinwait 序 。 状 态 可 以 用 于 辅 助 分 析 热 块 争 用 与 缓 冲 池的 效 率 , 该锁 是 保 护 内存 结构用的(和Oraclelatch类似),采用硬 件和 操作系 统提 供的test and set原子操作来实 现 。接 下 来是client、extension、IPC三个等 待状 态。客 户端等待状态可以用 于 分 析 客 户端 或者 应用的 性能 与负 载情况 ,extension等 待可以用于分析数据 文 件 的 扩 展情 况。IPC Wait可 以 用 于分 析数据 库中 的进 程间通讯是否正常。 析数据库中的超时以及IO等待统计。 统 计 ,统 计 了耗时SQL以及5类top SQL:CPU占 用、IO占用、缓存命中、物理读和执行次数。 接 下 来 的 信 息 显 示 了t o ps q l语 句 的 完 整 的 文 本 内 容 。 (6)I O统 计 信 息 , 分 别 按 照 功 能 、 缓 冲 区 、 对 象 进 行 统 计 。 (7)S e g m e n t统 计 , 分 别 按 照 逻 辑 读 、 物 理 读 、 全 表 扫 描 进 行 统 计 。 pdr总 结HGDB的pdr功能主 要作 用是收 集数 据库 和操作 系统相关信息,为HGDB在 运 行 过 程 中 产 生 的 性 能 问 题 提 供 诊 断 信 息 。