Grrenplum本地开发使用

news2024/10/3 23:19:54

连接我本机:   

ssh -p 2222 gpadmin@10.198.61.106    #密码: changeme

# 执行以下的命令,用于重新构建一遍环境变量

source /usr/local/greenplum-db/greenplum_path.sh

source env.sh

再次执行psql   就可以进入greenplum中去了。

连数据库,我这边好了, 账号: gpadmin,  密码123456, 端口是5433.

gpstart -a => 快速启动|

gpstart -d => 指定数据目录(默认值:$MASTER_DATA_DIRECTORY)

gpstart -q => 在安静模式下运行。命令输出不显示在屏幕,但仍然写入日志文件。

gpstart -R => 管理员连接

gpstart -v => 显示详细启动信息

gpstop  -u  重启集群

插入速度过慢的时候:

Greenplum调整的参数如下:

(1)全局死锁检测开关

在Greenplum 6中其默认关闭,需要打开它才可以支持并发更新/删除操作;

gpconfig -c gp_enable_global_deadlock_detector -v on

(2) 禁用GPORCA优化器(据说GPDB6默认的优化器为:GPORCA)

gpconfig -c optimizer -v off

(3)关闭日志

此GUC减少不必要的日志,避免日志输出对I/O性能的干扰。

gpconfig -c log_statement -v none

注意:参数配置修改后,我使用gpstop -u重新加了配置,并用gpconfig -s检查了各个参数确认为修改成功。

导入CSV文件到GreenPlum中去.

copy td_case_custom_column from '/home/gpadmin/td_case_custom_column.csv' with csv;

复制一个文件过去到目录下

scp -P 2222 ~/Downloads/td_case_custom_column.csv gpadmin@10.198.56.186:~

复制一个文件夹过去到/data目录下

scp -P 2222   -r  td_case/   gpadmin@10.198.56.186:~/data

# 使用 copy 命令将 resdata 库下的 aa_test 表中的数据导出到 /tmp/data/test.csv 文件中

# ---------------------------------------------------------

COPY aa_test TO '/tmp/data/test.csv' WITH csv;

COPY 2

# 使用 copy 命令将 /tmp/data/test.csv 文件中内容导入到 resdata 库下的 aa_test 表中

# ---------------------------------------------------------

COPY aa_test  FROM '/tmp/data/test.csv' WITH csv;

Greenplum的查询

-- 查看greenplum库各个节点数据的分布情况

select gp_segment_id,count(*) from td_case group by gp_segment_id;

select gp_segment_id,count(*) from td_case  where tenant_id ='22' group by gp_segment_id;

-- 查询表的总览

select

    relname,

    reltuples::int as total

from

    pg_class

where

    relname = 'td_case'

    and relnamespace = (select oid from pg_namespace where nspname = 'public');

   

   --  查询所有的库

   select * from pg_namespace

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Greenplum自动根据create_time创建分区~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

创建分区:

CREATE OR REPLACE FUNCTION auto_insert_into_td_case()

  RETURNS trigger AS

$BODY$

DECLARE

    time_column_name text ; -- 父表中用于分区的时间字段的名称[必须首先初始化!!]

    curMM varchar(6); -- 'YYYYMM'字串,用做分区子表的后缀

    isExist boolean; -- 分区子表,是否已存在

    startTime text;

    endTime text;

    strSQL  text;

    

