【openGauss实战11】性能报告WDR深度解读

news2024/10/7 1:26:48

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及GP 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 📣 1.WDR报告概述
    • 📣 2.WDR相关参数
    • 📣 3.如何生成WDR报告
      • ✨ 3.1 开启WDR
      • ✨ 3.2 查询快照信息
      • ✨ 3.3 生成WDR
    • 📣 4.WDR解读
      • 📣 4.1 WDR概况信息
      • 📣 4.2 WDR实例的效
      • 📣 4.3 Top 10事件
      • 📣 4.4 等待类型统计
      • 📣 4.5 CPU负载
      • 📣 4.6 IO负载
      • 📣 4.7 内存统计
      • 📣 4.8 time model
      • 📣 4.9 SQL Statistics
      • 📣 4.10 Wait Events
      • 📣 4.11 Cache IO Stats
      • 📣 4.12 Object stats

前言

本篇介绍了openGauss的WDR报告的解读,可用于后期的性能的分析

📣 1.WDR报告概述

在opengauss数据库中,WDR是(Workload Diagnosis Report)负载诊断报告,
是openGauss的工作负载诊断报告,常用于判断openGauss长期性能问题。
整个数据库在运行期间的现状或者说真实状态只有在被完整记录下来,
才是可查,可知,可比较,可推测或者说为未来性能优化调整提供支撑建议的基础。

📣 2.WDR相关参数

1.enable_wdr_snapshot:
是否开启数据库监控快照功能。
2.wdr_snapshot_retention_days:
系统中数据库监控快照数据的保留天数。当数据库运行过程期间所生成的快照量数超过保留天数内允许生成的快照数量的最大值时,系统将每隔wdr_snapshot_interval时间间隔,清理snapshot_id最小的快照数据。取值范围:整型,1~8
3.wdr_snapshot_interval:
后台线程Snapshot自动对数据库监控数据执行快照操作的时间间隔。
4.wdr_snapshot_query_timeout:
系统执行数据库监控快照操作时,设置快照操作相关的sql语句的执行超时时间。
如果语句超过设置的时间没有执行完并返回结果,则本次快照操作失败。取值范围:整型,100~INT_MAX(秒)

在这里插入图片描述

📣 3.如何生成WDR报告

✨ 3.1 开启WDR

生成WDR报告的前提条件是,打开参数enable_wdr_snapshot
gs_guc reload -Nall -I all -c “enable_wdr_snapshot=on”
说明:
WDR Snasphot在启动后,会在用户表空间"pg_default",数据库"postgres"下新建schema “snapshot”,用于持久化WDR快照数据。

✨ 3.2 查询快照信息

 openGauss=# select * from snapshot.snapshot;
 snapshot_id |           start_ts            |            end_ts
-------------+-------------------------------+-------------------------------
           1 | 2023-04-25 22:19:08.729911+08 | 2023-04-25 22:19:15.876007+08
           2 | 2023-04-25 23:19:09.165954+08 | 2023-04-25 23:19:12.986594+08
(2 rows)

openGauss-# \d snapshot.snapshot
             Table "snapshot.snapshot"
   Column    |           Type           | Modifiers
-------------+--------------------------+-----------
 snapshot_id | bigint                   | not null
 start_ts    | timestamp with time zone |
 end_ts      | timestamp with time zone |
Indexes:
    "snapshot_pkey" PRIMARY KEY, btree (snapshot_id) TABLESPACE pg_default


##手工创建快照可以通过以下命令
openGauss=# select create_wdr_snapshot();
openGauss=# select * from snapshot.snapshot;
 snapshot_id |           start_ts            |            end_ts
-------------+-------------------------------+-------------------------------
           1 | 2023-04-25 22:19:08.729911+08 | 2023-04-25 22:19:15.876007+08
           2 | 2023-04-25 23:19:09.165954+08 | 2023-04-25 23:19:12.986594+08
           3 | 2023-04-26 00:03:03.374795+08 | 2023-04-26 00:03:05.801867+08
           
postgres=# select * from dbms_om.snapshot where start_ts > '2021-02-21 03:00:00'::timestamptz 
and start_ts < '2021-02-21 04:00:00'::timestamptz order by snapshot_id;

✨ 3.3 生成WDR

1)查询 pgxc_node_name参数值,或者使用查询视图:pg_node_env
openGauss=# show pgxc_node_name;
 pgxc_node_name
----------------
 dn_6001
(1 row)

2\a \t \o 服务器文件路径生成格式化性能报告
上述命令涉及参数说明如下:
\a:切换非对齐模式。
\t:切换输出的字段名的信息和行计数脚注。
\o:把所有的查询结果发送至服务器文件里。
服务器文件路径:生成性能报告文件存放路径。用户需要拥有此路径的读写权限
openGauss=# \a \t \o /home/omm/wdr_sarah.html

