本文分享自华为云社区《GaussDB(DWS)TopSQL总结》,作者:nullptr_ 。
TopSQL为DWS的监控系统,记录DWS中各个作业、算子级别的资源使用数据、耗时数据,包括下盘信息、内存、网络、耗时、警告、基础信息等作业执行的数据。
TopSQL分为实时表和历史表,实时表主要展示系统当前的负载情况,历史表主要用于存储作业执行的历史情况。历史表主要用于历史问题的分析回溯和问题定位、实时表主要用来展示当前系统中作业执行情况,让系统现场更加直观,为运维工作带来了极大的方便。
在DN通过打桩定期记录作业的实时信息,并将记录定期发送至CN,并将信息定期存储至实时表中pgxc_wlm_session_statistics中,并定时将实时表中的作业落盘到历史表中pgxc_wlm_session_info中,此过程为了减少阻塞将记录放到无锁队列中,无锁队列提供了记录的CAS原子操作,然后定期读取无锁队列中的内容进行转储,pgxc_wlm_session_info通过start_time进行分区,每天一个分区,通过参数topsql_retention_time配置默认保留30个分区即30天的记录,定期对pgxc_wlm_session_info的分区进行清理、创建。此过程在dws中有单独的线程运行,对系统的影响较小。无锁队列大小是有上限的,如果转储处理的速度赶不上生成的速度那么作业也会被丢弃。
历史
当前pgxc_wlm_session_history只包含最近3分钟的数据且数据来源实际是pgxc_wlm_session_info。