【实录】首次利用GPCC历史数据调优Greenplum 完结篇

2023-11-20 15:10

本文主要是介绍【实录】首次利用GPCC历史数据调优Greenplum 完结篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

了解更多Greenplum技术干货,欢迎访问Greenplum中文社区网站

本文作者Pivotal Greenplum工程技术经理王昊所在的Greenplum研发部门近期在帮助客户解决一个全局性能问题,并通过本文记录了分析过程和解决思路。我们在【实录】首次利用GPCC历史数据调优Greenplum 第一部分中帮助大家了解了GPDB集群的整体性能特征,在【实录】首次利用GPCC历史数据调优Greenplum 第二部分中分析了查询负载整体情况。今天,将为大家带来《首次利用GPCC历史数据调优Greenplum》系列的完结篇——分析数据表行数变化趋势供大家学习讨论。

第三部分,分析数据表行数变化趋势

在第一部分的末尾,我们怀疑的另一个方向就是用户的数据量是否发生了显著的增加。由于数据量增加可以直接导致磁盘IO变多,侧面上也能联系到“整体性能下降”的反馈。

GPCC4.9/6.1即将提供数据表大小的监控和变化趋势历史数据的功能,但撰写本文时,该功能还在研发中,本次客户的数据当然也不包括这些全新历史数据。

但是这并不意味着我们束手无策,这里我们介绍GPCC4.8的第三个历史表:gpmetrics.gpcc_plannode_history。这个表可以记录(1)Master上生成的查询计划树(2)查询执行时每个查询计划节点在每个Segment进程上运行的实际结果。

在这里插入图片描述

执行计划节点历史(gpmetrics.gpcc_plannode_history)是GPCC 4.x的新功能,以前的GPPerfmon并没有类似功能。这个表提供的信息非常丰富,因此也需要占用更多空间,为了平衡GPCC目前只对执行时间超过10秒的查询记录完整的计划节点历史。这个表的用途非常多,例如绘制图形化的执行计划树,在以前的介绍文章《新一代Greenplum监控管理平台》里有过介绍。

这里我们借助这个表的信息推算用户数据表大小及变化趋势。我们知道GP执行查询时通过Seq Scan节点进行表扫描;如果扫描节点的条件是空,则说明是一个全表扫描;在此基础上累加所有Segment 上同一扫描节点的输出的行数,即为该表的实际行数。

基于此下面的查询可以统计出所有的全表扫描的结果。

WITH master_nodes (tmid, ssid, ccnt, nodeid, rel_oid, relation_name) AS (SELECT tmid, ssid, ccnt, nodeid, max(rel_oid), max(relation_name)FROM gpmetrics.gpcc_plannode_historyWHERE ctime >= '2019-09-23' AND ctime < '2019-10-17'AND node_type IN ('Seq Scan', 'Append-only Scan', 'Append-only Columnar Scan', 'Table Scan', 'Bitmap Heap Scan')AND condition = '' -- 只统计没有过滤条件的全表扫描AND segid = -1      -- MASTER记录的执行计划过滤出适合的query id + node idGROUP BY tmid, ssid, ccnt, nodeid
),
table_rows (rel_oid, relation_name, hash_name, cdate, row_cnt, scan_cnt) AS (SELECT rel_oid, relation_name, substring(md5(relation_name) FROM 1 FOR 12) tname, ctime::date ctime, round

这篇关于【实录】首次利用GPCC历史数据调优Greenplum 完结篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/395505

相关文章

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

JVM内存调优原则及几种JVM内存调优方法

JVM内存调优原则及几种JVM内存调优方法 1、堆大小设置。 2、回收器选择。   1、在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提供的内存查看工具,比如JConsole和Java VisualVM。   2、对JVM内存的系统级的调优主要的目的是减少

风控系统之指标回溯,历史数据重跑

个人博客:无奈何杨(wnhyang) 个人语雀:wnhyang 共享语雀:在线知识共享 Github:wnhyang - Overview 回顾 默认你已经看过之前那篇风控系统指标计算/特征提取分析与实现01,Redis、Zset、模版方法。 其中已经介绍了如何利用redis的zset结构完成指标计算,为了方便这篇文章的介绍,还是在正式开始本篇之前回顾一下。 时间窗口 zset

Linux系统性能调优详解

前言 在服务器运维和管理中,Linux系统的性能调优是确保服务稳定性和响应速度的关键。通过对系统进行细致的调优,可以显著提升处理能力,优化资源利用率。本文将详细介绍Linux性能调优的多个方面,包括系统监控、磁盘优化、内存管理、网络配置等,并提供实用的技巧和工具。 简介 Linux性能调优是一个涉及多个层面的复杂过程,旨在确保系统资源得到最佳利用,从而提高整体性能和响应速度。 调优实践

高性能计算应用优化之代码实现调优(一)

本章将介绍代码实现过程中使用到的调优方法。在软件开发早期,开发者更多关注代码功能的实现,对代码的性能关注较少,随着代码规模增加,不合理的代码实现方法所带来的性能包袱逐渐凸显。因此,需要对原有代码实现进行优化,如修改不合理的访存顺序,使代码更易于被编译器优化等。 浮点数运算 浮点数运算是科学计算中开销最大的部分之一,特别是双精度除法,合理地设计实现浮点数运算环节可以显著提高程序的性能。 由于单

经验笔记:SQL调优

SQL调优经验笔记 引言 SQL调优是确保数据库系统高效运行的重要环节。通过对查询语句、数据库配置、硬件资源等方面进行优化,可以显著提升数据库性能,进而增强应用程序的整体表现。以下是基于常见调优手段和实践经验整理的一份经验笔记。 1. 查询语句优化 1.1 避免使用SELECT * 只选择需要的列,减少不必要的数据传输。 示例: -- 不推荐SELECT * FROM users WH

首次揭秘,面向核心业务的全闪分布式存储架构设计与实践

当今是云计算、大数据的时代,企业业务持续增长需要存储系统的 IO 性能也持续增长。 机械盘本身的 IOPS 一直徘徊在数百的级别,为了提高传统存储的性能,有些存储厂商加了缓存层,然而目前应用正由单一走向多元化,导致 IO 特征无法预测,缓存也难以发挥作用。 机械盘依赖盘片的旋转和机械臂的移动进行 IO,目前转速基本达到物理极限,所以机械盘性能一直徘徊不前,无法满足企业核心业务对于存储性能的要求

【python 连接 Greenplum】python 连接Greenplum数据库

Python和PostgrelSQL进行交互,需要安装三方库,PostgrelSQL跟mysql 的用法类似 pip install psycopg2 例子: import psycopg2 import psycopg2.extras conn = psycopg2.connect(host='localhost', port=6432, user='postgres', passwo

Flink在大规模状态数据集下的checkpoint调优

今天接到一个同学的反馈问题,大概是: Flink程序运行一段时间就会报这个错误,定位好多天都没有定位到。checkpoint时间是5秒,20秒都不行。 Caused by: java.io.IOException: Could not flush and close the file system output stream to hdfs://HDFSaaaa/flink/PointWid

学不会去当产品吧?Flink实战任务调优

背景 在大数据领域我们都知道,开发是最简单,任务的合理调优、问题排查才是最重要的。 我们在之前的文章《Flink面试通关手册》中也讲解过,作者结合线上出现的一些问题,总结了一些任务调优需要注意的点。 一些简单的原则 我们在之前的文章《Flink面试通关手册》中提到过一个问题,Flink任务延迟高,想解决这个问题,你会如何入手? 当时我们给出的答案是: 在Flink的后台任务管理中,