3)向性能报告wdr_sarah.html中写入数据,从snapshot.snapshot视图中选取要生成WDR报告的时间点
gsql -d postgres -p 15400 -r -c"select generate_wdr_report(快照id1,快照id2,'all','node','pgxc_node_name参数值');"
select generate_wdr_report(快照id1,快照id2,'all','node','pgxc_node_name参数值');

openGauss=# select generate_wdr_report(1,3,'all','node','dn_6001');

4)postgres=# \o \a \t -- 关闭格式化输出
注意:生产数据库如果数据量大,快照建议1个小时的格式输出

在这里插入图片描述
在这里插入图片描述

📣 4.WDR解读

📣 4.1 WDR概况信息

在这里插入图片描述
这一部分是WDR报告的概况信息,从这一部分我们能得到如下信息:

信息分类信息描述
报告采集类型Summary + Detail,即汇总数据+明细数据
Snapshot信息使用snapshot_id为1和3的快照采集2023-04-25(22:19~ 23:59)的运行信息
硬件配置1*1C/1G
节点名dn_6001
openGauss版本openGauss 5.0.0

📣 4.2 WDR实例的效

在这里插入图片描述

这一部分是实例的效率百分比,目标值是100%,即越接近100%,数据库运行越健康。
1)Buffer Hit:
即数据库请求的数据在buffer中命中的比例,该指标越高代表openGauss在buffer中查询到目标数据的概率越高,数据读取性能越好。
2)Effective CPU:
即有效的CPU使用比例,该指标偏小则说明CPU的有效使用偏低,处于等待状态的比例可能较高。
3)WalWrite NoWait: 即WAL日志写入时不等待的比例,该指标接近100%,说明buffer容量充足,可以满足WAL写操作的需求,
若指标值偏小则可能需要调大buffer容量。
4)Soft Parse:即SQL软解析的比例,该指标接近100%,说明当前执行的SQL基本都可以在Buffer中找到,
若指标值偏小则说明存在大量硬解析,需要分析原因,对DML语句进行适度优化。
5)Non-Parse CPU:
即非解析占用的CPU比例,该指标接近100%,说明SQL解析并没有占用较多的CPU时间。

📣 4.3 Top 10事件

在这里插入图片描述

这一部分列出了数据库Top 10的等待事件、等待次数、总等待时间、平均等待时间、等待事件类型。
等待事件主要分为等待状态、等待轻量级锁、等待IO、等待事务锁这4类(STATUS、LWLOCK_EVENT、IO_EVENT、LOCK_EVENT)

1)等待状态列表
说明:当Type为LWLOCK_EVENT、LOCK_EVENT或者wait IO_EVENT时,表示有等待事件。
正在等待获取wait_event列对应类型的轻量级锁、事务锁,或者正在进行IO。

none:没在等任意事件。
acquire lock:等待加锁,要么加锁成功,要么加锁等待超时。
acquire lwlock:等待获取轻量级锁。
wait io:等待IO完成。
wait cmd:等待完成读取网络通信包。
wait pooler get conn:等待pooler完成获取连接。
wait pooler abort conn:等待pooler完成终止连接。
wait pooler clean conn:等待pooler完成清理连接。
pooler create conn: [\nodename], total N:等待pooler建立连接,当前正在与nodename指定节点建立连接,且仍有N个连接等待建立。
get conn:获取到其他节点的连接。
set cmd: [\nodename]:在连接上执行SET/RESET/TRANSACTION BLOCK LEVEL PARA SET/SESSION LEVEL PARA SET,当前正在nodename指定节点上执行。

cancel query:取消某连接上正在执行的SQL语句。
stop query:停止某连接上正在执行的查询。
wait node: [\nodename](plevel), total N, [phase]:
等待接收与某节点的连接上的数据,当前正在等待nodename节点plevel线程的数据,且仍有N个连接的数据待返回。如果状态包含phase信息,则可能的阶段状态有:
begin:表示处于事务开始阶段。
commit:表示处于事务提交阶段。
rollback:表示处于事务回滚阶段。

wait transaction sync: xid  等待xid指定事务同步。
wait wal sync:等待特定LSN的wal log完成到备机的同步。
wait data sync:等待完成数据页到备机的同步。
wait data sync queue:等待把行存的数据页或列存的CU放入同步队列。
flush data: [\nodename](plevel), [phase]
等待向网络中nodename指定节点的plevel对应线程发送数据。如果状态包含phase信息,则可能的阶段状态为wait quota,即当前通信流正在等待quota值。

stream get conn: [\nodename], total N
初始化stream flow时,等待与nodename节点的consumer对象建立连接,且当前有N个待建连对象。

