openGauss训练营学习心得-WDR性能分析
经过2021年9月12日-9月13日两个半天的训练营学习,我比较关注的还是性能优化方面的知识,目前一直在从事oracle和mysql数据库的性能优化问题。个人感觉性能监控这方面,openGauss做的还不错,和oracle与mysql大致区别不大。
openGauss集群性能指标体系
①系统级: 集群级别或节点级别指标
• OS
• Instance Time
• Memory
• Session, Thread
• Events, Utility
②对象级:数据库对象指标
• Database、Table、Index
• File
• Lock
③应用级:表征应用负载性能
• Transaction、Statement
• Active session Profile
• Slow query
• Full SQL trace
系统级-OS
OS_RUNTIME,OS_THREADS
• 获取实时的CPU时间,LOAD,内存消耗信息(类似top),用于判断当前操作系统的
负载状态
INSTANCE_TIME
• 系统级的时间消耗细分。判断是否整个系统是否存在负载,网络,IO,CPU上的瓶颈
MEMORY_NODE_DETAIL, SHARED_MEMORY_DETAIL
1. 实例级内存(全局,动态内存,共享内存,通信等)分配,使用率
2. 共享内存上下文分配/使用率,定位定界可细化至特性级别,结合session级别内存上
下文分配视图接口,可帮助定位会话级内存使用问题
对象级-Database
STAT_DATABASE,STAT_DATABASE_CONFLICTS
提供数据库级别的活跃连接数,负载强度,块读写性能,行活动,死锁,临时下盘文件
等信息。根据这些信息可以帮助建立数据库访存模型(读写比等负载特点),识别热点
数据库,诊断数据库级别大颗粒性能瓶颈
对象级-Table
STAT_USER_TABLES, STAT_SYS_TABLES, STAT_ALL_TABLES
STATIO_USER_TABLES, STATIO_SYS_TABLES, STATIO_ALL_TABLES
GLOBAL_STAT_HOTKEYS_INFO
1. 表上行扫描活动,索引扫描活动,行变更活动,活跃行占比,表维护操作活动
(vaccum,analyze),页面读取缓冲命中率等,这些信息可以帮助建立表级别的访存
模型(读写比,缓存效率等),识别热点表,预警表维护操作,诊断表级别细粒度性能
瓶颈
2. 识别表级别热key,定界热点访问造成的网络,IO瓶颈
对象级-Index
• STAT_USER_INDEXES, STAT_SYS_INDEXES, STAT_ALL_INDEXES
STATIO_USER_INDEXES, STATIO_SYS_INDEXES, STATIO_ALL_INDEXES
• 索引使用统计:index scan次数,index scan返回的索引项,通过index scan返回的表
行数等,索引页的缓存效率等,用以评估索引收益和效率
WDR-WDR Snapshot
•定期对DBE_PERF内global/summary视图采集快照
dbe_perf.summary_statement -> snapshot.snap_summary_statement
dbe_perf. summary_workload_sql_count -> snapshot. snap_summary_workload_sql_count
• 查看当前WDR snapshot列表:
select * from snapshot.snapshot order by start_ts;
• 查看某次WDR snapshot中相关summary/global快照的时间花费
select * from snapshot.tables_snap_timestamp where snapshot_id = 1 order by start_ts;
• 手工创建WDR snapshot
select create_wdr_snapshot();
CCN + monadmin
• 默认:
1小时自动运行一次
数据保留8天
WDR-生成WDR Report
• select generate_wdr_report(begin_snap_id Oid, end_snap_id Oid, int report_type, int
report_scope, int node_name );
• report_type - summary/ detail/ all
• report_scope - cluster/ node
• node_name – 结点级别report时候,指定node name; cluster级别省略或者指定为
NULL
• 要在postgres库内执行
• 以下情况WDR Report不可生成:
两次Snapshot之间结点(CN/DN)重启
两次Snapshot之间Drop DB
分析WDR与oracle的awr类似,比较好上手。