暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

8小时玩转openGauss训练营学习心得

原创 赵敬星 2021-03-30
583

经过在8小时玩转openGauss训练营的学习,使自己对opengauss数据库有了更深层次的认识。以下浅谈下自己的收获。
各位老师从openGauss的体系架构,主备HA,在AI自治数据库上的演进,到实践分享,MOT(内存表)DBA指南,最佳参数实践,再到WDR报告和性能调优,WDR报告和性能调优等主题让我对openGauss从理论,到实践,再到优化有了一个整体的了解。
任何数据库系统,优化一直是绕不开的话题。我从“WDR报告和性能调优”这个主题的学习,完善了自己对openGauss优化的理解,主要从系统级,对象级,应用机参数着手优化。
一、系统级:集群级别或节点级别指标(OS,InstanceTime,Memory,Session,Thread,Events,Utility)
1、实时获取操作系统整体的负载情况(OS_RUNTIME,OS_THREADS)。CPU时间,负载LOAD,内存消耗情况,判断当前操作系统的整体负载状态,定位资源消耗比较大的进程。
2、系统级的时间消耗细分(INSTANCE_TIME)。判断整个系统是否在负载LOAD,网络,IO,CPU上存在瓶颈。
3、实例级内存分配,使用率(MEMORY_NODE_DETAIL,SHARED_MEMORY_DETAIL)。共享内存上下文分配/使用率,定位定界可细化至特性级别,结合session级别内存上下文分配视图接口,可帮助定位会话级内存使用问题。
4、系统级Session(SESSION_STAT,SESSION_TIME,SESSION_MEMORY,SESSION_MEMORY_DETAIL,SESSION_STAT_ACTIVITY)。会话级负载强度,逻辑/物理读写强度,排序活动等,用于甄别出负载强度高,使用资源多的会话。会话级时间细分,用于甄别出不同时间维度上session的消耗。会话级总内存和内存上下文分配/使用,可以定位单个session在特性级上的内存问题。获取实时系统活跃会话列表,包括会话基本信息,会话事务,语句,等待事件,会话状态(active,idle等)。用于分析当前系统活跃用户的活动信息,比如从语句的开始时间判断当前会话是否一致阻塞在某一个语句,从等待事件可以判断某一个或者多数会话阻塞在哪个事件或者节点(分布式场景)。
5、系统级Thread(THREAD_WAIT_STATUS)。获取实例工作线程/辅助线程列表列表,判断线程的运行状态,当前正阻塞在哪个事件上,正在等待哪个锁,或被哪个会话阻塞(提供可以判断系统中的会话等待链的接口)
6、系统级-Events(WAIT_EVENTS)各功能模块中IO,LOCK,LWLOCK,STATUS四类事件的等待次数,等待失败次数,等待时间等维度的统计信息,可以帮助定位特性级细粒度时延性能问题。
7、系统级-Utility(COMM_DELAY,COMM_RECV_STREAM,COMM_SEND_STREAM,COMM_STATUS,REPLICATION_STAT,GLOBAL_GET_BGWRITER_STATUS,GLOBAL_PAGEWRITER_STATUS,POOLER_STATUS)。获取通信组件时延信息,接收和发送流状态,用于诊断通信链路容量和时延故障。获取分布式部署形态下主备同步状态信息,用于诊断主备时延,复制性能故障。获取后台全量/增量检查点信息,buffer中待落盘脏页信息,后台刷脏工作线程的状态将影响bufferpool的效率,磁盘IO繁忙程度,这些信息可以帮助优化缓存和IO性能。分布式部署形态下,CN和DN之间的连接池将影响事务的执行效率和成功率,pooler状态可以帮助诊断连接池瓶颈。