wait producer ready: [\nodename](plevel), total N
初始化stream flow时,等待每个producer都准备好,当前正在等待nodename节点plevel对应线程的producer对象准备好,且仍有N个producer对象处于等待状态。

synchronize quit:stream plan结束时,等待stream线程组内的线程统一退出。
wait stream nodegroup destroy:stream plan结束时,等待销毁stream node group。
wait active statement:等待作业执行,正在资源负载管控中。

analyze: [relname], [phase]
当前正在对表relname执行analyze。如果状态包含phase信息,则为autovacuum,表示是数据库自动开启AutoVacuum线程执行的analyze分析操作。

vacuum: [relname], [phase]
当前正在对表relname执行vacuum。如果状态包含phase信息,则为autovacuum,表示是数据库自动开启AutoVacuum线程执行的vacuum清理操作。

vacuum full: [relname]
当前正在对表relname执行vacuum full清理。

create index:当前正在创建索引。

HashJoin - [ build hash | write file ]
当前是HashJoin算子,主要关注耗时的执行阶段。
build hash:表示当前HashJoin算子正在建立哈希表。
write file:表示当前HashJoin算子正在将数据写入磁盘。

HashAgg - [ build hash | write file ]
当前是HashAgg算子,主要关注耗时的执行阶段。
build hash:表示当前HashAgg算子正在建立哈希表。
write file:表示当前HashAgg算子正在将数据写入磁盘。

HashSetop - [build hash | write file ]
当前是HashSetop算子,主要关注耗时的执行阶段。
build hash:表示当前HashSetop算子正在建立哈希表。
write file:表示当前HashSetop算子正在将数据写入磁盘。

Sort | Sort - write file
当前是Sort算子做排序,write file表示Sort算子正在将数据写入磁盘。

Material | Material - write file
当前是Material算子,write file表示Material算子正在将数据写入磁盘。

NestLoop:当前是NestLoop算子。
wait memory:等待内存获取。
wait sync consumer next step:Stream算子等待消费者执行。
wait sync producer next step:Stream算子等待生产者执行
2)轻量级锁等待事件
说明:当Type值为LWLOCK_EVENT(轻量级锁)时对应的wait_event等待事件类型即为轻量级锁等待。
wait_event为extension时,表示此时的轻量级锁是动态分配的锁,未被监控

