# openGauss-tools-ogtop **Repository Path**: opengauss/openGauss-tools-ogtop ## Basic Information - **Project Name**: openGauss-tools-ogtop - **Description**: ogtop是一款用于监控openGauss数据库的命令行工具,从各个角度提供了数据库实时运行数据,并且具备常用的数据筛选功能,为DBA检查数据库运行情况提供了一条简单易用的途径 - **Primary Language**: Unknown - **License**: LGPL-2.1 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 13 - **Forks**: 8 - **Created**: 2022-12-26 - **Last Updated**: 2025-07-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ogtop ## 一、简介 ogtop是一款用于监控opengauss数据库实时容量、性能、运行状态等关键信息的命令行工具。ogtop的主要开发语言为python,通过opengauss原生接口psycopg2连接数据库,从数据库系统表中获取监控数据,经由numpy清洗数据后通过pandas进行实时数据的计算,最后通过urwid进行页面展示。本工具从各个角度提供了详细的opengauss实时运行数据,并且具备常用的数据筛选功能,为DBA检查数据库运行情况提供了一条简单易用的途径。 ### 1、特性介绍 - **部署简单**:自带依赖包,解压即用,部署简易。 - **本地部署**:支持本地解压即运行的模式,不必担心网络不通、网络延迟等问题 - **简单易上手**:使用简单、信息展现直观,可以帮助DBA低成本获取数据库即时运行信息。 - **实时性能监控**:ogtop提供了一个实时的性能监控界面,用户可以及时查看数据库的各种关键性能指标,这包括查询执行情况、锁等待、复制状态等。通过实时更新的监控信息,用户能够迅速发现潜在的性能问题,有助于及时调整和优化数据库 - **多维度性能指标**:提供database界面概览当前节点的性能,提供SQL、session、等待事件、时间统计、流复制状态等的基本指标全覆盖的监控,有助于全面了解系统资源的利用情况。在不需要借助其他工具的情况下,实时监控数据库的性能 - **可扩展性**:基于python开发,具备较好的可扩展性。 ### 2、新特性 基于ogtop1.0版本,开发出ogtop2.0新版本。该版本与之前的版本特性功能保持兼容,同时对数据的展示方面做了性能上的提升,以及增加了一些新的功能: 性能改进: - 更改了数据加载模式,由以前的进入工具后缓冲加载改为预加载初始数据 - 优化database页面sql、session_detail页面sql,加快查询数据速度 - dynamicsql页面优化查询数据由以前的时间截取查询变为目前的数据全部查询 - 优化sql执行方式:在连接中增加自动提交功能及关闭游标策略 - 优化kill session的sql逻辑将关于ogtop部分sql排除在外防止程序中断 - dynamicsql页面展示的json拆分并对数据进行计算 - 设置分链接postgres库,以便查询相关postgres库内数据 - 优化ogtop登陆,从之前的固定参数输入变为标记型参数登陆,使用-u代表用户 -h代表host等 新增功能: - 增加asp页面:每隔一定周期,将数据库中活跃会话的信息持久化保存在系统表gs_asp中,当数据库发生故障或存在性能问题方便回溯定位问题原因。提供根据采样的时间筛选数据 - 增加sql_patch页面:支持对于特定SQL进行abort patch,针对问题场景进行提前报错处理,可以避免在业务侧修改语句。 - 增加slow_sql页面:增加对于慢SQL的监控,支持查看某段时间内开始执行的慢SQL - 将原本的table页面拆分成Table和Table_performance页面:查询更灵活,table页面查看表及其索引的大小等的基本信息,Table_performance可以查看表的活跃或dead tuple的行数等的状态信息 - 增加对于replication_slot的监控:replication页面新增对于复制槽的监控,同时支持在页面上删除复制槽的操作。用户在发现失效的复制槽时,无需额外登录数据库删除,可直接在页面上,通过输入指定的slot_name来进行删除 - 增加databaelist页面:在页面上直接查看当前节点的database的列表 - 增加查看table表定义页面 - 增加redo页面:显示本实例的备机的当前回放状态, 展示回放状态主要包括当前回放位置、回放最小恢复点位置等信息 - 增加redo_time_count页面:显示本节点各个回放线程的各个流程的耗时统计(仅在备机上有有效数据) - 增加xlog_redo_statics页面:显示本节点已经回放的各个类型类型的日志统计信息(仅在备机上有有效数据) - 增加wdr页面:数据库开启WDR工具后展示快照节点 - 增加snap_summary_more_statement页面:展示WDR工具的两个快照节点间执行多次的sql数据 - 增加burr_analysis页面:针对WDR工具的两个快照节点间执行多次的sql数据的毛刺检测分析 - 增加rigorous_analysis页面:针对WDR工具的两个快照节点间执行多次的sql数据的精确检测分析 - 增加snap_summary_statement页面:展示WDR工具的某一节点中某一天sql的执行性能数据 - session_detail页面增加线程调用栈stack功能可随sql变化而变化数据 - 增加了部分异常指标进行高亮处理,用户可更直观明显的注意到有问题的指标. - 左右翻页优化成滚动翻页:固定列,逐字段滚动翻页,方便用户查看指定行的信息 - 增加左下角展示页面的非通用快捷键,减少用户使用`h`帮助页面查看快捷键 - 内置dbmind的索引推荐功能:session页面和dynamicsql页面增加dbmind的索引推荐功能,底层调用dbmind的索引推荐接口,更方便的使用dbmind的索引推荐功能 - dynamicsql、slowsql、session等页面增加对时间的处理,且增加时间单位的显示,方便用户直接查看时间 - replication页面,将lsn转换成更易阅读的方式显示 - database页面优化部分指标由原来的数字数据显示变为百分比数据显示,新增磁盘io繁忙百分比的显示:增加` busy_time/all_time`指标动态的展示磁盘IO的性能 - 页面常用指标前面显示,减少左右翻页的操作 - 更改dynamicsql页面sql查询显示,方便用户阅读 - 新增`ogtop -h `提供帮助功能 缺陷修复: 1. SQL中存在`merge into`关键字在使用dbmind时导致上下两行的信息始终无法刷新。原因是dbmind当前版本不兼容`merge into`关键字的SQL语句 2. 部分异常退出场景修复 3. wait_event跳转到session界面存在列和字段值对不上 4. session_detail 跳转sql_explain页面的错误弹框问题修复 5. ASP页面查询内容为空,跳转时间长且无提示信息修复 6. TABLE、table_performance页面的tablename列没有冻结,导致查看信息不变问题修复 7. dynamicsql页面查看query_detail,对于长的SQL显示不全的问题修复 8. wait_event跳转到session页面出现重复SQL ,session页面没问题修复 9. 部分86400的页面 排序问题修复 10. ssession页面,kill功能增加过滤自身连接 11. session kill之后,kill连接未能及时断开问题修复 12. slow_sql 查看query detail 查询为空问题修复 ## 二、功能介绍 ### 1、功能概览 - ogtop共有17个一级页面,分别从不同角度展示数据库当前运行情况。每个页面中包含各自相关的详细信息。 - 结合openGauss丰富的可观测的接口pg_stat*和dbe_perf等系统表和系统视图,将各个功能拆分成几个模块展示,包括等待事件、SQL、session、操作系统的性能情况、内存、锁等。几个页面相互独立但又相辅相成,支持相互跳转,例如可以在lock_chain界面,根据sessionid跳转查看相应会话的详细信息 - 由面及点,抽丝剥茧: 一、实时性能监控:通过database页面,实时监控当前节点的全局性能指标,结合wait_events等待事件页面、dynamicsql页面查看TopSQL、session页面以及结合lock数据库当前锁的相关情况来定位性能瓶颈,接着分析性能瓶颈,分析SQL慢的原因,如定位到某个session的某条具体SQL导致的性能问题,可以通过session页面,可根据pid进入某个指定session的详情页面,支持查看单个query语句的执行计划。 二、分析过去某个时间段的性能瓶颈。通过asp页面查看历史活动会话的信息,结合慢SQL等进行分析 - 支持通过输入特定的字段(如会话的pid或者表名称)来进入特定对象的详细信息展示页。 - ogtop拥有丰富的查阅辅助功能,可以在页面中根据指定的指标排序、根据输入的关键字进行数据过滤等。 - ogtop可以随时截取当前时间的数据快照、并可以在部分页面中快捷终止指定范围的(可根据pid、库名、是否空闲等条件)数据库会话。 - 支持将此刻该页面的数据持久化到本地 ![overview](./pic/overview.jpg) ### 2、页面详述 1. `database:`数据库整体资源利用情况的概览,包括当前数据库的统计信息、内存状态、检查点以及double_write的I/O次数、各个时间消耗的信息、SQL的负载情况以及当前服务器的运行状态信息。具体为: - pg_stat_database:当前数据库的统计信息,包括事务数、增删改查的行数、临时文件、死锁的情况 - FILE_REDO_IOSTAT:redo日志写时间 - BGWRITER_STAT:检查点的次数 - GLOBAL_DOUBLE_WRITE_STATUS:double_write的I/O次数 - WORKLOAD_SQL_COUNT:SQL的负载情况。select_count、update_count等 - SESSION_STAT_ACTIVITY:统计各个状态的session数 - INSTANCE_TIME:各个时间消耗的信息,包括 CPU、IO等的时间花销 - GS_TOTAL_MEMORY_DETAIL:内存情况概览,包括进程所使用的内存、已使用的动态内存、已使用的共享内存、最大动态内存 - OS_RUNTIME:显示当前服务器的运行状态信息,包括idle和busy的时间统计,用户态和系统的时间统计 - 流复制状态 2. `session`: - 支持查看当前实例中所有session的详细信息,包括session的状态,会话线程的运行时间信息,以及各执行阶段锁消耗的时间等 - 支持查询单个会话的详细信息,可跳转到session_detail页面。除了显示session界面的信息外,还增加展示该会话的内存,连接SESSION_STAT系统表查询该线程的会话状态信息,例如commit数、回滚数、表扫描总数、实时块fetch数量等 - 还可根据该单条query语句生成推荐的索引,以及查询该条SQL的执行计划 - 集成dbmind工具,实现SQL的索引推荐 3. `asp`:从gs_asp系统表中获取某个时间点数据库活动的会话的历史信息,包括会话ID、持续时间、等待事件等。ASP能够帮助用户分析数据库某个时间段中是否存在性能问题。 > 注意:该页面只能在postgres库下访问,在业务库下查询无数据。asp的采集功能是通过enable_asp参数来控制,需设置enable_asp=on。 4. `Table`: 从PG_STAT_USER_TABLES系统视图中查看单个表的状态信息,支持根据数据库内置的relation_size统计表及表上索引的大小 - 跳转到table_detail页面可查看指定表的定义,还可查看该表的所有索引的相关信息 5. `Table_performance`:该页面的指标大部分来自`pg_stat_user_tables`系统视图,显示表的状态信息 - 同样支持从该页面跳转到table_detail页面 6. `Memory`:统计当前实例使用内存的信息(前提:enable_memory_limit=on),包括进程使用的内存、最大动态内存、已使用的shared memory等 - 如需进一步获取共享内存上下文的详细信息,可跳转至sharemem页面,该页面采集gs_shared_memory_detail的指标 - 与pg_stat_activiry连接,查看session级别的内存使用情况(前提:enable_memory_limit=on) 7. `dynamicsql`:性能监控视图,提供有关SQL语句执行的性能信息,包括执行计划、执行时间、buffer的访问和命中次数等,可以帮助分析和优化数据库性能,同时增加了调用dbmind的接口,支持对指定SQL的索引推荐功能 8. `lock`:查看数据库锁信息的页面,提供当前节点数据库的所有锁的性能信息,包括等待锁的事务,锁的类型,以及被锁定的对象等。值得一提的是,也进一步提供锁阻塞的详细信息,方便监控慢SQL以及查看锁阻塞的情况 9. `wait_event`:提供查看当前节点数据库中所有等待事件的性能信息,包括等待事件的类型、等待的次数以及等待的时间。极大的帮助用户诊断数据库的性能问题,通过实时监控等待事件,用户可以发现系统中是否存在资源争用、瓶颈或其他性能障碍等,有助于优化数据库配置、调整查询性能,提高数据库系统的响应能力,从而确保数据库系统的稳定性和高校性 10. `replication`: - 支持查看当前节点流复制(replication)状态信息,追踪每个备节点的同步状态,检查是否有延迟,以及确定主备节点之间的连接是否正常,已经通过一些函数,直观的查看wal的receive以及replay的延迟 - 增加对于replication_slot的监控,查看复制槽的状态信息,包括复制槽的状态,xlog接收的延迟等。同时支持在页面上直接删除特定的复制槽 11. `database_list`:提供不另外登录数据库可以查看当前节点database列表 12. `sql_patch`:支持对sql patch的一些操作。包括查看及删除patch,同样也支持通过create_abort_sql_patch()函数创建用于单点规避的SQL PATCH,通过对特定语句进行提前报错规避问题 13. `slow_sql`:支持通过输入某个时间段,查看该段时间内开始的数据库中记录的慢SQL的详细信息,包括SQL的各个时间、执行情况以及锁的相关信息。对于detail字段,借助解析函数也已经做了处理,展示用户易读的信息 14. `redo`:显示本实例的备机的当前回放状态, 展示回放状态主要包括当前回放位置、回放最小恢复点位置等信息 15. `redo_time_count`:显示本节点各个回放线程的各个流程的耗时统计(仅在备机上有有效数据) 16. `xlog_redo_statics`:显示本节点已经回放的各个类型类型的日志统计信息(仅在备机上有有效数据) 17. `wdr`:使用数据库自带WDR工具,展示各个快照节点,并根据各个快照节点实现了针对已执行的sql的毛刺分析和精确分析,有利于用户排查数据库中数据库压力大、sql执行慢等问题 **通用功能快捷键** | 键位 | 功能 | 范围 | 说明 | | ----- | -------- | ----------------- | ------------------------------------------------------------ | | Esc | 重置按钮 | ogtop全页面支持 | 使用页面小功能时或使用后,回到原始界面时使用 | | F | 冻结屏幕 | ogtop全页面支持 | 在需要查看固定一组数据是使用。Esc按钮进行重置 | | space | 立即刷新 | ogtop全页面支持 | 立即刷新该页面数据 | | Left | 左翻页 | ogtop部分页面支持 | 页面需要展示数据太多,根据序号进行分页,使用左右键查看其余部分 | | Right | 右翻页 | ogtop部分页面支持 | 页面需要展示数据太多,根据序号进行分页,使用左右键查看其余部分 | | Up | 上翻 | ogtop部分页面支持 | 多行数据页面展示不完整,利用上下键翻看 | | Down | 下翻 | ogtop部分页面支持 | 多行数据页面展示不完整,利用上下键翻看 | | h | help | ogtop全页面支持 | 显示帮助 | | q | 退出 | ogtop全页面支持 | 退出ogtop工具 | | p | 快照 | ogtop全页面支持 | 保存此刻展示的页面数据(F9保存,F10丢弃。保存的数据文件在运行文件同一目录下,文件名:ogtop_页面名.txt) | | / | 过滤 | ogtop部分页面支持 | 根据选择的条件过滤无关信息条目 | | z | 扩展排序 | ogtop部分页面支持 | 选定需要排序的字段,按照倒序排序,连续选中两次即为正序。第n次:n为奇数-倒序;n为偶数-正序 | ## 三、使用 1. **下载安装包** - arm系统:使用ogtop-arm版本包 - x86系统:使用ogtop-x86版本包 2. **解压** ``` tar -xf ogtop_arm.tar.gz tar -xf ogtop_x86.tar.gz ``` 3. **创建ogtop专用数据库用户** 示例中创建了测试用的数据库,实际使用中可以不创建,但是需要对数据库用户授权。 实际使用中也可以直接使用omm用户或其他已有用户(需确保权限足够)。 ``` create database ogtop ; \c ogtop create user ogtop sysadmin monadmin password 'ogtop@123'; alter database ogtop owner to ogtop ; grant USAGE on SCHEMA dbe_perf to ogtop ; ``` > 注意:连接数据库的用户必须有dbe_perf schema的USUAGE权限。 4. **运行ogtop** 运行ogtop后,进入首页 ``` ./ogtop -h ip -p port -d database -u user 例: ./ogtop -h 197.0.194.195 -p 26000 -d ogtop -u ogtop ``` ### 1、home - 首页 home页面是整个ogtop监控工具的默认主页与导航入口。 用户使用ogtop数据库监控工具连接数据库,进入首页home页面,可以根据页面提示进入对应的功能模块查看对应的数据。 用户在任意页面都可以通过页面快捷键来切换到不同的页面。 每个页面都有不同的辅助功能快捷键,可以在不同页面通过按h进入help页面查看。 > Tips:单页展示不下的行或者列,可以通过上下左右键进行翻页 #### 1)页面 ``` Local Time: 2024-06-06 09:54:45 home Port: 26000 Query interval: 2s dbname: mladb ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ ___ ____ _ │ │ / _ \ / ___| |_ ___ _ __ │ │ | | | | | _| __/ _ \| '_ \ │ │ | |_| | |_| | || (_) | |_) | │ │ \___/ \____|\__\___/| .__/ │ │ |_| │ │ │ │ d: database s: session │ │ A: asp t: Table │ │ T: Table_performance m: Memory │ │ D: dynamicsql U: lock │ │ W: wait_event r: replication │ │ l: database_list P: sql_patch │ │ B: slow_sql E: redo │ │ o: redo_time_count x:xlog_redo_statics │ │ w: wdr │ │ │ │ │ │ │ │ │ │ │ │ │ │ Warning:the time of ogtop local server is different │ │ from the time select from target database!! │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` **页面指标**: | 指标 | 描述 | | -------------- | ------------------------------------------------------------ | | Local Time | 当前服务器时间 | | Query interval | 查询间隔(每2s刷新一次数据)。如页面冻结,该指标的值为86400s | | Port | 数据库端口 | | dbname | 连接的数据库名 | #### 2)功能快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | ----------------- | --------------------------------- | -------------------------------------- | | d | database | ogtop全页面支持 | database数据概览页面 | | s | session | ogtop全页面支持 | session会话连接数据概览页面 | | A | asp | ogtop全页面支持 | gs_asp系统表数据概览页面 | | t | table | ogtop全页面支持 | 表基础数据概览页面 | | T | table_performance | ogtop全页面支持 | 表性能数据概览页面 | | m | memory | ogtop全页面支持 | memory内存数据概览页面 | | D | dynamicsql | ogtop全页面支持 | dynamicsql数据概览页面 | | U | lock | ogtop全页面支持 | lock锁数据概览页面 | | W | wait_event | ogtop全页面支持 | wait_event数据概览页面 | | r | replication | ogtop全页面支持 | 流复制数据概览页面 | | l | database_list | ogtop全页面支持 | database列表概览页面 | | B | slow_sql | ogtop全页面支持 | 慢SQL概览页面 | | P | sql_patch | ogtop全页面支持 | SQL PATCH概览页面 | | E | redo | ogtop全页面支持 | 备机回放状态数据概览页面 | | o | redo_time_count | ogtop全页面支持 | 回放线程耗时统计概览页面(仅备机) | | x | xlog_redo_statics | ogtop全页面支持 | 已回放的日志统计信息概览页面(仅备机) | | w | wdr | ogtop全页面支持 | WDR数据概览页面 | | h | help | ogtop全页面支持(HOME页面不支持) | help帮助概览页面 | ### 2、help - 帮助页 进入ogtop任意界面(HOME页面不支持),按`h`键,可进入帮助页面,在这里可以查看不同页面可进行操作的所有按键及其功能。 三部分: - **pages**:全局快捷键。全页面支持跳转 - **function**:功能快捷键。部分页面支持 - **page map**:显示子页面详情 ``` ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ pages │ │ │ │ │ │ │ │ d: database s: session │ │ A: asp t: Table │ │ T: Table_performance m: Memory │ │ D: dynamicsql U: lock │ │ W: wait_event r: replication │ │ l: database_list P: sql_patch │ │ B: slow_sql E: redo │ │ o: redo_time_count x:xlog_redo_statics │ │ w: wdr │ │_____________________________________________________________________________________________________________________________________________________________________________________________________________│ │ function │ │ │ │ │ │ │ │ v: table_detail /: conditional filtration │ │ z: sort by column left: page left │ │ right: page right h: help │ │ q: close p: snapshoot(f9 save f10 discard) │ │ space: immediate refresh F: freeze screen │ │ esc: reset │ │_____________________________________________________________________________________________________________________________________________________________________________________________________________│ │ page map │ │ │ │ │ │ │ │ session-->session_detail-->session_detail_plan │ │ session-->index_recommendation │ │ table-->table_detail-->table_index │ │ table_performance-->table_detail-->table_index │ │ lock-->session_detail │ -->lock_chain-->session_detail │ │ memory-->sharemem&top_mem_used_session │ │ -->top_mem_used_session-->session_detail │ │ dynamicsql-->index_recommendation │ │ wdr-->snap_summary_more_statement-->snap_summary_statement&burr_analysis&rigorous_analysis │ │ -->burr_analysis-->snap_summary_statement&rigorous_analysis │ │ -->rigorous_analysis-->snap_summary_statement │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` ### 3、database - 全局总览页 该模块显示数据库的各项状态指标总览。进入ogtop的任意界面后按`d`即可进入database指标查看页面。 database页面提供数据库的总体概览信息,包括当前的活跃会话比例,当前节点的状态以及角色,内存参数的值等 ``` ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ active session/session: >>4.13% │ │ blks_hit/(blks_hit+read): >>>>>>>>>>>>>>>>>>37.59% │ │ select_count/dml_count: >>>>>>>>>19.42% │ │ DATA_IO_TIME/DB_TIME: >>>>>>>>>>>23.87% │ │ dynamic_used_memory/max_dynamic_memory: >>>>>>>>>>>>>>>>>34.84% │ │ busy_time/all_time: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>61.7% │ │_____________________________________________________________________________________________________________________________________________________________________________________________________________│ │ │ │ │ │ start_date start_time wal_status LocalRole ProcesMem Dynamic_Mem Shared_Mem │ │ 2024-01-02 14:13:41 Normal Primary 19154 4866 12512 │ │ │ │ │ │ Session Actsess Waiting idleintran xact_commit xact_rollback totalcount │ │ 557 23 0 0 7404 8 7112 │ │ │ │ │ │ ddl_count dml_count dcl_count select_count update_count insert_count delete_count │ │ 0 7112 0 1381 0 5730 1 │ │ │ │ │ │ num_cpus num_cpu_cores num_cpu_sockets blks_read blks_hit hitratio tup_fetched │ │ 24 12 2 1305108 786146 37.59 118794 │ │ │ │ │ │ tup_inserted tup_update tup_delete DB_TIME(s) cpu_time(s) execute_time(s) data_io_time(s) │ │ 5594 1 0 32.6762 18.146 17.2791 7.7988 │ │ │ │ │ │ blk_read_time blk_write_time redo_writetim temp_files temp_bytes conflicts deadlocks │ │ 0 0 97.462 484 49195039932 0 0 │ │ │ │ │ │ checkpoints pgwrits double_writes physical_memory_bytes idle_time user_time sys_time │ │ 0 0 8 49771872256 38.3% 49.06% 12.64% │ │ │ │ │ │ iowait_time nice_time vm_page_in_bytes vm_page_out_bytes os_load_processes │ │ 5.2% 0.0% 0 0 19.73 │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` **页面指标**: | 指标 | 描述 | | -------------------------------------- | ---------------------------------------- | | active session/session | 活动会话数占总会话数的比例 | | blks_hit/(blks_hit+read) | 查询命中率 | | select_count/dml_count | select在所有dml中的占比 | | DATA_IO_TIME/DB_TIME | 数据io时间在数据库时间的占比 | | dynamic_used_memory/max_dynamic_memory | 动态内存使用率 | | busy_time/all_time | 磁盘io的繁忙程度 | | start_date | 数据库启动日期 | | start_time | 数据库启动时间 | | wal_status | 主从(集群)状态 | | LocalRole | 本地角色 | | ProcesMem | 已使用的进程内存 | | Dynamic_Mem | 已使用的动态内存 | | Shared_Mem | 已使用的共享内存 | | Session | 会话数 | | Actsess | 正在运行的会话数 | | Waiting | 等待锁的会话数 | | idleintran | idle in transaction 状态的session会话数 | | xact_commit | 事务提交数 | | xact_rollback | 事务回滚数 | | totalcount | totalcount=ddl_count+dml_count+dcl_count | | ddl_count | ddl数量 | | dml_count | dml数量 | | dcl_count | dcl数量 | | select_count | select数量 | | update_count | update数量 | | insert_count | insert数量 | | delete_count | delete数量 | | num_cpus | CPU 数量 | | num_cpu_cores | CPU 核数 | | num_cpu_sockets | CPU sockets数 | | blks_read | 读取块数 | | blks_hit | 命中块数 | | hitratio | 命中率 | | tup_fetched | fetch行数 | | tup_inserted | insert行数 | | tup_update | update行数 | | tup_delete | delete行数 | | DB_TIME/ms | 数据库时间 | | cpu_time | cpu时间 | | execute_time | sql执行时间 | | data_io_time | 数据io时间 | | blk_read_time | 块读取时间 | | blk_write_time | 块写入时间 | | redo_writetim | redo日志写时间 | | temp_files | 临时文件数 | | temp_bytes | 临时文件大小 | | conflicts | 数据库冲突数 | | deadlocks | 死锁数量 | | checkpoints | checkpoints数量 | | double_writes | 双写次数 | | physical_memory_bytes | 物理内存大小 | | idle_time | 处理器空间时间 | | user_time | 用户态的时间 | | sys_time | 内核态时间 | | iowait_time | iowait时间 | | nice_time | Cpu调度优先级花费的时间 | | vm_page_in_bytes | 虚拟内存中 从Swap区读入的字节数 | | vm_page_out_bytes | 虚拟内存中 从Swap区读出的字节数 | | os_load_processes | 负载 | ### 4、session - 会话 该模块显示session数据库会话连接的各项状态指标。进入ogtop任意界面后按`s`进入查看该模块的功能。 #### 1)session ##### a. 流程图 ![session](./pic/session.png) ##### b. 页面 进入Home页面,按`s`进入session主页面。 该页面提供查询数据库所有session连接的大致情况 ``` ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— │ │ |active session/session: >2.4% | │ │ ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— │ │ n_commit............: 4182 n_blocks_fetched.........: 370062 │ │ n_rollback..........: 27 n_local_blocks_read: 0 n_physical_read_operation: 370062 │ │ n_sql...............: 4284 n_sort_in_disk.....: 0 n_shared_blocks_dirtied..: 3320 │ │ n_table_scan........: 54668 n_cu_hdd_asyn_read.: 0 n_local_blocks_dirtied...: 0 │ │ n_shared_blocks_read: 69432 n_blocks_read_time.: 5328148 n_blocks_write_time......: 0 │ │ n_sort_in_memory....: 3 n_cu_mem_hit.......: 0 n_cu_hdd_sync_read.......: 0 │ │ │ │_____________________________________________________________________________________________________________________________________________________________________________________________________________│ │pid query current_state xact_start_time(ms) query_start_time(ms) waiting wait_status wait_event │ │_____________________________________________________________________________________________________________________________________________________________________________________________________________│ │140606852232960 WLM fetch collect info active 932840783.516 932840783.521 False none none │ │ from data nodes │ │140605582866176 insert into mlausr.OS_OS_ active 512.149 512.154 False wait cmd wait cmd │ │ PERFORMANCE(host,target_i │ │ p,snaptime │ │140612202985216 merge into MLAUSR.JMX_KAF active 558.401 558.406 False none none │ │ KA_CONSUME_PERFORMANCE_SU │ │ MMARY as P │ │140601674102528 autovacuum: VACUUM mlausr active 282286.069 282286.074 False vacuum gpi: mlausr.og_wai vacuum gpi │ │ .og_wait_events_data t_events_data, autovacuum │ │ (freeze old tu │ │140586281662208 delete from active 542.555 542.078 False none none │ │ OS_TOMCAT_PERFORMANCE_PRE │ │ where TARGET_IP='197.2 │ │140578625533696 insert into mlausr.OS_OS_ active 514.229 514.234 False none none │ │ PERFORMANCE(host,target_i │ │ p,snaptime │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` **页面指标**: | 指标 | 描述 | | ------------------------- | ------------------------------------------------------------ | | active session/session | 活动会话占总会话数的比例 | | n_commit | 数据库实时提交总数 | | n_rollback | 数据库实时回滚总数 | | n_sql | 数据库实时sql总数 | | n_table_scan | 数据库实时表扫描总数 | | n_shared_blocks_read | 数据库实时共享块读取总数 | | n_sort_in_memory | 数据库实时内存排序总数 | | n_local_blocks_read | 数据库实时本地块读取总数 | | n_sort_in_disk | 数据库实时磁盘排序总数 | | n_cu_hdd_asyn_read | 数据库实时磁盘异步读取cu总数 | | n_blocks_read_time | 数据库实时块读取总时间 | | n_cu_mem_hit | 数据库实时CU内存命中总次数 | | n_blocks_fetched | 数据库实时块fetch总数 | | n_physical_read_operation | 数据库实时物理读操作总数 | | n_shared_blocks_dirtied | 数据库实时脏共享块总数 | | n_local_blocks_dirtied | 数据库实时脏本地块总数 | | n_blocks_write_time | 数据库实时块写入总时间 | | n_cu_hdd_sync_read | 数据库实时磁盘同步读取cu总数 | | pid | 后台线程ID | | query | 查询的sql语句 | | current_state | 该后台当前总体状态 | | xact_start_time/ms | 启动当前事务的时间 | | query_start_time/ms | 查询当前query的时间 | | waiting | 如果后台当前正等待锁则为true | | wait_status | 当前线程的等待状态 | | wait_event | 如果wait_status是acquire lock、acquire lwlock、wait io三种类型,此列描述具体的锁、轻量级锁、IO的信息。否则是空。 | | db_time/s | 有效执行时间 | | cpu_time/s | cpu时间花销 | | excute_time/s | 执行器内时间花销 | | data_io_time | IO时间花销 | | db_name | 数据库名 | | user_name | 会话发起的用户名 | | application_name | 应用程序名 | | client_addr | 客户端地址 | ##### c. 快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | ------------------------ | --------------- | ------------------------------------------------------------ | | a | 前往session_detail页面 | session页面支持 | 复制需要查询的session的pid,输入到提示框内 | | i | dbmind的索引推荐功能 | session页面支持 | | | f | 根据单选按钮kill session | session页面支持 | Kill session时为四种模式,force_all、force_by_dbname、force_idle、force_by_pid,按需谨慎选择 | #### 2)session_detail ``` session >> session_detail ``` ##### a. 页面 进入session 主页面,按`a`键,弹出如下输入框,输入要查询session的pid,以`enter`结尾,进入详细信息页面: ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ │ │please input pid(end with enter):140614493533952 │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ``` 成功进入 pid=140614493533952 的session详情页面,此页面针对特定session展示更为详细的指标信息: ``` ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │query_id:0 block_sessionid:- backend_start:2024-01-19 query_start:1705643931781 datid:2050516356 datname:ogtop usesysid:2050516363 usename:ogtop │ │ 09:11:32 │ │ │ │application_name:gsql client_addr:- client_hostname:- client_port:-1 xact_start_time:2024-01-19 state_change_time:2024-01 waiting:False total_cpu_time(s):0.0 │ │ 13:58:43 -19 13:58:51 │ │ │ │db_time(ms):0.0 cpu_time(ms):0.0 execution_time(ms):0.0 data_io_time(ms):0.0 parse_time(ms):0.0 plan_time(ms):0 rewrite_time(ms):0.0 net_send_time(ms):0.0 │ │ │ │pl_execution_time(ms):0.0 pl_compilation_time(ms):0 init_mem:5 used_mem:0 peak_mem:1 wait_status:wait cmd locktag:- lockmode:- │ │ .0 │ │ │ │n_commit:0 n_rollback:0 n_sql:0 n_table_scan:0 n_blocks_fetched:0 n_physical_read_operation n_shared_blocks_dirtied:0 n_local_blocks_dirtied:0 │ │ :0 │ │ │ │n_shared_blocks_read:0 n_local_blocks_read:0 n_blocks_read_time:0 n_blocks_write_time:0 n_sort_in_memory:0 n_sort_in_disk:0 n_cu_mem_hit:0 n_cu_hdd_sync_read:0 │ │ │ │n_cu_hdd_asyn_read: 0 │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │query: select * from index_test where b = 'test_999' ; │ │ │ ``` **页面指标**: | 指标 | 描述 | | ------------------------- | ------------------------------------------------------------ | | query_id | 查询语句 的id | | block_sessionid | 阻塞当前线程获取锁的会话标识。 | | backend_start | 开始当前活跃查询的时间(如果state的值不是active,则这个值是上一个查询的开始时间) | | query_start | 该过程开始的时间,即当客户端连接服务器时间 | | datid | 数据库ID | | datname | 数据库名 | | usesysid | 登陆该后台的用户OID | | usename | 登陆该后台的用户名 | | application_name | 应用程序名 | | client_addr | 客户端地址 | | client_hostname | 客户端主机名 | | client_port | 客户端端口 | | xact_start_time | 启动当前事务的时间 | | state_change_time | 上次状态改变的时间 | | waiting | 如果后台当前正等待锁则为true | | total_cpu_time/s | 语句在数据库节点上的CPU总时间 | | db_time/ms | 有效执行时间 | | cpu_time/ms | cpu时间花销 | | excute_time/ms | 执行器内时间花销 | | data_io_time/ms | IO时间花销 | | parse_time/ms | Sql解析时间花销 | | plan_time/ms | 生成plan的时间花销 | | rewrite_time/ms | sql重写的时间花销 | | net_send_time/ms | 网络上的时间花销 | | pl_execution_time/ms | plpgsql(存储过程)执行的时间花销 | | pl_compilation_time/ms | plpgsql(存储过程)编译的时间花销 | | init_mem | 当前正在执行作业进入执行器前已分配的内存 | | used_mem | 当前正在执行作业已分配的内存 | | peak_mem | 当前正在执行作业已分配的内存峰值 | | wait_status | 当前线程的等待状态 | | locktag | 当前线程正在等待锁的信息。 | | lockmode | 当前线程正等待获取的锁模式。包含表级锁、行级锁、页级锁下的各模式。 | | n_commit | 实时提交数 | | n_rollback | 实时回滚数 | | n_sql | 实时sql数 | | n_table_scan | 实时表扫描数 | | n_shared_blocks_read | 实时共享块读取数 | | n_sort_in_memory | 实时内存排序数 | | n_local_blocks_read | 实时本地块读取数 | | n_sort_in_disk | 实时磁盘排序数 | | n_cu_hdd_asyn_read | 实时磁盘异步读取cu数 | | n_blocks_read_time | 实时块读取时间 | | n_cu_mem_hit | 实时CU内存命中次数 | | n_blocks_fetched | 实时块fetch数 | | n_physical_read_operation | 实时物理读操作数 | | n_shared_blocks_dirtied | 实时脏共享块数 | | n_local_blocks_dirtied | 实时脏本地块数 | | n_blocks_write_time | 实时块写入时间 | | n_cu_hdd_sync_read | 实时磁盘同步读取cu数 | | query | 查询语句内容 | ##### b. 快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | -------------------------- | ---------------------- | ------------------------------------ | | f | Kill session | session_detail页面支持 | 使用功能时需在复检页面在进行二次确认 | | e | 前往session_query_plan页面 | session_detail页面支持 | 页面所示内容为session_query_plan | **f - kill session**: 在会话详细信息页按`f`,提示是否终止会话,输入y确认杀死该session;否则输入 n 杀死当前session: ``` ┌──────────────────────────────────────────────┐ │ whether to killFalse(y/n): │ │ │ ``` session 已经被杀掉: ``` ogtop=> end; FATAL: terminating connection due to administrator command could not send data to server: Broken pipe The connection to the server was lost. Attempting reset: Failed. ``` #### 3)sql_explain 该页面分为两部分: - **advise**:索引推荐。指定session的查询语句生成推荐的索引 - **explain**:显示该条语句的执行计划 ``` session >> session_detail >> sql_explain ``` 界面显示: ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ │ │Please input schema_name(end with enter):public │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ``` 显示结果: ``` ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ │ │query │ │_________________________________________________________________________________________│ │select * from index_test where b = 'test_999' ; │ │ │ │ │ │advise │ │_________________________________________________________________________________________│ │('public', 'index_test', 'b', '') │ │ │ │ │ │explain │ │_________________________________________________________________________________________│ │('Seq Scan on index_test (cost=0.00..1791.00 rows=1 width=14)',) │ │(" Filter: (b = 'test_999'::text)",) │ │ │ ``` > 提供可以通过键`b`,返回到session_detail界面 #### 4)session_kill ``` session >> session_kill ``` 进入session主页面,按`f`键,弹出session_kill的窗口,有下图所示的四种模式: - **force_all**:kill非omm用户的所有后台线程 - **force_by_dbname**:kill连接指定数据库的所有session - **force_idle**:kill 状态为 idle in transaction且持续时间超过10min的session - **force_by_pid**:指定 pid 进行kill > 原理:使用pg_terminate_backend()函数完成kill操作 ``` ┌───────────────────────────────────┐ │< force_all > │ │< force_by_dbname > │ │< force_idle > │ │< force_by_pid > │ ``` ``` ┌────────────────────────────────────────┐ │please input pid(end with enter): │ ``` #### 注意事项 1.暂时后台获取数据时较慢,在使用其他小功能时,摁完快捷键后需等待2s左右,等待页面刷新结束 2.在使用kill session功能时,请谨慎选择,避免产生无法预估事件 ### 5、asp 登陆ogtop任意界面,按`A`键进入asp模块,查看当前节点的某个时间段的历史会话情况 #### a. 流程图 ![pic](./pic/asp.png) #### b. 页面 输入要查看的时间点,显示前后一分钟的数据: ``` ┌──────────────────────────────────────────────────────────────────────┐ │please enter what to find(year-month-day hour:minute:second): 页面显示: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │datname username sessionid client_addr duration_ms event unique_query sample_time │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │mladb mlausr 140592184293120 197.0.35.106 1.698 WALFlushWait insert into MLAUSR.JMX_KAF 2024-01-22 │ │ KA_PERFORMANCE 09:59:00.435903+08 │ │ (HOST,SNAPTIME,CLAS │ │mladb mlausr 140592594478848 197.0.35.115 1.68 none insert into MLAUSR.JMX_KAF 2024-01-22 │ │ KA_PERFORMANCE 09:59:00.435946+08 │ ``` #### c.快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | ------------- | ----------- | ------------------------ | | a | 查看query详情 | asp页面支持 | 用于查看query中的sql详情 | ### 6、Table - 表 登陆ogtop任意界面,按`t`键进入table模块,查看数据库中表数据的概览情况 #### 1)Table 主页面 ##### a. 流程图 ![table](./pic/table.png) ##### b. 页面 显示表的基础信息: ``` ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │datname schemaname relname relid tabsize/MB idxsize/MB totalsize/MB last_vacuum last_autovacuum last_analyze last_autoanalyze last_data_changed │ │____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________│ │ogtop public index_test 2050719944 4.225 0.0 4.225 - - 2024-01-18 2024-01-18 2024-01-18 │ │ogtop dbe_pldeveloper gs_source 12547 0.008 0.023 0.031 14:35:19.613651+08:00 14:35:19.613651+08:00 14:33:57.945874+08:00 │ │ 2024-01-18 2024-01-18 - - - │ │ogtop db4ai snapshot 14933 0.008 0.016 0.023 11:40:18.523533+08:00 11:40:18.523533+08:00 │ │ 2024-01-18 2024-01-18 - - - │ │ogtop dbe_pldeveloper gs_errors 12554 0.008 0.008 0.016 2024-01-18 2024-01-18 - - - │ │ 11:40:18.559381+08:00 11:40:18.559381+08:00 │ ``` **页面指标**: | 指标 | 描述 | | ----------------- | ------------------------------------------------------------ | | datname | 数据库名 | | schemaname | schema名 | | relname | 表名 | | relid | 表的oid | | tabsize/MB | 表大小 pg_table_size() | | idxsize/MB | 索引大小 pg_indexes_size() | | totalsize/MB | pg_total_relation_size | | last_vacuum | 最后一次清理该表的时间。 | | last_autovacuum | 上次被autovacuum守护进程清理该表的时间。 | | last_analyze | 上次分析该表的时间 | | last_autoanalyze | 上次被autovacuum守护进程分析该表的时间。 | | last_data_changed | 记录这个表上一次数据发生变化的时间(引起数据变化的操作包括INSERT/UPDATE/DELETE、EXCHANGE/TRUNCATE/DROP partition),该列数据仅在本地数据库主节点记录。 | ##### c. 快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | ----------------- | ------------- | --------------------------------------------------------- | | v | 前往table详情页面 | table页面支持 | 复制需要查询的table的schemaname.tablename,输入到提示框内 | #### 2)table_detail 该页面显示表的详细信息: ``` table >> table_detail ``` 进入table主页面,按键 `v`进入table_detail页面: ``` ┌──────────────────────────────────────────────────────────────────────┐ │please input schemaname.relname(end with enter):public.index_test │ └──────────────────────────────────────────────────────────────────────┘ ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │datname:ogtop relid:2064021426 schemaname:public relname:index_test │ │___________________________________________________________________________________________________________________________________________________________________________________│ │table_detail: │SET search_path = public; │CREATE TABLE index_test ( │ a integer, │ b text │) │WITH (orientation=row, compression=no); │CREATE INDEX index_test_b_idx ON index_test USING btree (b) TABLESPACE pg_default; ``` **快捷键**: | 键位 | 功能 | 范围 | 说明 | | ---- | ----------------------- | -------------------- | ---------------------------------------- | | a | 前往table_index详情页面 | table_detail页面支持 | 复制需要查询的table的oid,输入到提示框内 | #### 3)table_index 该页面显示指定表上所有的索引信息 ``` table >> table_detail >> table_index ``` 进入table主页面,按`a`键,输入指定的表名,进入到table_index页面: ``` ┌──────────────────────────────────────────────────────────────────────┐ │please input relid(end with enter): │ └──────────────────────────────────────────────────────────────────────┘ ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │indexrelname relname schemaname datname idx_scan idx_tup_read idx_tup_fetch idx_blks_hit │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │index_test_b_idx index_test public ogtop 0.0 0.0 0.0 0.0 │ │ │ │ │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │indexrelname relname phyrds phywrts phyblkrd phyblkwrt readtim writetim │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │index_test_b_idx index_test 0.0 0.0 0.0 0.0 0.0 0.0 │ │ │ ``` 注意:如果表上没有索引,则输出: ``` ┌───────────────────────────────────────────────────────────────────────────────────────┐ │table_index page temporarily inaccessible:the index queried is an invalid index │ └───────────────────────────────────────────────────────────────────────────────────────┘ ``` **页面指标**: | 指标 | 描述 | | ------------- | -------------- | | indexrelname | 索引名 | | relname | 索引所在的表名 | | schemaname | schema名 | | datname | 数据库名 | | idx_scan | 索引扫描数 | | idx_tup_read | 索引行扫描数 | | idx_tup_fetch | 索引行fetch数 | | idx_blks_hit | 索引块命中率 | | phyrds | 物理读 | | phywrts | 物理写 | | phyblkrd | 物理读块数 | | phyblkwrt | 物理写块数 | | readtim | 读次数 | | writetim | 写次数 | ### 7、Table_performance 登录ogtop任意界面,按`T`进入table_performance模块,查看表的状态信息 #### a. 流程图 ![table](./pic/table.png) #### b. 页面 ``` ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │datname schemaname relname relid n_live_tup n_dead_tup seq_scan seq_tup_read │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │ogtop dbe_pldeveloper gs_source 12547 0 0 0 0 │ │ogtop public index_test 2064021426 100000 0 0 0 │ │ogtop public t_basic_part_list 2078652385 5 0 0 0 │ │ogtop db4ai snapshot 14933 0 0 0 0 │ │ogtop public lock_test 2062678713 2 6 0 0 │ │ogtop dbe_pldeveloper gs_errors 12554 0 0 0 0 │ ``` **页面指标**: | 指标 | 描述 | | --------------- | --------------------------------------------- | | datname | 数据库名 | | schemaname | schema名 | | relname | 表名 | | relid | 表的oid | | n_live_tup | 估计活跃行数 | | n_dead_tup | 估计死行数 | | seq_scan | 该表发起的顺序扫描数 | | seq_tup_read | 顺序扫描抓取的活跃行数。 | | idx_scan | 该表发起的索引扫描数。 | | idx_tup_fetch | 索引扫描抓取的活跃行数。 | | n_tup_ins | 插入行数。 | | n_tup_upd | 更新行数 | | n_tup_del | 删除行数 | | n_tup_hot_upd | HOT更新行数 | | heap_blks_read | 从该表中读取的磁盘块数。 | | heap_blks_hit | 该表缓存命中数。 | | idx_blks_read | 从表中所有索引读取的磁盘块数 | | idx_blks_hit | 从表中所有索引命中的磁盘块数 | | toast_blks_read | 该表的TOAST表读取的磁盘块数(如果存在)。 | | toast_blks_hit | 该表的TOAST表命中缓冲区数(如果存在)。 | | tidx_blks_read | 该表的TOAST表索引读取的磁盘块数(如果存在)。 | | tidx_blks_hit | 该表的TOAST表索引命中缓冲区数(如果存在 )。 | | phywrts | 写物理文件的数目。 | | phyblkrd | 读物理文件块的数目。 | | phyblkwrt | 写物理文件块的数目。 | | readtim | 读文件的总时长(单位:微秒) | | writetim | 写文件的总时长(单位:微秒) | | snaptime | localtimestamp | #### c. 快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | ----------------------- | -------------------- | ---------------------------------------- | | a | 前往table_index详情页面 | table_detail页面支持 | 复制需要查询的table的oid,输入到提示框内 | ### 8、Memory - 内存 memory 模块提供用户查看openGauss数据库中内存的总体使用情况 #### 1)Memory 主页面 从ogtop工具任意界面,使用键盘`m`键进入本页面 ##### a. 流程图 ![memory](./pic/memory.png) ##### b. 页面 ``` ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ process_memory_used_percent : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>69.32% │ │ dynamic_memory_used_percent : >>>>>>>>>>>>>>>>>35.01% │ │ backend_memory_used_percent : 0.15% │ │ shared_memory_used_percent : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>99.96% │ │ cstore_memory_used_percent : 0.00% │ │ sctpcomm_memory_used_percent : 0.00% │ │ gpu_dynamic_memory_used_percent : 0.00% │ │ │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │target_ip: 197.0.3.106 max_process_memory: 27648 process_used_memory: 19166 max_dynamic_memory: 13965 dynamic_used_memory: 4889 dynamic_used_shrctx: 2258 max_backend_memory: 660 │ │ │ │backend_used_memory: 1 max_shared_memory: 12990 shared_used_memory: 12985 max_cstore_memory: 32 cstore_used_memory: 0 max_sctpcomm_memory: 0 sctpcomm_used_memory: 0 │ │ │ │other_used_memory: 1237 gpu_max_dynamic_memory: 0 gpu_dynamic_used_memory: 0 pooler_conn_memory: 0 pooler_freeconn_memory: 0 storage_compress_memory: 0 udf_reserved_memory: 0 │ │ │ ``` **页面指标**: | 指标 | 描述 | | ------------------------------- | ----------------------------- | | process_memory_used_percent | 进程内存占用百分比 | | dynamic_memory_used_percent | 动态内存占用百分比 | | backend_memory_used_percent | backend内存占用百分比 | | shared_memory_used_percent | 共享内存占用百分比 | | cstore_memory_used_percent | 列存占用百分比 | | sctpcomm_memory_used_percent | sctp通信内存占用百分比 | | gpu_dynamic_memory_used_percent | GPU内存占用百分比 | | target_ip | IP | | max_process_memory | openGauss实例所占用的内存大小 | | process_used_memory | 进程所使用的内存大小 | | max_dynamic_memory | 最大动态内存 | | dynamic_used_memory | 已使用的动态内存 | | dynamic_used_shrctx | 最大动态共享内存上下文 | | max_backend_memory | 最大后端内存 | | backend_used_memory | 已使用的后端内存 | | max_shared_memory | 最大共享内存 | | shared_used_memory | 已使用的共享内存 | | max_cstore_memory | 列存所允许使用的最大内存 | | cstore_used_memory | 列存已使用的内存大小 | | max_sctpcomm_memory | sctp通信所允许使用的最大内存 | | sctpcomm_used_memory | sctp通信已使用的内存大小 | | other_used_memory | 其他已使用的内存大小 | | gpu_max_dynamic_memory | GPU最大动态内存 | | gpu_dynamic_used_memory | GPU已使用的动态内存 | | pooler_conn_memory | 连接池申请内存计数 | | pooler_freeconn_memory | 连接池空闲连接的内存计数 | | storage_compress_memory | 存储模块压缩使用的内存大小 | | udf_reserved_memory | UDF预留的内存大小 | ##### c. 快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | ---------------------------- | -------------- | ----------------------------------------------- | | S | 前往sharemem页面 | memory页面支持 | 页面显示为内存相关信息,已根据usedsizee倒叙排序 | | R | 前往top_mem_used_session页面 | memory页面支持 | 页面显示为session内存使用排行 | #### 2)sharemem ``` memory >> sharemem ``` 展示共享内存: ``` ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ data_length: 4084 │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │parent contextname level totalsize freesize usedsize usedsize/totalsize │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │GlobalSysDBCacheEntryMemCxt_2 system_model_pm_storageportpr 4 3392 0 3392 100.0 │ │454192 f │ │ProcessMemory PercentileContext 1 2400088 0 2400088 100.0 │ │UniqueSQLContext unique sql hash table 2 968634816 12864 968621952 100.0 │ │ProcessMemory Undo 1 131328 0 131328 100.0 │ │GlobalSysDBCacheEntryMemCxt_2 system_model_pm_lungroup 4 3392 0 3392 100.0 │ │454192 │ │GlobalSysDBCacheEntryMemCxt_2 system_model_pm_storagediskpr 4 3392 0 3392 100.0 │ │454192 f │ │GlobalSysDBCacheEntryMemCxt_2 system_model_pm_switchportprf 4 3392 0 3392 100.0 │ │454192 │ │GlobalSysDBCacheEntryMemCxt_2 system_model_pm_controllerprf 4 3392 0 3392 100.0 │ │454192 │ │GlobalSysDBCacheEntryMemCxt_2 system_model_pm_storageprf 4 3392 0 3392 100.0 │ │454192 │ │GlobalSysDBCacheEntryMemCxt_2 system_model_pm_storagevolume 4 3392 0 3392 100.0 │ │454192 prf │ │StorageTopMemoryContext IncreCheckPointContext 2 100537072 2864 100534208 100.0 │ │Operator resource track operator collector hash table 3 22823552 560 22822992 100.0 │ │memory context │ │GlobalSysDBCacheEntryMemCxt_2 system_model_pm_switchprf 4 3392 0 3392 100.0 │ │454192 │ │AshContext ASP unique sql hash table 2 161069152 12736 161056416 99.99 │ ``` **页面指标**: | 指标 | 描述 | | ------------------ | ------------------------------ | | parent | root level的内存上下文名称 | | contextname | 内存上下文名称 | | level | 内存上下文的级别 | | totalsize | 共享内存总大小(单位:字节) | | freesize | 共享内存剩余大小(单位:字节) | | usedsize | 共享内存使用大小(单位:字节) | | usedsize/totalsize | 共享内存已使用的百分比 | #### 3)top_mem_used_session ``` memory >> top_mem_used_session ``` 用于展示消耗内存最大的session ##### b. 页面 ``` │pid init_mem used_mem peak_mem query usename client_addr │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │140602345850624 4 22 22 SELECT SNAPTIME AS SNAPTIME, mlausr 197.0.35.121 │ │ │ │140598914971392 2 2 2 - ogtop 197.0.199.12 │ │140607740507904 2 2 2 - ogtop 197.0.199.12 │ │140596063303424 2 2 2 - ogtop 197.0.199.12 │ │140595234797312 2 2 2 - ogtop 197.0.199.12 │ ``` **页面指标**: | 指标 | 描述 | | ----------- | :--------------------------------------------------- | | pid | 线程ID | | init_mem | 当前正在执行作业进入执行器前已分配的内存(单位:MB) | | used_mem | 当前正在执行作业已分配的内存(单位:MB) | | peak_mem | 当前正在执行作业已分配的内存峰值(单位:MB) | | query | SQL | | usename | 用户名 | | client_addr | 客户端地址 | ##### c. 快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | ------------------- | ---------------------------- | ------------------------------------------------------- | | a | 前往session详情页面 | top_mem_used_session页面支持 | 复制需要查询的top_mem_used_session的pid,输入到提示框内 | ### 9、Dynamicsql - 动态SQL 从ogtop工具任意界面,使用键盘`D`键进入本页面,支持查看SQL的耗时情况 #### a. 流程图 ![dynamicsql](./pic/dynamicsql.png) #### b. 页面 ``` │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │unique_sql_id query user_name data_io_time(s) avg_db_time(s) n_calls db_time(s) cpu_time(s) │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │3499382993 select * from mlausr 0.0131 0.0033 1265.0 4.233 3.605 │ │ JMX_KAFKA_PERFOR │ │3892820142 select ogtop 0.0 3.5171 1.0 3.5171 3.1441 │ │ user_name, │ │ uni │ ``` **页面指标**: | 指标 | 描述 | | ---------------------------- | -------------------------------------- | | unique_sql_id | 归一化的SQL ID | | query | 归一化的SQL | | user_name | 用户名 | | data_io_time | IO 上的时间花费(单位:秒) | | avg_db_time | 平均db时间花费(单位:秒) | | n_calls | 调用次数 | | db_time | db时间花费(单位:秒) | | cpu_time | CPU 时间(单位:秒) | | execution_time | 执行器内执行时间 | | parse_time | SQL解析时间 | | plan_time | SQL生成计划时间 | | total_elapse_time | SQL在内核没得总运行时间 | | n_returned_rows | SELECT返回的结果集行数 | | n_tuples_fetched | 随机扫描行 | | n_tuples_returned | 顺序扫描行 | | n_tuples_inserted | 插入行 | | n_tuples_updated | 更新行 | | n_tuples_deleted | 删除行 | | n_blocks_fetched | buffer的块访问次数 | | n_blocks_hit | buffer的块命中次数 | | n_soft_parse | 软解析次数 | | n_hard_parse | 硬解析次数 | | rewrite_time(s) | SQL重写时间 | | pl_execution_time(s) | plpgsql上的执行时间 | | pl_compilation_time(s) | plpgsql上的编译时间 | | net_send_info_time | 通过物理连接发送消息的时间 | | net_send_info_n_calls | 通过物理连接发送消息的调用次数 | | net_send_info_size | 通过物理连接发送消息的吞吐量 | | net_recv_info_time | 通过物理连接接收消息的时间 | | net_recv_info_n_calls | 通过物理连接接收消息的调用次数 | | net_recv_info_size | 通过物理连接接收消息的吞吐量 | | net_stream_send_info_time | 通过逻辑连接发送消息的时间 | | net_stream_send_info_n_calls | 通过逻辑连接发送消息的调用次数 | | net_stream_send_info_size | 通过逻辑连接发送消息的吞吐量 | | net_stream_recv_info_time | 通过逻辑连接接收消息的时间 | | net_stream_recv_info_n_calls | 通过逻辑连接接收消息的调用次数 | | net_stream_recv_info_size | 通过逻辑连接接收消息的吞吐量 | | sort_count | 排序执行的次数 | | sort_time(s) | 排序执行的时间 | | sort_mem_used | 排序过程中使用的work memory大小 | | sort_spill_count | 排序过程中,若发生落盘,写文件的次数 | | sort_spill_size | 排序过程中,若发生落盘,使用的文件大小 | | hash_count | hash执行的次数 | | hash_time(s) | hash执行的时间 | | hash_mem_used | hash过程中使用的work memory大小 | | hash_spill_count | hash过程中,若发生落盘,写文件的次数 | | hash_spill_size | hash过程中,若发生落盘,使用的文件大小 | #### c. 快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | ---------------- | ------------------ | ------------------------ | | a | 查看query详情 | dynamicsql页面支持 | 用于查看query中的sql详情 | | i | dbmind的索引推荐 | dynamicsql页面支持 | 用于查看query的索引推荐 | ``` dynamicsql >> query_detail ``` 输入键盘`a`,可查看某条具体的SQL : ``` ┌───────────────────────────────────────────────────────────────────────────────────────┐ │ please input unique_sql_id(end with enter): │ └───────────────────────────────────────────────────────────────────────────────────────┘ ┌───────────────────────────────────────────────────────────────────────────────────────┐ │select count(*) from index_test ; │ ``` 输入键盘`i`,可查看所有SQL的索引推荐: ``` ┌───────────────────────────────────────────────────────────────────────────────────────┐ │ please input unique_sql_id(end with enter): │ └───────────────────────────────────────────────────────────────────────────────────────┘ ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ │advised_indexes │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │advised_indexe0: │ │ indexdef:CREATE INDEX idx_test1_1_c5 ON public.test1_1(c5); │ │ workload_benefit:1198740.21 │ │ workload_improved_rate:0.9728904450429643 │ │ useless_indexes: │ │ existing_indexes: │ │ improved_queriies: │ │ query:select c1,c2 from test1_1 where c5=?; │ │ query_benefit:1198740.21 │ │ query_improved_rate:35.88736320403798 │ │ query_count:1 │ │ origin_plan: │ │ Seq Scan on test1_1 (cost=0.00..1232143.06 rows=10997 width=8) │ │ Filter: (c5 = $1) │ │ current_plan: │ │ Index Scan using <2115985011>btree_test1_1_c5 on test1_1 (cost=0.00..33402.85 rows=10997 width=8) │ │ Index Cond: (c5 = $1) │ │ other_related_indexes: │ ``` ### 10、Lock - 锁 lock模块可查看数据库中锁的所有信息,也可通过lock_chain页面查看session锁阻塞的具体情况 #### 1)Lock 主页面 登陆ogtop任意界面,按`U`键进入lock锁模块,可查看数据库中的锁信息 ##### a. 流程图 ![lock](./pic/lock.png) ##### b. 页面 ``` ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ data_length: 76 │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │pid locktype database relname page tuple transactionid virtualxid │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │140604110010112 relation ogtop lock_test_pkey 0 0 0 0 │ │140604110010112 relation ogtop lock_test 0 0 0 0 │ │140603423258368 relation ogtop lock_test_pkey 0 0 0 0 │ │140603423258368 relation ogtop lock_test 0 0 0 0 │ │140613929182976 relation ogtop pg_database_oid_index 0 0 0 0 │ │140613929182976 relation ogtop pg_database_datname_index 0 0 0 0 │ │140613929182976 relation ogtop pg_class_tblspc_relfileno 0 0 0 0 │ │ de_index │ │140613929182976 relation ogtop pg_class_relname_nsp_inde 0 0 0 0 │ │ x │ │140613929182976 relation ogtop pg_class_oid_index 0 0 0 0 │ │140613929182976 relation ogtop pg_database 0 0 0 0 │ │140613929182976 relation ogtop stat_database 0 0 0 0 │ │140613929182976 relation ogtop pg_class 0 0 0 0 │ │140613929182976 relation ogtop locks 0 0 0 0 │ │140599254472448 relation ogtop lock_test_pkey 0 0 0 0 │ │140599254472448 relation ogtop lock_test 0 0 0 0 │ │140599254472448 tuple ogtop lock_test 0.0 1.0 0 0 │ │140603423258368 tuple ogtop lock_test 0.0 1.0 0 0 │ ``` **页面指标**: | 指标 | 描述 | | ------------------ | ------------------------------------------------------------ | | data_length | 查询的数据总条数 | | pid | 线程id | | locktype | 被锁定对象的类型 | | database | 被锁定对象所在的数据库 | | relname | 表名 | | page | 表内部的页面编号 | | tuple | 页面里的行编号 | | transactionid | 事务ID | | virtualxid | 虚拟事务ID | | objid | 对象在其系统表的OID | | virtualtransaction | 持有此锁或者在等待此锁的虚拟事务ID | | mode | 该线程持有的或者期望的锁模式 | | granted | 持有锁:TRUE
等待锁:FALSE | | fastpath | 如果通过fast-path获得锁,则为TRUE;如果通过主要的锁表获得,则为FALSE。 | | locktag | 会话等待锁信息,可通过locktag_decode()函数解析。 | ##### c. 快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | ------------------- | ------------ | ------------------------------------------------------------ | | L | 前往lock_chain页面 | lock页面支持 | 显示数据库中的锁阻塞,页面显示分别为持有者的pid和申请者的pid | | a | 前往session详情页面 | lock页面支持 | 复制需要查询的lock的pid,输入到提示框内 | | f | Kill session | lock页面支持 | 使用功能时需仔细确认选中pid是否为需要kill的session的pid | #### 2)lock_chain ``` lock >> lock_chain ``` 展示选定的blockerhholder(锁持有者session id) >>> ock_blocked_agent_id(锁申请者session id) ##### a. 页面 ``` ┌───────────────────────────────────────────────────────────────────────┐ │ │ │ blocker_holder >>> lock_blocked_agent_id │ │_______________________________________________________________________│ │ 140604110010112 >>> 140603423258368 │ │ 140603423258368 >>> 140599254472448 │ ``` ##### b. 快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | ------------------- | ------------------ | ------------------------------------------------------- | | a | 前往session详情页面 | lock_chain页面支持 | 复制需要查询的lock的pid,输入到提示框内 | | f | Kill session | lock_chain页面支持 | 使用功能时需仔细确认选中pid是否为需要kill的session的pid | Kill 140604110010112 ,第一个锁阻塞消失,窗口二,update成功 ``` ┌──────────────────────────────────────────────────────────────────┐ │please enter pid to delete(end with enter): │ ┌──────────────────────────────────────────────────────────────────┐ │ │ │ blocker_holder >>> lock_blocked_agent_id │ │__________________________________________________________________│ │ 140603423258368 >>> 140599254472448 │ ``` ### 11、wait_event - 等待事件 进入ogtop任意界面,按`W`键进入等待事件模块,可观察数据库中的等待事件的概览情况 #### a. 流程图 ![wait_event](./pic/wait_event.png) #### b. 页面 ``` ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ data_length: 366 │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │nodename type event wait failed_wait total_wait_time(ms) avg_wait_time(ms) history_max_wait_tim history_min_wait_time last_updated │ │ e(ms) (ms) │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │dn_6001 STATUS wait wal sync 2877 0 1771.447 0.6157271463 6091.629 0.001 2024-01-19 14:55:09.│ │ 493818+08:00 │ │dn_6001 LWLOCK_EVENT WALFlushWait 1737 0 794.901 0.4576286701 520.338 0.001 2024-01-19 14:55:09.│ │ 493198+08:00 │ │dn_6001 IO_EVENT DataFileRead 73342 0 610.223 0.0083202394 526.752 0.001 2024-01-19 14:55:09.│ │ 492792+08:00 │ │dn_6001 IO_EVENT BufHashTableSearch 550698 0 587.506 0.0010668388 60.775 0.001 2024-01-19 14:55:09.│ │ 493085+08:00 │ │dn_6001 STATUS flush data 13489 0 436.415 0.0323533991 26485.892 0.001 2024-01-19 14:55:09.│ │ 495041+08:00 │ ``` **页面指标**: | 指标 | 描述 | | ------------------------- | ----------------------------------- | | nodename | 数据库进程名称 | | type | event类型:IO、LOCK、LWLOCK、STATUS | | event | event名称 | | wait | 等待次数 | | failed_wait | 失败的等待次数 | | total_wait_time(ms) | 总等待时间 | | avg_wait_time(ms) | 平均等待时间 | | history_max_wait_time(ms) | 最大等待时间 | | history_min_wait_time(ms) | 最小等待时间 | | last_updated | 最后一次更新该事件的时间 | #### c. 快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | ----------------------------------- | ------------------ | ------------------------------------------------------------ | | j | 筛选指定的等待事件,进入session界面 | wait_event页面支持 | 在悬浮窗内输入需要查询的关键字,跳转到session页面,并根据输入的关键字进行模糊查询。相当于session页面进行模糊查询 | ``` ┌────────────────────────────────────────────────────────────────┐ │please input event to sort in session page(end with enter): │ ``` 跳转到session界面,并根据输入的关键字进行模糊查询 例如输入`wait cmd`,显示 ``` │pid query current_state xact_start_time(ms) query_start_time(ms) waiting wait_status wait_event │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │140578946086656 insert into mlausr.OS_OS_ active 460.709 460.712 False wait cmd wait cmd │ │ PERFORMANCE(host,target_i │ │ p,snaptime │ │140607252068096 INSERT INTO OG_STATEME active 484.25 484.252 False wait cmd wait cmd │ │ NT_ORIGINAL_DATA │ │ (target_ip, snapti │ │140593811085056 select * from active 495.436 495.439 False wait cmd wait cmd │ │ JMX_KAFKA_PERFORMANCE │ │ where host= '197.0.192.4 │ ``` ### 12、Replication - 流复制 该模块监控数据库流复制以及复制操的各项状态指标。进入ogtop任意界面后按`r`进入查看该模块的功能。 #### a. 流程图 ![replication](./pic/replication.png) #### b. 页面 ``` ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ │channel local_role peer_role peer_state sync_percent sync_state receive_gap(kb) replay_gap(kb) sender_sent_location(k│ │ b/s) │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │197.0.3.106:26001-->197 Primary Standby Normal 100% Sync 0.0 0.3046875 801.57421875 │ │.0.3.107:34126 │ │ │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │channel local_role sender_write_location( sender_flush_location(k sender_replay_location receiver_received_locat receiver_write_locatio receiver_flush_location receiver_replay_locati│ │ kb/s) b/s) (kb/s) ion(kb/s) n(kb/s) (kb/s) on(kb/s) │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │197.0.3.106:26001-->197 Primary 801.57421875 801.57421875 801.57421875 801.57421875 801.57421875 801.57421875 803.9765625 │ │.0.3.107:34126 │ │ │ │ │ │ slots │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │slot_name plugin slot_type datname active catalog_xmin restart_lsn diff_lsn dummy_standby confirmed_flush │ │ │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │og_197_20_186_250 - physical - False 0 35469223701704.0 146873771800.0 False - │ │dn_6001 - physical - True 0 35616097472944.0 560.0 False 12B3/B55A5758 │ │ │ ``` **页面指标**: | 指标 | 描述 | | -------------------------------- | -------------------------------------------------------- | | channel | walsender信道信息 | | local_role | 本地角色 | | peer_role | 对端角色 | | peer_state | 对端状态 | | sync_percent | 同步百分比 | | sync_state | 同步状态 | | receive_gap(kb) | 日志接收延迟 | | replay_gap(kb) | 备库replay xlog的延迟 | | sender_sent_location(kb/s) | 发送端日志发送位置 | | sender_write_location(kb/s) | 发送端日志写入位置 | | sender_flush_location(kb/s) | 发送端日志刷新位置 | | sender_replay_location(kb/s) | 发送端日志重放位置 | | receiver_received_location(kb/s) | 接收端日志接受位置 | | receiver_write_location(kb/s) | 接收端日志写入位置 | | receiver_flush_location(kb/s) | 接收端日志刷新位置 | | receiver_replay_location(kb/s) | 接收端日志重放位置 | | slots复制槽 | | | slot_name | 复制槽名称 | | plugin | 逻辑复制槽对应的输出插件名 | | slot_type | 复制槽的类型 | | datname | 复制槽所在的数据库名称 | | active | 复制槽的状态 | | catalog_xmin | 数据库须为逻辑复制槽保留的最早的涉及系统表的事务的事务号 | | restart_lsn | 复制槽需要的最早xlog的物理位置 | | diff_lsn | 对于当前xlog,延迟的lsn | | dummy_standby | 复制槽的连接对端是否为从备 | | confirmed_flush | 客户端确认接收到的日志位置 | #### c. 快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | -------------- | ------------------- | --------------------------------------------------- | | f | 删除指定复制槽 | replication页面支持 | 在悬浮窗内输入需要删除的slot_name,删除指定的复制槽 | ### 13、database_list 登陆ogtop任意界面,按`l`键进入database_list模块,查看当前集群的datalese 列表 ``` ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │datname numbackends xact_commit xact_rollback blks_read blks_hit tup_returned tup_fetched tup_inserted │ │_______________________________________________________________________________________________________________________________________________________________________________________________│ │lmj 0 2912419 5 696232 63445924 403237743 50117360 1 │ │mladb 431 9491557224 4291983 241195160825 574586288681 6643936909381 37812746767 17216869171 │ │ogtop 0 2912508 5 667602 68971344 452398681 60490988 1 │ │postgres 9 9953375 242621 138703849 4301461309 7184838752 5010232296 7612478 │ │template0 0 17112 2 218470 1525420 19978952 4300 0 │ │template1 0 237518 2 293842 50829511 335378502 41840112 0 │ │test1 0 2912393 5 633405 63510423 403258429 50120000 0 │ │test_mladb 1 2912794 6 831922 56819805 665215479 54480394 1 │ ``` **页面指标**: | 指标 | 描述 | | -------------------------------- | -------------------------------------------------------- | | datname | 这个数据库的名称 | | numbackends | 前连接到该数据库的后端数。这是在返回一个反映目前状态值的视图中唯一的列;自上次重置所有其他列返回累积值。 | | xact_commit | 此数据库中已经提交的事务数 | | xact_rollback | 此数据库中已经回滚的事务数 | | blks_read | 在这个数据库中读取的磁盘块的数量 | | blks_hit | 高速缓存中已经发现的磁盘块的次数, 这样读取是不必要的(这只包括openGauss缓冲区高速缓存,没有操作系统的文件系统缓存)。 | | tup_returned | 过数据库查询返回的行数 | | tup_fetched | 通过数据库查询抓取的行数 | | tup_inserted | 通过数据库查询插入的行数 | | tup_updated | 通过数据库查询更新的行数 | | tup_deleted | 通过数据库查询删除的行数 | | conflicts | 由于数据库恢复冲突取消的查询数量(只在备用服务器发生的冲突) | | temp_files | 通过数据库查询创建的临时文件数量。计算所有临时文件, 不论为什么创建临时文件(比如排序或者哈希), 而且不管log_temp_files设置 | | temp_bytes | 通过数据库查询写入临时文件的数据总量。计算所有临时文件,不论为什么创建临时文件,而且不管log_temp_files设置。 | | deadlocks | 在该数据库中检索的死锁数 | | blk_read_time | 通过数据库后端读取数据文件块花费的时间,以毫秒计算。 | | blk_write_time | 通过数据库后端写入数据文件块花费的时间,以毫秒计算。 | | stats_reset | 重置当前状态统计的时间。 | ### 14、sql_patch 登陆ogtop任意界面,按`P`键进入sql_patch模块。该页面监控SQL PATCH的状态,提供创建Abort Patch的功能,同样支持删除某个指定的PATCH #### a. 流程图 ![sql_patch](./pic/sql_patch.png) #### b. 页面 ``` │patch_name unique_sql_id username enable status abort hint_string hint_node │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │hint_patch_0129 3480341777 omm False d False tablescan(sql_patch_test) {HINTSTATE :nall_hints 1 │ │ :join_hint <> │ │ :leading_hint <> │ │ :row_hint <> :stream_hint│ │ <> :block_name_hint <> │ │ :scan_hint ({SCANHINT │ │ :relnames │ │ ("sql_patch_test") │ │ :hint_keyword 8 :state 0 │ │ :negative false :relid │ │ (b) :indexlist <>}) │ │ :skew_hint <> │ │ :predpush_hint <> │ │ :rewrite_hint <> │ │ :gather_hint <> │ │ :no_expand_hint <> │ │ :set_hint <> │ │ :cache_plan_hint <> │ │ :no_gpc_hint <> │ │ :predpush_same_level_hint│ │ <> :from_sql_patch true │ │ :material_subplan_hint │ │ <>} │ ``` **页面指标**: | 指标 | 描述 | | ------------------- | ----------------------- | | patch_name | patch 名称 | | unique_sql_id | 查询全局唯一ID | | username | PATCH 创建的用户名 | | enable | PATCH是否生效 | | status | PATCH的状态 | | abort | 是否是ABORT PATCH | | hint_string | HINT文本 | | hint_node | HINT解析&序列化的结果 | | original_query | 原始语句PATCH之后的语句 | | original_query_tree | 原始语句的解析结果 | | patched_query | PATCH之后的语句 | | patched_query_tree | PATCH之后语句的解析结果 | | description | PATCH的备注 | #### c. 快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | ---------- | ----------------- | ------------------------------------------------- | | a | 创建 patch | sql_patch页面支持 | 在悬浮窗内输入需要创建的patch name,unique_sql_id | | f | 删除patch | sql_patch页面支持 | 在悬浮窗内输入需要删除的patch的名称 | 创建patch: ``` ┌─────────────────────────────────────────────────────────┐ │please input patchname uniquesqlid(end with enter): │ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │patch_name unique_sql_id username enable status abort hint_string hint_node │ │abort_patch_0130 1146060977 ogtop True d True - - │ ``` 删除patch: ``` ┌──────────────────────────────────────────────────┐ │please input patchname (end with enter): │ ``` ### 15、slow_sql - 慢SQL 登陆ogtop任意界面,按`B`键进入slow_sql模块。该页面的数据来自dbe_perf.statement_history,提供根据start_time筛选指定时间段开始的慢SQL。 #### a. 流程图 ![slow_sql](./pic/slow_sql.png) #### b. 页面 ``` ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │please enter what to find(year-month-day hour:minute:second~year-month-day hour:minute:second):2024-01-29 10:00:00~2024-01-29 11:00:00 │ │session_id query unique_query_id debug_query_id duration_ms db_name user_name application_name │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │139751773038336 merge into MLAUSR.JMX_KAF 370564396 4785075326422909 1458.794 mladb mlausr mlausr │ │ KA_CONSUME_PERFORMANCE_SU │ │ MMARY as P │ │139751903786752 merge into MLAUSR.JMX_KAF 370564396 4785075326422913 1456.615 mladb mlausr mlausr │ │ KA_CONSUME_PERFORMANCE_SU │ │ MMARY as P │ ``` **页面指标**: | 指标 | 描述 | | ---------------------------- | ------------------------------------------------------------ | | session_id | 会话ID | | query | 归一化的SQL | | unique_query_id | 归一化SQL ID | | debug_query_id | 唯一SQL ID | | db_name | 数据库名称 | | user_name | 用户名 | | application_name | 用户发起的请求的应用程序名称 | | client_addr | 用户发起的请求的客户端地址 | | duration_ms | 语句的执行时间 | | n_soft_parse | 软解析次数 | | n_hard_parse | 硬解析次数 | | query_plan | 语句执行计划 | | n_returned_rows | SELECT返回的结果集行数 | | n_tuples_fetched | 随机扫描行 | | n_tuples_returned | 顺序扫描行 | | n_tuples_inserted | 插入行 | | n_tuples_updated | 更新行 | | n_tuples_deleted | 删除行 | | n_blocks_fetched | buffer的块访问次数 | | n_blocks_hit | buffer的块命中次数 | | db_time(s) | 有效时间花费,多线程将累加 | | cpu_time(s) | CPU时间 | | execution_time(s) | 执行器内执行时间 | | data_io_time(s) | IO上的时间花费 | | parse_time(s) | SQL解析时间 | | plan_time(s) | SQL生成计划时间 | | rewrite_time | SQL重写时间 | | pl_execution_time | plpgsql上的执行时间 | | pl_compilation_time | plpgsql上的编译时间 | | net_send_info_time | 通过物理连接发送消息的时间 | | net_send_info_n_calls | 通过物理连接发送消息的调用次数 | | net_send_info_size | 通过物理连接发送消息的吞吐量 | | net_recv_info_time | 通过物理连接接收消息的时间 | | net_recv_info_n_calls | 通过物理连接接收消息的调用次数 | | net_recv_info_size | 通过物理连接接收消息的吞吐量 | | net_stream_send_info_time | 通过逻辑连接发送消息的时间 | | net_stream_send_info_n_calls | 通过逻辑连接发送消息的调用次数 | | net_stream_send_info_size | 通过逻辑连接发送消息的吞吐量 | | net_stream_recv_info_time | 通过逻辑连接接收消息的时间 | | net_stream_recv_info_n_calls | 通过逻辑连接接收消息的调用次数 | | net_stream_recv_info_size | 通过逻辑连接接收消息的吞吐量 | | lock_count | 加锁次数 | | lock_time | 加锁耗时 | | lock_wait_count | 加锁等待次数 | | lock_wait_time | 加锁等待耗时 | | lock_max_count | 最大持锁数量 | | lwlock_count | 轻量级加锁次数 | | lwlock_wait_count | 轻量级等锁次数 | | lwlock_time | 轻量级加锁时间 | | lwlock_wait_time | 轻量级等锁时间 | | detail | 语句锁事件的列表,该列表按时间顺序记录时间,记录的数量受参数track_stmt_details_size的影响。事件包括:
- 加锁开始
- 加锁结束
- 等锁开始
- 等锁结束
- 放锁开始
- 放锁结束
- 轻量级等锁开始
- 轻量级等锁结束 | #### c. 快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | ------------------- | ---------------- | ------------------------------------------------------------ | | a | 查看query的详细信息 | slow_sql页面支持 | 在悬浮窗内输入需要查看的唯一SQL ID,查看指定SQL的query、执行计划以及锁事件的列表 | SQL的详细信息: ``` ┌────────────────────────────────────────────────────┐ │please input debug_query_id(end with enter): │ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │query: query_plan: detail: │ │______________________________________________________________________________________________________________________________│ │select snaptime,VALUE from - ?---------------Wait Events │ │OS_TOMCAT_PERFORMANCE where TARGET_IP=? Area--------------- │ │and CLASS_NAME=? and PARAMETER=? and '1'?IO_EVENT ?DataFileRead │ │INSTANCE=? and snaptime > ? 1845571 (us) │ │current_timestamp - interval ? '2'?IO_EVENT ?StrategyGetBuffer │ │ ? 5477 (us) │ │ '3'?IO_EVENT ?BufHashTableSearch │ │ ? 4583 (us) │ │ '4'?STATUS ?flush data │ │ ? 548 (us) │ ``` ### 16、redo - 回放日志 登陆ogtop任意界面,按`E`键进入redo模块。该页面显示本实例的备机的当前回放状态,数据来自local_redo_stat函数。 ``` ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │node_name redo_start_ptr redo_start_time redo_done_time curr_time min_recovery_point read_ptr last_replayed_read_ptr │ │_______________________________________________________________________________________________________________________________________________________________________________________________│ │dn_6001 54840139160016 767449325496424 767449331249747 3928040 0 54840139318560 54840139318944 │ ``` **页面指标**: | 指标 | 描述 | | ---------------------------- | ------------------------------------------------------------ | | node_name | 数据库进程名称 | | edo_start_ptr | 当前实例日志回放的起始点 | | redo_start_time | 当前实例日志回放的起始UTC时间 | | redo_done_time | 当前实例日志回放的结束UTC时间 | | curr_time | 当前实例的当前UTC时间 | | min_recovery_point | 当前实例日志的最小一致性点位置 | | read_ptr | 当前实例日志的读取位置 | | ast_replayed_read_ptr | 当前实例日志的回放位置 | | recovery_done_ptr | 当前实例启动完成时的回放位置 | | recovery_done_ptr | 当前实例读取回放日志的io次数计数 | | read_xlog_io_total_dur | 当前实例读取回放日志的io总延时 | | read_data_io_counter | 当前实例读取回放过程中读取数据页面的io次数计数 | | read_data_io_total_dur | 当前实例读取回放过程中读取数据页面的io总延时 | | write_data_io_counter | 当前实例读取回放过程中写数据页面的io次数计数 | | write_data_io_total_dur | 当前实例读取回放过程中写数据页面的io总延时 | | process_pending_counter | 当前实例读取回放过程中日志分发线程的同步次数计数 | | process_pending_total_dur | 当前实例读取回放过程中日志分发线程的同步总延时 | | apply_counter | 当前实例读取回放过程中回放线程的同步次数计数 | | apply_total_dur | 当前实例读取回放过程中回放线程的同步总延时 | | speed | 当前实例日志回放速度 | | local_max_ptr | 当前实例启动成功后本地收到的回放日志最大值 | | primary_flush_ptr | 主机落盘日志的位置 | | worker_info | 当前实例回放线程信息,若没有开并行回放则该值为空 | ### 17、redo_time_count - 回放线程的耗时统计(备机) 登陆ogtop任意界面,按`o`键进入redo_time_count模块。该页面显示本节点各个回放线程的各个流程的耗时统计(仅在备机上有有效数据),数据来自local_redo_time_count函数。 ``` ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │thread_name step1_total step1_count step2_total step2_count step3_total step3_count step4_total │ │_______________________________________________________________________________________________________________________________________________________________________________________________│ │pagewoker0 1912214 989 0 0 1166 8543 0 │ │pagewoker1 1703256 931 0 0 1750 14618 0 │ │pagewoker2 1624022 1112 0 0 3031 19475 0 │ │pagewoker3 2022303 792 0 0 591 4599 0 │ │startup 1932896 33432 2641 33432 2391 33432 52459 │ ``` **页面指标**: | 指标 | 描述 | | ---------------------------- | ------------------------------------------------------------ | | thread_name | 线程名字 | | step1_total | step1的总时间 | | step1_count | step1的统计次数 | | step2_total | step2的总时间 | | step2_count | step2的统计次数 | | step3_total | step3的总时间 | | step3_count | step3的统计次数 | | step4_total | step4的总时间 | | step4_count | step4的统计次数 | | step5_total | step5的总时间 | | step5_count | step5的统计次数 | | step6_total | step6的总时间 | | step6_count | step6的统计次数 | | step7_total | step7的总时间 | | step7_count | step7的统计次数 | | step8_total | step8的总时间 | | step8_count | step8的统计次数 | | step9_total | step9的总时间 | | step9_count | step9的统计次数 | ### 18、xlog_redo_statics - 已回放的各个类型的日志统计信息(备机) 登陆ogtop任意界面,按`x`键进入xlog_redo_statics模块。该页面显示本节点已经回放的各个类型的日志统计信息(仅在备机上有有效数据),数据来自 local_xlog_redo_statics函数。 ``` ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │xlog_type rmid info num extra │ │_______________________________________________________________________________________________________________________________________________________________________________________________│ │online_checkpoint 0 16 0 0 │ │nextoid 0 48 0 0 │ │commit 1 0 0 46051 │ │abort_with_xid 1 112 0 80 │ │smgr_create 2 16 0 0 │ │truncate 2 32 0 0 │ │clog_zeropage 3 0 0 0 │ │clog_truncate 3 16 0 0 │ │db_create 4 0 0 0 │ │standby_lock 8 0 0 0 │ │running_xact 8 16 0 0 │ │standby_csn 8 48 0 0 │ │standby_csn_committing 8 64 0 0 │ │heap2_freeze 9 0 0 0 │ │heap2_clean 9 16 0 0 │ │heap2_cleanup_info 9 48 0 0 │ │heap2_visible 9 64 0 0 │ │heap_insert 10 0 0 0 │ │heap_delete 10 16 0 0 │ │heap_update 10 32 0 0 │ │base_shift 10 48 0 0 │ │heap_hot_update 10 64 0 0 │ │heap_newpage 10 80 0 0 │ │heap_lock 10 96 0 0 │ │heap_inplace 10 112 0 0 │ │bt_insert_leaf 11 0 0 0 │ │bt_insert_upper 11 16 0 0 │ │bt_insert_meta 11 32 0 0 │ │bt_split_left 11 48 0 0 │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` **页面指标**: | 指标 | 描述 | | ---------------------------- | ------------------------------------------------------------ | | xlog_type | 日志类型 | | rmid | resource manager id | | info | xlog operation | | num | 日志个数 | | extra | 针对page回放日志和xact日志有有效值。page页回放日志标识从磁盘读取page的个数。xact日志表示删除文件的个数。 | ### 19、wdr - 数据库性能诊断 #### 1)wdr 主页面 登陆ogtop任意界面,按`w`键进入wdr模块。该页面的数据来自数据库内的WDR工具。 ##### a. 流程图 wdr ##### b. 页面 ``` ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │snapshot_id start_ts end_ts │ │_______________________________________________________________________________________________________________________________________________________________________________________________│ │1 2024-06-04 11:10:00.246068+08:00 2024-06-04 11:10:07.934061+08:00 │ │2 2024-06-04 11:12:57.728870+08:00 2024-06-04 11:13:03.002992+08:00 │ │3 2024-06-04 11:20:00.408433+08:00 2024-06-04 11:20:06.465137+08:00 │ │4 2024-06-04 11:30:01.051580+08:00 2024-06-04 11:30:08.180709+08:00 │ │5 2024-06-04 11:40:01.775152+08:00 2024-06-04 11:40:07.720832+08:00 │ │6 2024-06-04 11:50:02.307094+08:00 2024-06-04 11:50:08.199315+08:00 │ │7 2024-06-04 12:00:02.783029+08:00 2024-06-04 12:00:08.824063+08:00 │ │8 2024-06-04 12:10:03.411996+08:00 2024-06-04 12:10:08.792858+08:00 │ │9 2024-06-04 12:20:04.373238+08:00 2024-06-04 12:20:09.665000+08:00 │ │10 2024-06-04 12:30:05.260013+08:00 2024-06-04 12:30:10.577898+08:00 │ │11 2024-06-04 12:40:06.145716+08:00 2024-06-04 12:40:11.366058+08:00 │ │12 2024-06-04 12:50:06.970044+08:00 2024-06-04 12:50:11.948799+08:00 │ │13 2024-06-04 13:00:07.546466+08:00 2024-06-04 13:00:12.467045+08:00 │ │14 2024-06-04 13:10:08.044077+08:00 2024-06-04 13:10:13.049415+08:00 │ │15 2024-06-04 13:20:08.647796+08:00 2024-06-04 13:20:13.926610+08:00 │ │16 2024-06-04 13:30:09.523626+08:00 2024-06-04 13:30:14.642238+08:00 │ │17 2024-06-04 13:40:10.219563+08:00 2024-06-04 13:40:15.183178+08:00 │ │18 2024-06-04 13:50:10.788950+08:00 2024-06-04 13:50:15.829176+08:00 │ │19 2024-06-04 14:00:11.407346+08:00 2024-06-04 14:00:16.600881+08:00 │ │20 2024-06-04 14:10:12.196522+08:00 2024-06-04 14:10:17.510279+08:00 │ │21 2024-06-04 14:13:42.874850+08:00 2024-06-04 14:13:48.365963+08:00 │ │22 2024-06-04 14:14:50.161727+08:00 2024-06-04 14:14:55.614358+08:00 │ │23 2024-06-04 14:18:25.039358+08:00 2024-06-04 14:18:31.113554+08:00 │ │24 2024-06-04 14:20:12.220497+08:00 2024-06-04 14:20:17.319579+08:00 │ │25 2024-06-04 14:21:03.665702+08:00 2024-06-04 14:21:09.159260+08:00 │ │26 2024-06-04 14:21:43.504740+08:00 2024-06-04 14:21:48.767787+08:00 │ │27 2024-06-04 14:23:16.177336+08:00 2024-06-04 14:23:21.460828+08:00 │ │28 2024-06-04 14:23:34.301654+08:00 2024-06-04 14:23:39.376553+08:00 │ │29 2024-06-04 14:25:33.863093+08:00 2024-06-04 14:25:39.110424+08:00 │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` **页面指标**: | 指标 | 描述 | | ---------------------------- | ------------------------------------------------------------ | | snapshot_id | WDR快照序号 | | start_ts | WDR快照开始时间 | | end_ts | WDR快照结束时间 | ##### c. 快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | ---------- | ----------------- | ------------------------------------------------- | | a | 查看两个快照间多次执行数据 | wdr页面支持 | 在悬浮窗内输入两个节点snapshot_id并用-连接 | | v | 生成一张由两个快照节点数据分析后的html文件 | wdr页面支持 | 在悬浮窗内输入两个节点snapshot_id并用-连接 | 生成WDR Snapshot性能分析报告: ``` │wdr page temporarily inaccessible:/app/ogtop/all/ogtop_WDR_ASH.html ``` #### 2)snap_summary_more_statement 多次执行sql数据 登陆ogtop任意界面,按`w`键进入wdr模块后输入两个节点id后进入snap_summary_more_statement页面。该页面的数据来自数据库内的WDR工具中的表summary_statement。 ##### a. 页面 ``` ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │snapshot_id snap_user_name snap_unique_sql_id snap_node_name snap_node_id snap_user_id snap_query n_calls │ │_______________________________________________________________________________________________________________________________________________________________________________________________│ │251 mlausr 2056732578 dn_6001 0 16406 select 138187 │ │ target_ip,snaptime,user │ ``` **页面指标**: | 指标 | 描述 | | ---------------------------- | ------------------------------------------------------------ | | snapshot_id | WDR快照序号 | | snap_user_name | 用户名称 | | snap_unique_sql_id | 归一化的SQL ID | | snap_node_name | 数据库进程名称 | | snap_node_id | 节点的ID | | snap_user_id | 用户OID | | snap_query | 归一化的SQL | | n_calls | 调用次数 | | total_elapse_time | SQL在内核内的总运行时间 | | n_returned_rows | SELECT返回的结果集行数 | | n_tuples_fetched | 随机扫描行 | | n_tuples_returned | 顺序扫描行 | | n_tuples_inserted | 插入行 | | n_tuples_updated | 更新行 | | n_tuples_deleted | 删除行 | | n_blocks_fetched | buffer的块访问次数 | | n_blocks_hit | uffer的块命中次数 | | n_soft_parse | 软解析次数 | | n_hard_parse | 硬解析次数 | | db_time | 有效的DB时间花费,多线程将累加 | | cpu_time | CPU时间 | | execution_time | 执行器内执行时间 | | parse_time | SQL解析时间 | | plan_time | SQL生成计划时间 | | rewrite_time | SQL重写时间 | | pl_execution_time | plpgsql上的执行时间 | | pl_compilation_time | plpgsql上的编译时间 | | snap_net_send_info_time | 通过物理连接发送消息的网络状态的时间 | | snap_net_send_info_n_calls | 通过物理连接发送消息的网络状态的次数 | | snap_net_send_info_size | 通过物理连接发送消息的网络状态的吞吐量 | | snap_net_recv_info_time | 通过物理连接接收消息的网络状态的时间 | | snap_net_recv_info_n_calls | 通过物理连接接收消息的网络状态的次数 | | snap_net_recv_info_size | 通过物理连接接收消息的网络状态的吞吐量 | | snap_net_stream_send_info_time | 通过逻辑连接发送消息的网络状态的时间 | | snap_net_stream_send_info_n_calls | 通过逻辑连接发送消息的网络状态的次数 | | snap_net_stream_send_info_size | 通过逻辑连接发送消息的网络状态的吞吐量 | | snap_net_stream_recv_info_time | 通过逻辑连接接收消息的网络状态的时间 | | snap_net_stream_recv_info_info_n_call | 通过逻辑连接接收消息的网络状态的次数 | | snap_net_stream_recv_info_size | 通过逻辑连接接收消息的网络状态的吞吐量 | | snap_last_updated | 最后一次更新该语句的时间 | | sort_count | 排序执行的次数 | | sort_time | 排序执行的时间 | | sort_mem_used | 排序过程中使用的work memory大小 | | sort_spill_count | 序过程中,若发生落盘,写文件的次数 | | sort_spill_size | 排序过程中,若发生落盘,使用的文件大小 | | hash_count | hash执行的次数 | | hash_time | hash执行的时间 | | hash_mem_used | hash过程中使用的work memory大小 | | hash_spill_count | hash过程中,若发生落盘,写文件的次数 | | hash_spill_size | hash过程中,若发生落盘,使用的文件大小 | ##### b. 快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | ---------- | ----------------- | ------------------------------------------------- | | a | 精确分析 | wdr页面支持 | 在悬浮窗内输入snap_unique_sql_id | | v | 查看该快照下该条数据信息 | wdr页面支持 | 在悬浮窗内输入snapshot_id-snap_unique_sql_id | | M | 毛刺分析 | wdr页面支持 | 在悬浮窗内输入两个节点snapshot_id并用-连接 | #### 3)burr_analysis 毛刺分析 登陆ogtop任意界面,按`w`键进入wdr模块后输入两个节点id后进入snap_summary_more_statement再使用快捷键`M`进入burr_analysis页面。该页面的数据来自数据库内的WDR工具中的表summary_statement。 ##### a. 页面 ``` ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │snapshot_id snap_unique_sql_id snap_user_name avg_execution_time std_avg_execution_time readline max_avg_execution_time snap_query │ │_______________________________________________________________________________________________________________________________________________________________________________________________│ │ │ ``` **页面指标**: | 指标 | 描述 | | ---------------------------- | ------------------------------------------------------------ | | snapshot_id | WDR快照序号 | | snap_unique_sql_id | 归一化的SQL ID | | snap_user_name | 用户名称 | | avg_execution_time | 平均执行时间 | | std_avg_execution_time | 平均执行时间的绝对值 | | readline | 异常比例 | | max_avg_execution_time | 最大执行时间 | | snap_query | 归一化的SQL | ##### b. 快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | ---------- | ----------------- | ------------------------------------------------- | | a | 精确分析 | wdr页面支持 | 在悬浮窗内输入snap_unique_sql_id | | v | 查看该快照下该条数据信息 | wdr页面支持 | 在悬浮窗内输入snapshot_id-snap_unique_sql_id | | M | 毛刺分析 | wdr页面支持 | 在悬浮窗内输入两个节点snapshot_id并用-连接 | #### 4)rigorous_analysis 精确分析 登陆ogtop任意界面,按`w`键进入wdr模块后输入两个节点id后进入snap_summary_more_statement,再使用快捷键`M`进入burr_analysis,再使用快捷键`a`进入或则直接在snap_summary_more_statement页面也可进入rigorous_analysis页面。该页面的数据来自数据库内的WDR工具中的表summary_statement。 ##### a. 页面 ``` │please input snap_unique_sql_id(end with enter):2056732578 ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ snapshot_id: 252 │ │ snap_unique_sql_id: 2056732578 │ │_______________________________________________________________________________________________________________________________________________________________________________________________│ │n_calls: 1 │ │n_calls_rate: 0.14324864833145406 │ │total_elapse_time: 6032 │ │total_elapse_time_rate: 0.14276813807547098 │ │n_returned_rows: 0 │ │n_returned_rows_rate: 0.14433756729740646 │ │n_tuples_fetched: 0 │ │n_tuples_fetched_rate: 0.13790155837166448 │ │n_tuples_returned: 0 │ │n_tuples_returned_rate: 0.1378937430288971 │ │n_blocks_fetched: 26 │ │n_blocks_fetched_rate: 0.1419809000927166 │ │n_blocks_hit: 10 │ │n_blocks_hit_rate: 0.14203489735843725 │ │n_hard_parse: 1 │ │n_hard_parse_rate: 0.14324864833145406 │ │db_time: 6272 │ │db_time_rate: 0.1427922401542613 │ │cpu_time: 3656 │ │cpu_time_rate: 0.1429290069752328 │ │execution_time: 3083 │ │execution_time_rate: 0.14234642416647447 │ │parse_time: 94 │ │parse_time_rate: 0.1428247627648454 │ │plan_time: 907 │ │plan_time_rate: 0.14298691202480834 │ │rewrite_time: 2 │ │rewrite_time_rate: 0.1431971181273662 │ │snap_net_send_info_n_calls: 8 │ │snap_net_send_info_n_calls_rate: 0.1414863039683733 │ │snap_net_send_info_size: 3300 │ │snap_net_send_info_size_rate: 0.14296926243629124 │ │snap_net_recv_info_time: 1818110832 │ │snap_net_recv_info_time_rate: 0.13262829822022348 │ │snap_net_recv_info_n_calls: 1 │ │snap_net_recv_info_n_calls_rate: 0.14324864833145406 │ │snap_net_recv_info_size: 972 │ │snap_net_recv_info_size_rate: 0.1432482969119725 │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` **页面指标**: 由于是精确分析故出现的字段不固定部分字段可根据snap_summary_more_statement页面字段理解 ##### b. 快捷键 | 键位 | 功能 | 范围 | 说明 | | ---- | ---------- | ----------------- | ------------------------------------------------- | | v | 查看该快照下该条数据信息 | wdr页面支持 | 在悬浮窗内输入snapshot_id-snap_unique_sql_id | #### 5)snap_summary_statement 查看完整sql数据 登陆ogtop任意界面,按`w`键进入wdr模块后输入两个节点id后进入snap_summary_more_statement,可以在snap_summary_more_statement、burr_analysis、rigorous_analysis这三个页面使用快捷键`v`进入snap_summary_statement页面。 ##### a. 页面 ``` │please input snapshot_id-snap_unique_sql_id(end with enter): ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │snapshot_id:251 snap_node_name:dn_6001 snap_node_id:0 snap_user_name:mlausr snap_user_id:16406 snap_unique_sql_id:2056 snap_n_calls:139252 snap_min_elapse_time:72│ │ 732578 7 │ │ │ │snap_max_elapse_time:10 snap_total_elapse_time: snap_n_returned_rows:61 snap_n_tuples_fetched:4 snap_n_tuples_returned: snap_n_tuples_inserted: snap_n_tuples_updated:0 snap_n_tuples_deleted:0│ │9433 502.4347 560 54624 227941 0 │ │ │ │snap_n_blocks_hit:31868 snap_n_soft_parse:0 snap_n_hard_parse:13925 snap_db_time:543.3945 snap_cpu_time:448.2458 snap_execution_time:142 snap_parse_time:24.7128 snap_plan_time:211.6785│ │85 2 .8785 │ │ │ │snap_rewrite_time:0.797 snap_pl_execution_time: snap_pl_compilation_tim snap_data_io_time:71064 snap_net_send_info_time snap_net_send_info_n_ca snap_net_send_info_size snap_net_recv_info_time│ │9 0.0 e:0.0 001 :7.6669 lls:0.2768 :292.0715 :6082072.0348 │ │ │ │snap_net_recv_info_n_ca snap_net_recv_info_size snap_net_stream_send_in snap_net_stream_send_in snap_net_stream_send_in snap_net_stream_recv_in snap_net_stream_recv_in snap_net_stream_recv_in│ │lls:0.1393 :135.648 fo_time:0.0 fo_n_calls:0.0 fo_size:0.0 fo_time:0.0 fo_info_n_calls:0.0 fo_size:0.0 │ │ │ │snap_last_updated:2024- snap_sort_count:0 snap_sort_time:0.0 snap_sort_mem_used:0 snap_sort_spill_count:0 snap_sort_spill_size:0 snap_hash_count:0 snap_hash_time:0.0 │ │04-11 │ │03:11:29.816950+08:00 │ │ │ │snap_hash_mem_used:0 snap_hash_spill_count:0 snap_hash_spill_size:0 │ │_______________________________________________________________________________________________________________________________________________________________________________________________│ │snap_query: select target_ip,snaptime,user_name,unique_sql_id,query,n_calls,total_elapse_time,n_returned_rows,n_tuples_fetched,n_tuples_returned,n_tuples_inserted,n_tuples_updated,n_tuples_de│ │leted,n_blocks_fetched,n_blocks_hit,n_soft_parse,n_hard_parse,db_time,cpu_time,execution_time,parse_time,plan_time,rewrite_time,pl_execution_time,pl_compilation_time,data_io_time,net_send_inf│ │o_time,net_send_info_n_calls,net_send_info_size,net_recv_info_time,net_recv_info_n_calls,net_recv_info_size,net_stream_send_info_time,net_stream_send_info_n_calls,net_stream_send_info_size,ne│ │t_stream_recv_info_time,net_stream_recv_info_n_calls,net_stream_recv_info_size,sort_count,sort_time,sort_mem_used,sort_spill_count,sort_spill_size,hash_count,hash_time,hash_mem_used,hash_spil│ │l_count,hash_spill_size from OG_STATEMENT_ORIGINAL_DATA │ │ where target_ip= ? and user_name= ? and unique_sql_id= ? │ │ order by snaptime │ │ desc fetch first ? rows only │ │ │ │ │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` **页面指标**: | 指标 | 描述 | | ---------------------------- | ------------------------------------------------------------ | | snapshot_id | WDR快照序号 | | snap_node_name | 数据库进程名称 | | snap_node_id | 节点的ID | | snap_user_name | 用户名称 | | snap_user_id | 用户OID | | snap_unique_sql_id | 归一化的SQL ID | | snap_n_calls | 调用次数 | | snap_min_elapse_time | 调用次数 | | snap_max_elapse_time | 调用次数 | | snap_total_elapse_time | SQL在内核内的总运行时间 | | snap_n_returned_rows | SELECT返回的结果集行数 | | snap_n_tuples_fetched | 随机扫描行 | | snap_n_tuples_returned | 顺序扫描行 | | snap_n_tuples_inserted | 插入行 | | snap_n_tuples_updated | 更新行 | | snap_n_tuples_deleted | 删除行 | | snap_n_blocks_fetched | buffer的块访问次数 | | snap_n_blocks_hit | uffer的块命中次数 | | snap_n_soft_parse | 软解析次数 | | snap_n_hard_parse | 硬解析次数 | | snap_db_time | 有效的DB时间花费,多线程将累加 | | snap_cpu_time | CPU时间 | | snap_execution_time | 执行器内执行时间 | | snap_parse_time | SQL解析时间 | | snap_plan_time | SQL生成计划时间 | | snap_rewrite_time | SQL重写时间 | | snap_pl_execution_time | plpgsql上的执行时间 | | snap_pl_compilation_time | plpgsql上的编译时间 | | snap_data_io_time | io上的时间花费 | | snap_net_send_info_time | 通过物理连接发送消息的网络状态的时间 | | snap_net_send_info_n_calls | 通过物理连接发送消息的网络状态的次数 | | snap_net_send_info_size | 通过物理连接发送消息的网络状态的吞吐量 | | snap_net_recv_info_time | 通过物理连接接收消息的网络状态的时间 | | snap_net_recv_info_n_calls | 通过物理连接接收消息的网络状态的次数 | | snap_net_recv_info_size | 通过物理连接接收消息的网络状态的吞吐量 | | snap_net_stream_send_info_time | 通过逻辑连接发送消息的网络状态的时间 | | snap_net_stream_send_info_n_calls | 通过逻辑连接发送消息的网络状态的次数 | | snap_net_stream_send_info_size | 通过逻辑连接发送消息的网络状态的吞吐量 | | snap_net_stream_recv_info_time | 通过逻辑连接接收消息的网络状态的时间 | | snap_net_stream_recv_info_info_n_call | 通过逻辑连接接收消息的网络状态的次数 | | snap_net_stream_recv_info_size | 通过逻辑连接接收消息的网络状态的吞吐量 | | snap_last_updated | 最后一次更新该语句的时间 | | snap_sort_count | 排序执行的次数 | | snap_sort_time | 排序执行的时间 | | snap_sort_mem_used | 排序过程中使用的work memory大小 | | snap_sort_spill_count | 序过程中,若发生落盘,写文件的次数 | | snap_sort_spill_size | 排序过程中,若发生落盘,使用的文件大小 | | snap_hash_count | hash执行的次数 | | snap_hash_time | hash执行的时间 | | snap_hash_mem_used | hash过程中使用的work memory大小 | | snap_hash_spill_count | hash过程中,若发生落盘,写文件的次数 | | snap_hash_spill_size | hash过程中,若发生落盘,使用的文件大小 | | snap_query | 归一化的SQL | ### 20、快捷键弹窗 **全局功能快捷键** | 键位 | 功能 | 范围 | 说明 | | ----- | -------- | ----------------- | ------------------------------------------------------------ | | Esc | 重置按钮 | ogtop全页面支持 | 使用页面小功能时或使用后,回到原始界面时使用 | | F | 冻结屏幕 | ogtop全页面支持 | 在需要查看固定一组数据是使用 | | Left | 左翻页 | ogtop部分页面支持 | 页面需要展示数据太多,根据序号进行分页,使用左右键查看其余部分 | | Right | 右翻页 | ogtop部分页面支持 | 页面需要展示数据太多,根据序号进行分页,使用左右键查看其余部分 | | Up | 上翻 | ogtop部分页面支持 | 多行数据页面展示不完整,利用上下键翻看 | | Down | 下翻 | ogtop部分页面支持 | 多行数据页面展示不完整,利用上下键翻看 | | h | help | ogtop全页面支持 | 显示帮助 | | q | 退出 | ogtop全页面支持 | 退出ogtop工具 | | p | 快照 | ogtop全页面支持 | 保存页面此刻展示数据 | #### 1)/ - 筛选弹窗 具备关键字搜索功能,例如输入/进入搜索模式,输入关键字后可以过滤掉与关键字不匹配的项。 以session主页面为例,支持根据pid、current_state、db_name、user_name、application_name、client_addr、waiting、wait_status 字段进行查询 搜索active状态的session: ``` ┌─────────────────────────────────────────────────────┐ │please enter what to find(end with enter): │ 显示结果: │pid query current_state xact_start_time(ms) query_start_time(ms) waiting wait_status wait_event │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │139748102174464 select * from active 100.608 100.609 False wait cmd wait cmd │ │ JMX_KAFKA_PERFORMANCE │ │ where host= '197.0.192.4 │ │139727581914880 select ACTIVITY.datid, active 123.682 123.09 False HashJoin - build hash HashJoin - build hash │ │ ACTIVITY.datname, │ │ ACTIV │ │139747385526016 INSERT INTO OG_STATEME active 103.412 103.413 False none none │ │ NT_ORIGINAL_DATA │ │ (target_ip, snapti │ │139734476445440 INSERT INTO active 106.734 106.735 False wait io DataFileRead │ │ OG_CONF_USER_TABLES_DATA │ │ (target_ip, datname, │ 支持再次进行匹配: │pid query current_state xact_start_time(ms) query_start_time(ms) waiting wait_status wait_event │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │139727581914880 select ACTIVITY.datid, active 499.567 498.973 False HashJoin - build hash HashJoin - build hash │ │ ACTIVITY.datname, │ │ ACTIV │ ``` #### 2)z - 排序弹窗 具备根据任意选定列的值进行排序的功能。例如:按入`z`进入选择模式,⬆⬇⬅➡键选中要排序的字段,点击 回车,按照选中列进行排序。 第n次: - 奇数:倒序 - 偶数:正序 以session主页面为例, ``` ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ < pid > < query > < current_state > │ │ < xact_start_time > < query_start_time > < waiting > │ │ < wait_status > < wait_event > < db_time > │ │ < cpu_time > < execute_time > < data_io_time > │ │ < db_name > < user_name > < application_name > │ │ < client_addr > │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` 第一次选中为倒序: ``` │pid query current_state xact_start_time(ms) query_start_time(ms) waiting wait_status wait_event │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │139752279897856 insert into idle 0 0.0 False wait cmd wait cmd │ │ DB2_DBSNAP_DELTA │ │ (ACTIVE_HASH_JOINS, │ │ ACTIVE_OLA │ │139752068085504 select * from idle 0 0.0 False wait cmd wait cmd │ │ JMX_KAFKA_PERFORMANCE │ │ where host= '197.20.39.1 │ │139751940683520 select redis_db,redis_db_ idle 0 0.0 False wait cmd wait cmd │ │ dealdata from │ │ database_type_manage │ │139751903786752 merge into MLAUSR.JMX_KAF idle 0 0.0 False wait cmd wait cmd │ │ KA_CONSUME_PERFORMANCE_SU │ │ MMARY as P │ │139751870428928 insert into MYSQL_EVENTSN idle 0 0.0 False wait cmd wait cmd │ │ AP_ORIGINAL_DATA │ │ (DBID,METRIC_NAME, │ ``` 第二次选中为正序: ``` │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │pid query current_state xact_start_time(ms) query_start_time(ms) waiting wait_status wait_event │ │___________________________________________________________________________________________________________________________________________________________________________________________________________________│ │139714255460096 MERGE INTO MLAUSR.celery_ idle 0 0.0 False wait cmd wait cmd │ │ task_monitor P1 │ │ USING (SELECT * │ │ │ │139714289022720 SELECT * FROM idle 0 0.0 False wait cmd wait cmd │ │ CELERY_MONITOR WHERE │ │ NAME='mlagausskafkadealda │ │139714305804032 select * from idle 0 0.0 False wait cmd wait cmd │ │ database_type_manage │ │ where kafka_topic is not │ ```