BEGIN

    -- 调用前,必须首先初始化(时间字段名):time_column_name [直接从调用参数中获取!!]

    time_column_name := TG_ARGV[0];

   

    -- 判断对应分区表 是否已经存在?

    EXECUTE 'SELECT $1.'||time_column_name INTO strSQL USING NEW;

    curMM := to_char( strSQL::timestamp , 'YYYYMM' );

    select count(*) INTO isExist from pg_class where relname = (TG_RELNAME||'_'||curMM);

    -- 若不存在, 则插入前需 先创建子分区

    IF ( isExist = false ) THEN  

        -- 创建子分区表

        startTime := curMM||'01 00:00:00';

        endTime := to_char( startTime::timestamp + interval '1 month', 'YYYY-MM-DD HH24:MI:SS');

        strSQL := 'CREATE TABLE IF NOT EXISTS '||TG_RELNAME||'_'||curMM||

                  ' ( CHECK('||time_column_name||'>='''|| startTime ||''' AND '

                             ||time_column_name||'< '''|| endTime ||''' )

                          ) INHERITS ('||TG_RELNAME||') ;'  ;  

        EXECUTE strSQL;

        -- 创建索引

        strSQL := 'CREATE INDEX '||TG_RELNAME||'_'||curMM||'_INDEX_'||time_column_name||' ON '

                  ||TG_RELNAME||'_'||curMM||' ('||time_column_name||');' ;

        EXECUTE strSQL;

       

    END IF;

    -- 插入数据到子分区!

    strSQL := 'INSERT INTO '||TG_RELNAME||'_'||curMM||' SELECT $1.*' ;

    EXECUTE strSQL USING NEW;

    RETURN NULL

END

$BODY$

  LANGUAGE plpgsql;

 CREATE TRIGGER insert_td_case_data_value_trigger

  BEFORE INSERT

  ON td_case

  FOR EACH ROW

  EXECUTE PROCEDURE auto_insert_into_td_case('create_time');

但是greenplum不支持上面的自动的创建的过程!!!!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Greenplum的查询~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

--表占用空间

 select

relname,

sotdsize / 1024 / 1024 as size_MB,

sotdtoastsize as toast,

sotdadditionalsize as other

from

gp_toolkit.gp_size_of_table_disk as sotd,

pg_class

where

sotd.sotdoid = pg_class.oid

and relname = 'td_case'

order by relname;

--索引占用空间

 select

soisize / 1024 / 1024 as size_MB,

relname as indexname

from

pg_class,

gp_toolkit.gp_size_of_index

where

pg_class.oid = gp_size_of_index.soioid

and pg_class.relkind = 'i';

--  数据库所占用空间

 select pg_size_pretty(pg_database_size('testDB'));

-- 一个schema包含的所有表 

 select * from pg_tables where schemaname = 'public';

--  查询所有的schema, 以及其id

 select oid,* from pg_namespace;

-- relkind 类型:char  

-- 分类:r =普通表,i = 索引,S =序列,v = 视图, c =复合类型,s = 特殊,t =TOAST表

-- 根据上面的id查询索引占用空间, relpages(磁盘用量)

 select sum(relpages) from pg_class

where relkind = 'i' and relnamespace = 2200;

--  根据上面的信息,查询表占用的空间

 select sum(relpages) from pg_class

where relkind = 'r' and relnamespace = 2200;

select * from pg_class where

relkind = 'r'

and relnamespace = 2200

and relname like 'td%'

order by relpages desc;

-- 一个表占用的空间的大小

 select pg_size_pretty(pg_relation_size('td_case')) ;

--查看seg分布

 select

gp_segment_id, count(1)

from td_case group by 1;

-- 磁盘、数据库空间

 select * from gp_toolkit.gp_disk_free order by dfsegment;

-- 查询库所占用的空间

 select * from gp_toolkit.gp_size_of_database order by sodddatname;

-- 日志查询

 select * from gp_toolkit.__gp_log_segment_ext;

GreenPlum + BI Reporting 研究计划

- 考虑如何实现BI Reporting中的数据需求(数据模型考虑先和已有的case management的数据模型一致)

    - Greenplum中表存储模型的选择(AO、行存、列存等)

   

选择使用AO的列存,

因为堆表和行存更加适用于OLTP的需求,即查询表的明细数据,很多的更新和删除的场景,

现实的业务场景是:批量的保存数据,然后查询汇总的信息,有更多的分析需求,场景更加偏向于OLAP,所以我们使用AO表的列存。

    - 考虑如何分区的问题(比如按tenant_id、create_time或者update_time等)

根据租户的id分区。

- 性能测试,尽量模拟真实数据进行测试

    - 数据准备(千万级别准备,数据分布尽量贴近真实,比如有的租户的数据量比较大,比如工作时间内的数据比较集中,非工作时间内的数据量比较少等,这么划分不一定完全准确仅供参考)

    - SQL准备(先考虑几个简单的指标,针对customs field的在简单的数据测试流程跑通之后再进一步考虑)

    - 执行,按照不同的数据分布进行分组测试(考虑在并行的情况下不同sql的执行效率、系统的资源占用情况等)

需求相关

User Cases: https://talkdesk.atlassian.net/wiki/spaces/TSC/pages/2757918779/Reporting+x+freshdesk+Approach

PRD: https://talkdesk.atlassian.net/wiki/spaces/TSC/pages/2742681658/Case+Reports

Greenplum相关参考

Greenplum表存储模型选择 - 程序员大本营

Greenplum性能优化之路 --(二)存储格式-腾讯云开发者社区-腾讯云

https://www.cnblogs.com/xibuhaohao/p/11127556.html

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

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

相关文章

在VS code 中部署C#和avalonia开发环境

要在 Mac 的 VS Code 中配置 C# 和 Avalonia 的开发环境&#xff0c;您可以按照以下步骤进行&#xff1a; 1. 安装 .NET SDK 下载 .NET SDK&#xff1a; 访问 .NET 下载页面。选择适用于 macOS 的最新稳定版本的 .NET SDK&#xff0c;并下载安装程序。安装 .NET SDK&#xff1…

PADS自动导出Gerber文件 —— 6层板

在出GERBER文件之前要给PCB文件铺完铜并且检查连接性和安全间距无错误。进入CAM中之后点自动定义。如果电气层不需要用到2D线&#xff0c;保险起见在电气层中把2D线和文本去掉&#xff08;在DRC检查时2D线不会报错&#xff0c;文本是会报错的&#xff09;&#xff0c;因为有些时…

【JAVA开源】基于Vue和SpringBoot的校园资料分享平台

本文项目编号 T 059 &#xff0c;文末自助获取源码 \color{red}{T059&#xff0c;文末自助获取源码} T059&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

(功能测试)熟悉web项目及环境 测试流程

1.环境&#xff1f;有没有考虑过什么是环境&#xff1f; web网站为什么能打开&#xff1f; &#xff08;是因为他的服务器已经在运行了&#xff0c;网站服务器相关环境已部署及运行&#xff09; 所以什么是环境&#xff1f; 环境&#xff1a;就是项目运行所需要的软件及硬件组合…

php与python建站的区别有哪些

php与Python建站的区别&#xff1a; 1、语言层面Python的特性比php好&#xff0c;更加规范。 2、Python的性能比php高。 3、有只需要启动服务的时候执行一次的代码&#xff0c;在php里每个请求都会被执行一次&#xff0c;Python不需要。虽然php可以通过缓存缩短这方面的差距…

CVPR论文《DETRs Beat YOLOs on Real-time Object Detection》读后思维导图

下面欣赏一下论文中的图和表&#xff1a; 1、与YOLOs的性能对比图 2、不同置信度阈值下的框数 3、IoU阈值和置信度阈值对准确性和NMS执行时间的影响 4、混合编码器不同变体 5、模型概述。将骨干网后三个阶段的特征输入到编码器中。高效混合编码器通过基于注意力的尺度内特征交…

Linux网络基础:HTTPS 网络传输协议

HTTPS HTTPS 网络传输协议加密常见的加密方式&#xff08;对称/非对称加密&#xff09;数据摘要、数字签名HTTPS 加密过程探索的方案只使用对称加密&#xff08;效率低下、不安全&#xff09;只使用非对称加密&#xff08;不靠谱、不安全&#xff09;双方都使用非对称加密&…

js中的深拷贝与浅拷贝 手写深拷贝代码

1 什么是深拷贝和浅拷贝&#xff1f; 深拷贝和浅拷贝都是复制对象时常用的两种方式&#xff0c;区别在于对于嵌套对象的处理&#xff0c;浅拷贝只复制属性的第一层属性&#xff0c;双方修改嵌套对象将会互相影响。深拷贝会递归复制每一层的属性&#xff0c;修改任意一方互不影响…

YOLO11项目实战1:道路缺陷检测系统设计【Python源码+数据集+运行演示】

一、项目背景 随着城市化进程的加速和交通网络的不断扩展&#xff0c;道路维护成为城市管理中的一个重要环节。道路缺陷&#xff08;如裂缝、坑洞、路面破损等&#xff09;不仅影响行车安全&#xff0c;还会增加车辆的磨损和维修成本。传统的道路缺陷检测方法主要依赖人工巡检…

[云服务器17] 搭建PMail个性邮箱!我的邮箱我做主

哈喽大家好啊&#xff01; 我们先来看一个邮箱: 123456example163.com你发现了吗&#xff1f;后面有163的域名&#xff01; 这个就标志了邮箱服务提供商的名字&#xff0c;像常见的Outlook 163等。 那么作为一个追求自由主义的人&#xff0c;今天&#xff0c;我们就要使用开…

exe4j安装使用教程

A-XVK258563F-1p4lv7mg7sav A-XVK209982F-1y0i3h4ywx2h1 A-XVK267351F-dpurrhnyarva A-XVK204432F-1kkoilo1jy2h3r A-XVK246130F-1l7msieqiwqnq A-XVK249554F-pllh351kcke50

出口企业财务管理,六款热门产品测评与推荐

本文介绍了ZohoBooks、QuickBooks、Xero等6款外贸管理软件&#xff0c;各有特点如全球化管理、移动应用、自动对账等&#xff0c;适合不同出口企业需求。选择时应考虑企业规模、业务复杂度和预算&#xff0c;建议先试用再购买。 一、Zoho Books Zoho Books是一款适合外贸企业跨…

【C++】迭代器失效问题解析

✨ Blog’s 主页: 白乐天_ξ( ✿&#xff1e;◡❛) &#x1f308; 个人Motto&#xff1a;他强任他强&#xff0c;清风拂山冈&#xff01; &#x1f525; 所属专栏&#xff1a;C深入学习笔记 &#x1f4ab; 欢迎来到我的学习笔记&#xff01; 一、迭代器失效的概念 迭代器的作用…

每日OJ题_牛客_游游的水果大礼包_枚举_C++_Java

目录 牛客_游游的水果大礼包 题目解析 C代码 Java代码 牛客_游游的水果大礼包 游游的水果大礼包 (nowcoder.com) 描述&#xff1a; 游游有n个苹果&#xff0c;m个桃子。她可以把2个苹果和1个桃子组成价值a元的一号水果大礼包&#xff0c;也可以把1个苹果和2个桃子…

GO网络编程(二):客户端与服务端通信【重要】

本节是新知识&#xff0c;偏应用&#xff0c;需要反复练习才能掌握。 目录 1.C/S通信示意图2.服务端通信3.客户端通信4.通信测试5.进阶练习&#xff1a;客户端之间通信 1.C/S通信示意图 客户端与服务端通信的模式也称作C/S模式&#xff0c;流程图如下 其中P是协程调度器。可…

【Qt】控件概述——按钮类控件(2)

控件概述&#xff08;2&#xff09; 1. PushButton2. RadioButton——单选按钮2.1 使用2.2 区分信号 clicked&#xff0c;clicked(bool)&#xff0c;pressed&#xff0c;released&#xff0c;toggled(bool)2.3 QButtonGroup分组 3. CheckBox——复选按钮 1. PushButton QPushB…

写不出论文?分享7款写论文的ai免费工具网站

在当今学术研究和写作领域&#xff0c;撰写高质量的论文是一项挑战性的任务。幸运的是&#xff0c;随着人工智能技术的发展&#xff0c;AI论文写作工具逐渐成为帮助学者和学生提高写作效率的重要工具。这些工具不仅能够提高写作速度&#xff0c;还能通过智能校对和优化&#xf…

【大数据】Doris 数据库与表操作语法实战详解

目录 一、前言 二、数据库基本操作 2.1 修改账户密码 2.2 创建新用户 2.3 创建数据库与账户授权 2.3.1 数据库创建补充说明 2.3.2 数据库账户赋权 三、数据表基本操作 3.1 Doris 数据表介绍与使用 3.1.1 建表结构说明 3.1.2 建表语法与操作 3.1.3 建表示例 - 单分区…

Android KMP 快速入门2 - Koin依赖注入

这里写目录标题 代码仓库KMP 框架基本框架actual&expectKoin 依赖注入管理 代码仓库 本小节代码已经上传到gitee&#xff0c;请自行查看&#xff1a; 点击访问仓库 KMP 框架 基本框架 源码集合描述存放内容示例androidMain针对 Android 平台的代码使用 Android SDK、Andr…

Python、C++、java阶乘算法

最近&#xff0c;我除了Python还学了C和Java&#xff0c;然后在网上看到编程考题&#xff1a;阶乘。 首先&#xff0c;我们先理解什么是阶乘。 阶乘是数学中的一个概念&#xff0c;通常定义为从1乘到指定的数。具体来说&#xff0c;一个正整数的阶乘&#xff08;记作n!&#…