ShmemIndexLock:用于保护共享内存中的主索引哈希表。
OidGenLock:用于避免不同线程产生相同的OID。
XidGenLock:用于避免两个事务获得相同的xid。
ProcArrayLock:用于避免并发访问或修改ProcArray共享数组。
SInvalReadLock:用于避免与清理失效消息并发执行。
SInvalWriteLock:用于避免与其它写失效消息、清理失效消息并发执行。
WALInsertLock:用于避免与其它WAL插入操作并发执行。
WALWriteLock:用于避免并发WAL写盘。
ControlFileLock:用于避免pg_control文件的读写并发、写写并发。
CheckpointLock:用于避免多个checkpoint并发执行。
CLogControlLock:用于避免并发访问或者修改Clog控制数据结构。
SubtransControlLock:用于避免并发访问或者修改子事务控制数据结构。
MultiXactGenLock:用于串行分配唯一MultiXact id。
MultiXactOffsetControlLock:用于避免对pg_multixact/offset的写写并发和读写并发。
MultiXactMemberControlLock:用于避免对pg_multixact/members的写写并发和读写并发。
RelCacheInitLock:用于失效消息场景对init文件进行操作时加锁。
CheckpointerCommLock:用于向checkpointer发起文件刷盘请求场景,需要串行的向请求队列插入请求结构。
TwoPhaseStateLock:用于避免并发访问或者修改两阶段信息共享数组。
TablespaceCreateLock:用于确定tablespace是否已经存在。
BtreeVacuumLock:用于防止vacuum清理B-tree中还在使用的页面。
AutovacuumLock:用于串行化访问autovacuum worker数组。
AutovacuumScheduleLock:用于串行化分配需要vacuum的table。
AutoanalyzeLock:用于获取和释放允许执行Autoanalyze的任务资源。
SyncScanLock:用于确定heap扫描时某个relfilenode的起始位置。
NodeTableLock:用于保护存放数据库节点信息的共享结构。
PoolerLock:用于保证两个线程不会同时从连接池里取到相同的连接。
RelationMappingLock:用于等待更新系统表到存储位置之间映射的文件。
AsyncCtlLock:用于避免并发访问或者修改共享通知状态。
AsyncQueueLock:用于避免并发访问或者修改共享通知信息队列。
SerializableXactHashLock:用于避免对于可串行事务共享结构的写写并发和读写并发。
SerializableFinishedListLock:用于避免对于已完成可串行事务共享链表的写写并发和读写并发。
SerializablePredicateLockListLock:用于保护对于可串行事务持有的锁链表。
OldSerXidLock:用于保护记录冲突可串行事务的结构。
FileStatLock:用于保护存储统计文件信息的数据结构。
SyncRepLock:用于在主备复制时保护xlog同步信息。
DataSyncRepLock:用于在主备复制时保护数据页同步信息。
CStoreColspaceCacheLock:用于保护列存表的CU空间分配。
CStoreCUCacheSweepLock:用于列存CU Cache循环淘汰。
MetaCacheSweepLock:用于元数据循环淘汰。
ExtensionConnectorLibLock:用于初始化ODBC连接场景,在加载与卸载特定动态库时进行加锁。
SearchServerLibLock:用于GPU加速场景初始化加载特定动态库时,对读文件操作进行加锁。
LsnXlogChkFileLock:用于串行更新特定结构中记录的主备机的xlog flush位置点。
ReplicationSlotAllocationLock:用于主备复制时保护主机端的流复制槽的分配。
ReplicationSlotControlLock:用于主备复制时避免并发更新流复制槽状态。
ResourcePoolHashLock:用于避免并发访问或者修改资源池哈希表。
WorkloadStatHashLock:用于避免并发访问或者修改包含数据库主节点的SQL请求构成的哈希表。
WorkloadIoStatHashLock:用于避免并发访问或者修改用于统计当前数据库节点的IO信息的哈希表。
WorkloadCGroupHashLock:用于避免并发访问或者修改Cgroup信息构成的哈希表。
OBSGetPathLock:用于避免对obs路径的写写并发和读写并发。
WorkloadUserInfoLock:用于避免并发访问或修改负载管理的用户信息哈希表。
WorkloadRecordLock:用于避免并发访问或修改在内存自适应管理时对数据库主节点收到请求构成的哈希表。
WorkloadIOUtilLock:用于保护记录iostat,CPU等负载信息的结构。
WorkloadNodeGroupLock:用于避免并发访问或者修改内存中的nodegroup信息构成的哈希表。
JobShmemLock:用于定时任务功能中保护定时读取的全局变量。
OBSRuntimeLock:用于获取环境变量,如GASSHOME。
LLVMDumpIRLock:用于导出动态生成函数所对应的汇编语言。
LLVMParseIRLock:用于在查询开始处从IR文件中编译并解析已写好的IR函数。
CriticalCacheBuildLock:用于从共享或者本地缓存初始化文件中加载cache的场景。
WaitCountHashLock:用于保护用户语句计数功能场景中的共享结构。
BufMappingLock:用于保护对共享缓冲映射表的操作。
LockMgrLock:用于保护常规锁结构信息。
PredicateLockMgrLock:用于保护可串行事务锁结构信息。
OperatorRealTLock:用于避免并发访问或者修改记录算子级实时数据的全局结构。
OperatorHistLock:用于避免并发访问或者修改记录算子级历史数据的全局结构。
SessionRealTLock:用于避免并发访问或者修改记录query级实时数据的全局结构。
SessionHistLock:用于避免并发访问或者修改记录query级历史数据的全局结构。
CacheSlotMappingLock:用于保护CU Cache全局信息。
BarrierLock:用于保证当前只有一个线程在创建Barrier。
dummyServerInfoCacheLock:用于保护缓存加速openGauss连接信息的全局哈希表。
RPNumberLock:用于加速openGauss的数据库节点对正在执行计划的任务线程的计数。
ClusterRPLock:用于加速openGauss的CCN中维护的openGauss负载数据的并发存取控制。
CBMParseXlogLock:Cbm 解析xlog时的保护锁
RelfilenodeReuseLock:避免错误地取消已重用的列属性文件的链接。
RcvWriteLock:防止并发调用WalDataRcvWrite。
PercentileLock:用于保护全局PercentileBuffer
CSNBufMappingLock:保护csn页面
UniqueSQLMappingLock:用于保护uniquesql hash table
DelayDDLLock:防止并发ddl。
CLOG Ctl:用于避免并发访问或者修改Clog控制数据结构
Async Ctl:保护Async buffer
MultiXactOffset Ctl:保护MultiXact offet的slru buffer
MultiXactMember Ctl:保护MultiXact member的slrubuffer
OldSerXid SLRU Ctl:保护old xids的slru buffer
ReplicationSlotLock:用于保护ReplicationSlot
PGPROCLock:用于保护pgproc
MetaCacheLock:用于保护MetaCache
DataCacheLock:用于保护datacache
InstrUserLock:用于保护InstrUserHTAB。
BadBlockStatHashLock:用于保护global_bad_block_stat hash表。
BufFreelistLock:用于保证共享缓冲区空闲列表操作的原子性。
CUSlotListLock:用于控制列存缓冲区槽位的并发操作。
AddinShmemInitLock:保护共享内存对象的初始化。
AlterPortLock:保护协调节点更改注册端口号的操作。
FdwPartitionCaheLock:HDFS分区表缓冲区的管理锁。
DfsConnectorCacheLock:DFSConnector缓冲区的管理锁。
DfsSpaceCacheLock:HDFS表空间管理缓冲区的管理锁。
FullBuildXlogCopyStartPtrLock:用于保护全量Build中Xlog拷贝的操作。
DfsUserLoginLock:用于HDFS用户登录以及认证。
LogicalReplicationSlotPersistentDataLock:用于保护逻辑复制过程中复制槽位的数据。
WorkloadSessionInfoLock:保护负载管理session info内存hash表访问。
InstrWorkloadLock:保护负载管理统计信息的内存hash表访问。
PgfdwLock:用于管理实例向Foreign server建立连接。
InstanceTimeLock:用于获取实例中会话的时间信息。
XlogRemoveSegLock:保护Xlog段文件的回收操作。
DnUsedSpaceHashLock:用于更新会话对应的空间使用信息。
CsnMinLock:用于计算CSNmin。
GPCCommitLock:用于保护全局Plan Cache hash表的添加操作。
GPCClearLock:用于保护全局Plan Cache hash表的清除操作。
GPCTimelineLock:用于保护全局Plan Cache hash表检查Timeline的操作。
TsTagsCacheLock:用于时序tag缓存管理。
InstanceRealTLock:用于保护共享实例统计信息hash表的更新操作。
CLogBufMappingLock:用于提交日志缓存管理。
GPCMappingLock:用于全局Plan Cache缓存管理。
GPCPrepareMappingLock:用于全局Plan Cache缓存管理。
BufferIOLock:保护共享缓冲区页面的IO操作。
BufferContentLock:保护共享缓冲区页面内容的读取、修改。
CSNLOG Ctl:用于CSN日志管理。
DoubleWriteLock:用于双写的管理操作。
RowPageReplicationLock:用于管理行存储的数据页复制。
extension:其他轻量锁
3)IO等待事件列表
当Type值为IO_EVENT时对应的wait_event等待事件类型即为IO等待事件。