二、对象级:数据库对象指标(Database、Table、Index、File、Lock)
1、对象级-Database(STAT_DATABASE,STAT_DATABASE_CONFLICTS)。提供数据库级别的活跃连接数,负载强度,块读写性能,行活动,死锁,临时下盘文件等信息。根据这些信息可以帮助建立数据库访存模型(读写比等负载特点),识别热点数据库,诊断数据库级别大颗粒性能瓶颈。
2、对象级-Table(STAT_USER_TABLES,STAT_SYS_TABLES,STAT_ALL_TABLESSTATIO_USER_TABLES,STATIO_SYS_TABLES,STATIO_ALL_TABLESGLOBAL_STAT_HOTKEYS_INFO)。表上行扫描活动,索引扫描活动,行变更活动,活跃行占比,表维护操作活动(vaccum,analyze),页面读取缓冲命中率等,这些信息可以帮助建立表级别的访存模型(读写比,缓存效率等),识别热点表,预警表维护操作,诊断表级别细粒度性能瓶颈。识别表级别热key,定界热点访问造成的网络,IO瓶颈。
3、对象级-Index(STAT_USER_INDEXES,STAT_SYS_INDEXES,STAT_ALL_INDEXESSTATIO_USER_INDEXES,STATIO_SYS_INDEXES,STATIO_ALL_INDEXES)。索引使用统计:indexscan次数,indexscan返回的索引项,通过indexscan返回的表行数等,索引页的缓存效率等,用以评估索引收益和效率。
4、对象级-File(FILE_IOSTAT,FILE_REDO_IOSTAT,STAT_BAD_BLOCK)。数据(数据,索引)文件的IO性能统计指标(读写数目,耗时,时延),可以帮助建立数据文件物理访存的模型,识别文件级别的物理IO强度和瓶颈。获取操作Redo文件的性能,帮助诊断redo日志操作的性能瓶颈。
5、对象级-Lock(LOCKS)对象锁涉及到的对象,事务,会话,锁信息,实时显示当前系统锁等待关系,识别热点锁。
6、对象级-Sequence(STATIO_USER_SEQUENCES,STATIO_SYS_SEQUENCES,STATIO_ALL_SEQUENCES)。sequence的缓存效率,如果我们处在一个高并发的情况下,系统频繁的多会话请求sequence取值。如果我们的sequence没有设置cache,那么每次都要更新数据字典,都要进行commit操作。多个会话还会出现该sequence记录的争用。

三、应用级:表征应用负载性能(Transaction、Statement、ActivesessionProfile、Slowquery、FullSQLtrace)
1、应用级-Transaction(TRANSACTIONS_RUNNING_XACTS,TRANSACTIONS_PREPARED_XACTS)。获取当前正在运行的单节点/两阶段事务列表,结合session和thread视图,诊断运行时间超过预期的事务。
2、应用级-Statement(STATEMENT_COUNT,STATEMENT)。DDL,DML(select,insert,update,delete),DCL语句的分布比率,帮助建立负载特征模型,预警负载异常变动。语句级别(归一化SQL,模板SQL)的响应时间,执行次数,行活动,软硬解析比,时间模型,网络开销,排序性能(时间,内存,溢出),执行器HASH性能(时间,内存,溢出)。据此可以识别热点语句,定位语句性能瓶颈,建立语句性能基线,以低成本预警语句性能变化。
3、应用级-ActivesessionProfile(LOCAL_ACTIVE_SESSION,GS_ASP(publicschema))。ASP(ActiveSessionProfile)活跃会话概要信息,通过采样实例活跃会话的状态信息,低成本复现过去一段时间的系统活动,主要包含会话基本信息,会话事务,语句,等待事件,会话状态(active,idle等),当前正阻塞在哪个事件上,正在等待哪个锁,或被哪个会话阻塞。可以从中获取如下主要概要信息:最近用户session最耗资源的的事件。最近比较占资源的session/SQL把资源都消耗在哪些event上。最近执行时间/执行次数最多的是哪些SQL(进而可以找出表,数据库)。最近钟最耗资源的用户的信息。最近阻塞其他session最多的sessionLOCAL_ACTIVE_SESSION的默认采样频率是1s,内存视图,ASP的默认采样频率是10s,持久化在存储。
4、应用级-FullSQLtrace&SlowQuery(STATEMENT_HISTORY)。记录全量SQL信息,分为L0,L1,L2三个等级,可以获取实例信息,客户端信息,语句概要信息,执行信息,行活动信息,Cache/IO,时间模型,网络统计信息,锁概要信息,锁详细信息等。通过全量SQL,可以得到整个系统所有语句的执行流水以及他们的详细性能数据(持久化的)。除Statement视图提供的能力外,还额外提供了详细加放锁信息,可以诊断到单语句级别的性能波动。达到慢查询阈值设置的语句性能信息,性能要素和全量SQL一致。

四、WDR报表分析(集群级报表/节点级报表)
1、集群级Report主要关注以下指标(DatabaseStat、LoadProfile、InstanceEfficiencyPercentages、IOProfile、SQLStatistics、CacheIOStats、ObjectStats、SQLDetail)
2、节点级Report主要关注以下指标(InstanceEfficiencyPercentages、Top10EventsbyTotalWaitTime、WaitClassesbyTotalWaitTime、IOProfile、MemoryStatistics、TimeModel、SQLStatistics、WaitEvents、CacheIOStats、UtilityStatus、Objectstats、ConfigurationSettings)

通过对该主题的学习,WDR报表类似于Oracle—AWR报告,以后可以结合自己之前对Oracle数据库优化的经验,以及对AWR报告的分析,来更好的学习WDR报告,完善自己的优化技能。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论