BufFileRead:从临时文件中读取数据到指定buffer。
BufFileWrite:向临时文件中写入指定buffer中的内容。
ControlFileRead:读取pg_control文件。主要在数据库启动、执行checkpoint和主备校验过程中发生。
ControlFileSync:将pg_control文件持久化到磁盘。数据库初始化时发生。
ControlFileSyncUpdate:将pg_control文件持久化到磁盘。主要在数据库启动、执行checkpoint和主备校验过程中发生。
ControlFileWrite:写入pg_control文件。数据库初始化时发生。
ControlFileWriteUpdate:更新pg_control文件。主要在数据库启动、执行checkpoint和主备校验过程中发生。
CopyFileRead:copy文件时读取文件内容。
CopyFileWrite:copy文件时写入文件内容。
DataFileExtend:扩展文件时向文件写入内容。
DataFileFlush:将表数据文件持久化到磁盘
DataFileImmediateSync:将表数据文件立即持久化到磁盘。
DataFilePrefetch:异步读取表数据文件。
DataFileRead:同步读取表数据文件。
DataFileSync:将表数据文件的修改持久化到磁盘。
DataFileTruncate:表数据文件truncate。
DataFileWrite:向表数据文件写入内容。
LockFileAddToDataDirRead:读取”postmaster.pid”文件。
LockFileAddToDataDirSync:将”postmaster.pid”内容持久化到磁盘。
LockFileAddToDataDirWrite:将pid信息写到”postmaster.pid”文件。
LockFileCreateRead:读取LockFile文件”%s.lock”。
LockFileCreateSync:将LockFile文件”%s.lock”内容持久化到磁盘。
LockFileCreateWRITE:将pid信息写到LockFile文件”%s.lock”。
RelationMapRead:读取系统表到存储位置之间的映射文件
RelationMapSync:将系统表到存储位置之间的映射文件持久化到磁盘。
RelationMapWrite:写入系统表到存储位置之间的映射文件。
ReplicationSlotRead:读取流复制槽文件。重新启动时发生。
ReplicationSlotRestoreSync:将流复制槽文件持久化到磁盘。重新启动时发生。
ReplicationSlotSync:checkpoint时将流复制槽临时文件持久化到磁盘。
ReplicationSlotWrite:checkpoint时写流复制槽临时文件。

SLRUFlushSync:
将pg_clog、pg_subtrans和pg_multixact文件持久化到磁盘。主要在执行checkpoint和数据库停机时发生。

SLRURead:读取pg_clog、pg_subtrans和pg_multixact文件。

SLRUSync:
将脏页写入文件pg_clog、pg_subtrans和pg_multixact并持久化到磁盘。主要在执行checkpoint和数据库停机时发生。

SLRUWrite:写入pg_clog、pg_subtrans和pg_multixact文件。
TimelineHistoryRead:读取timeline history文件。在数据库启动时发生。
TimelineHistorySync:将timeline history文件持久化到磁盘。在数据库启动时发生。
TimelineHistoryWrite:写入timeline history文件。在数据库启动时发生。
TwophaseFileRead:读取pg_twophase文件。在两阶段事务提交、两阶段事务恢复时发生。
TwophaseFileSync:将pg_twophase文件持久化到磁盘。在两阶段事务提交、两阶段事务恢复时发生。
TwophaseFileWrite:写入pg_twophase文件。在两阶段事务提交、两阶段事务恢复时发生。
WALBootstrapSync:将初始化的WAL文件持久化到磁盘。在数据库初始化发生。
WALBootstrapWrite:写入初始化的WAL文件。在数据库初始化发生。
WALCopyRead:读取已存在的WAL文件并进行复制时产生的读操作。在执行归档恢复完后发生。
WALCopySync:将复制的WAL文件持久化到磁盘。在执行归档恢复完后发生。
WALCopyWrite:读取已存在WAL文件并进行复制时产生的写操作。在执行归档恢复完后发生。
WALInitSync:将新初始化的WAL文件持久化磁盘。在日志回收或写日志时发生。
WALInitWrite:将新创建的WAL文件初始化为0。在日志回收或写日志时发生。
WALRead:从xlog日志读取数据。两阶段文件redo相关的操作产生。
WALSyncMethodAssign:将当前打开的所有WAL文件持久化到磁盘。
WALWrite:写入WAL文件。
WALBufferAccess:WAL Buffer访问(出于性能考虑,内核代码里只统计访问次数,未统计其访问耗时)。
WALBufferFull:WAL Buffer满时,写wal文件相关的处理。
DoubleWriteFileRead:双写文件读取。
DoubleWriteFileSync:双写文件强制刷盘。
DoubleWriteFileWrite:双写文件写入。
PredoProcessPending:并行日志回放中当前记录回放等待其它记录回放完成。
PredoApply:并行日志回放中等待当前工作线程等待其他线程回放至本线程LSN。
DisableConnectFileRead:HA锁分片逻辑文件读取。
DisableConnectFileSync:HA锁分片逻辑文件强制刷盘。
DisableConnectFileWrite:HA锁分片逻辑文件写入
4)事务锁等待事件列表
当wait_status值为LOCK_EVENT(事务锁)时对应的wait_event等待事件类型为事务锁等待事件。
relation:对表加锁
extend:对表扩展空间时加锁
partition:对分区表加锁
partition_seq:对分区表的分区加锁
page:对表页面加锁
tuple:对页面上的tuple加锁
transactionid:对事务ID加锁
virtualxid:对虚拟事务ID加锁
object:加对象锁
cstore_freespace:对列存空闲空间加锁
userlock:加用户锁
advisory:加advisory锁

📣 4.4 等待类型统计

在这里插入图片描述

这一部分按照等待类型(STATUS、IO_EVENT、LWLOCK_EVENT、LOCK_EVENT),分类统计等待次数、总等待时间、平均等待时间。

📣 4.5 CPU负载

在这里插入图片描述

这一部分主机CPU的负载情况:CPU的平均负载、用户使用占比、系统使用占比、IO等待占比、空闲占比

📣 4.6 IO负载

在这里插入图片描述

这一部分描述了openGauss在快照期间的IO负载情况。
Database requests: 即每秒IO请求次数,包括请求次数总和、读请求次数、写请求次数.
Database(blocks): 即每秒block请求数量,包含请求的block总和数量、读block的数量和写block的数量.
Database(MB): 即将block换算成容量(MB)[如:blocks * 8/1024],增加数据的可读性。
Redo requests和Redo(MB) 分别表示每秒redo的写请求次数和redo写的数据量

📣 4.7 内存统计

在这里插入图片描述
在这里插入图片描述

这一部分描述了节点内存的变化信息,通过这些变化信息,我们可以了解到在两次快照期间,数据库的内存变化情况,作为数据库性能分析或异常分析的参考。
数据来源于snapshot.snap_global_memory_node_detail。
这部分分别描述了: 内存的类型 以及 对应的起始大小和终止大小。
注:请确保disable_memory_protect=on才可以,测试环境内存太小,导致启动时将memory protect关闭了

在这里插入图片描述

📣 4.8 time model

在这里插入图片描述

这一部分描述了数据库各种状态所消耗的时间,关于Stat Name的解释如下

在这里插入图片描述

📣 4.9 SQL Statistics

这一部分分别从SQL执行时间、SQL消耗CPU的时间、SQL返回的行数、SQL扫描的行数、SQL执行的次数、SQL物理读的次数、SQL逻辑读的次数等多维度对两次快照期间的SQL执行情况进行统计。

在这里插入图片描述
在这里插入图片描述

📣 4.10 Wait Events

这一部分分别从等待时长、等待次数这两个维度对等待事件进行统计。

在这里插入图片描述
在这里插入图片描述

📣 4.11 Cache IO Stats

这一部分根据Heap block的命中率排序统计用户表的IO活动状态。

在这里插入图片描述

数据来源于snapshot.snap_global_statio_all_indexes表和snapshot.snap_global_statio_all_tables表。
该表相关列的介绍如下:

在这里插入图片描述

📣 4.12 Object stats

这一部分描述用户表状态的统计信息,数据源于snapshot.snap_global_stat_all_tables表。

在这里插入图片描述

这一部分描述用户索引状态的统计信息,数据源于snapshot.snap_global_stat_all_indexes表。

在这里插入图片描述

这一部分描述坏块的统计信息,数据源于snapshot.snap_global_stat_bad_block表。

在这里插入图片描述

这一部分描述的是数据库参数配置信息,数据源于snapshot.snap_global_config_settings表。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/483143.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c++题库练习

19. 以下叙述中正确的是&#xff08;&#xff09; A 使用typedef说明新类型名时&#xff0c;其格式是&#xff1a; typedef 新类型名 原类型名; B 在程序中&#xff0c;允许用typedef来说明一种新的类型名 C 使用typedef 说明新类型名时&#xff0c;后面不能加分号 D 在使用typ…

three.js学习 06 - 结合GSAP(补间动画)设置各种动画效果(运动效果与双击暂停动画等效果)

1. GSAP简介 GSAP&#x1f44d;&#x1f3fc;是前端业内非常有名的一个动效库&#xff0c;有大量的优秀的网站都在使用它。它不仅能在原生JS的环境下使用&#xff0c;也能配合各种当前流行的框架进行使用。 通过使用它&#xff0c;非常多原本实现起来很有难度的交互动画效果&a…

计算机必读基础书籍

计算机必读数据 一&#xff1a;故事背景1.1 前言1.2 提示 二&#xff1a;计算机组成2.1 是什么2.2 有什么2.2.1 计算机系统概述2.2.2 数据信息的表示2.2.3 运算方法与运算器2.2.4 存储系统2.2.5 指令系统2.2.6 中央处理器2.2.7 指令流水线2.2.8 总线系统2.2.9 输入输出 2.3 思维…

[MAY DAY]五一综合训练 之——最值问题

文章目录 > **## * 要赋值 &#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; *** %#&#xffe5;#%#*&&#xff01;&#xff01;&#xff01;&#xff01;要赋值一、双指针求最大连续和双指针算法分析&#xff1a; 注意&#xff…

Java学习笔记-03

目录 类与对象 类class 对象 修饰符private this关键字 构造函数 继承 权限修饰符 包package 状态修饰符final 类与对象 类 类是对现实生活中一类事物的抽象&#xff0c;里面包含了这类事物共有的属性(名词)和行为(动词)例如人类&#xff0c;人就是一个大类&#xff…

大规模MIMO系统中基于CSI的卷积神经网络定位

来源&#xff1a;投稿 作者&#xff1a;小灰灰 编辑&#xff1a;学姐 论文标题&#xff1a;CSI-based Positioning in Massive MIMO systems using Convolutional Neural Networks 摘要 研究了使用大规模MIMO&#xff08;MaMIMO&#xff09;系统的信道状态信息&#xff08;CS…

mysql 基础操作命令集

目录 目录 数据库操作 查看库命令 使用某个库&#xff08;可以不用分号 &#xff1b;&#xff09; 查看库下所有的表 显示一个表下的所有字段和类型 查看一个表的建表语句 查看表的内容 创建新数据库 创建新表&#xff0c;设定表的字段 插入一行数据 某字段更改数据…

OSI七层模型及各层功能概述

1.OSI的基本概念及原则 OSI是Open System Interconnect的缩写&#xff0c;意为开放式系统互联。其各个层次的划分遵循下列原则&#xff1a; &#xff08;1&#xff09;同一层中的各网络节点都有相同的层次结构&#xff0c;具有同样的功能。&#xff08;2&#xff09;同一节点…

运营商大数据是什么,是如何实现精准获客的

近年来&#xff0c;运营商大数据在市场之上发展迅速&#xff0c;各行各业的公司都在利用运营商大数据获取更加精准有效的企业信息和客户资源。例如&#xff0c;当企业在进行精准营销的过程之中&#xff0c;可以根据线索和条件快速获得更准确的客户名单&#xff0c;而不像传统的…

定时任务方案实现与对比

定时任务分类 定时任务分为分布式定时任务和单机定时任务两个大的方向&#xff0c;他们的适用场景不同。 单机定时任务在单台计算机上运行&#xff0c;其执行结果和单台机器上的数据有关&#xff0c;如对本地机器的缓存做核对、清理日志等。它的 优点 是简单易用&#xff0c;无…

玩着3dmax把Python学了-01

3ds Max 2022以前的版本要借助Python的api来实现Python编程达到编辑绘图脚本的功能&#xff0c;但是好消息来了&#xff0c;3ds Max 2022 起&#xff0c;MaxPlus 不再作为 3ds Max 的 Python API 包含在内。而是3ds Max 将 Python 3.7 的标准版本包涵其中了&#xff0c;位于 [3…

MySQL监控告警及可视化:Zabbix+Percona PMP实现(Part II)

MySQL监控告警及可视化&#xff1a;ZabbixPercona PMP实现&#xff08;Part II&#xff09; PMP插件安装PMP监控脚本配置Web界面导入PMP模板 服务器清单如下&#xff1a; 服务器IP配置OS版本服务器角色172.16.175.x4c8gCentOS 7.7MySQL Server172.16.175.y4c8gCentOS 7.7Zabbi…

Python——基于YOLOV8的车牌识别(源码+教程)

目录 一、前言 二 、完成效果 三、 项目包 四、运行项目 &#xff08;教程&#xff09; 一、前言 YOLOv8LPRNet车牌定位与识别https://www.bilibili.com/video/BV1vk4y1E7MZ/ 最近做了有一个车牌识别的小需求&#xff0c;今天完成了&#xff0c;在此记录和分享 首先&#x…

NECCS|全国大学生英语竞赛C类|听力|短篇新闻|听写填空|16:40~17:10+17:30~18:10

目录 一、听写填空 1. 题型 2. 技巧 &#xff08;1&#xff09;利用间隙 浏览全文 积极预测 &#xff08;2&#xff09;边听边记 &#xff08;3&#xff09;注重检查 二、短篇新闻 1. 试题解读 2. 解题技巧 &#xff08;1&#xff09;预测要点&#xff0c;有的放矢 …

【五一创作】机械臂速成小指南(二十四):逆运动学的雅可比方法

&#x1f468;‍&#x1f3eb;&#x1f970;&#x1f973;需要机械臂相关资源的同学可以在评论区中留言哦&#x1f916;&#x1f63d;&#x1f984; 指南目录&#x1f4d6;&#xff1a; &#x1f389;&#x1f389;机械臂速成小指南&#xff08;零点五&#xff09;&#xff…

Redis消息队列

消息队列&#xff08;Message Queue&#xff09;&#xff0c;字面意思就是存放消息的队列。最简单的消息队列模型包括3个角色&#xff1a; 消息队列&#xff1a;存储和管理消息&#xff0c;也被称为消息代理&#xff08;Message Broker&#xff09; 生产者&#xff1a;发送消…

【hello Linux】线程概念

目录 1. 线程概念的铺设 2. Linux线程概念 2.1 什么是线程 2.2 线程的优点 2.3 线程的缺点 2.4 线程异常 2.5 线程用途 3. Linux进程VS线程 4. Linux线程控制 4.1 POSIX线程库 4.2 创建线程 4.3 进程ID和线程ID 4.4 线程终止 4.5 线程等待 4.6 分离线程 Linux&#x1f337; 1…

FPGA时序约束(六)时序例外约束

系列文章目录 FPGA时序约束&#xff08;一&#xff09;基本概念入门及简单语法 FPGA时序约束&#xff08;二&#xff09;利用Quartus18对Altera进行时序约束 FPGA时序约束&#xff08;三&#xff09;时序约束基本路径的深入分析 FPGA时序约束&#xff08;四&#xff09;主时…

解除Word的编辑保护【简单版】

首先&#xff0c;我们遇到的情况是下图这样的&#xff1a; 点一下停止保护&#xff0c;是下图这样的&#xff1a; 开始解决&#xff1a; 第一种方式&#xff1a;另存为Word Xml 存好了&#xff0c; 打开如下图&#xff08;我用VS打开的&#xff0c;最好找个能够格式化代码的编…

C++---区间DP---棋盘分割(每日一道算法2023.5.2)

注意事项&#xff1a; 涉及到"矩阵/二维前缀和"的一些知识&#xff0c;建议先理解那篇文章。 题目&#xff1a; 将一个 88 的棋盘进行如下分割&#xff1a;将原棋盘割下一块矩形棋盘并使剩下部分也是矩形&#xff0c;再将剩下的部分继续如此分割&#xff0c;这样割了…