文档章节

Greenplum优化方案

闻术苑
 闻术苑
发布于 2016/05/31 13:44
字数 1432
阅读 999
收藏 1

一、   参数调整

1、块I/O参数

1)参数描述

此参数用来设置块设备参数。

2)现参数:

现没有设置块I/O参数。

3)加入参数:

#vi /etc/rc.d/rc.local

blockdev --setra 16384 /dev/sdb

注:master、standby节点不需修改。

2、I/O调度算法 

    由于数据仓库属于IO敏感性应用,为了提高系统效率,生产环境中,我们应该在LINUX内核上修改IO调度的算法。以root身份编辑/boot/grub/menu.lst,添加一行

elevator=deadline,但是不要修改failsafe的定义,重启系统(必须),再以root身份执行命令cat /sys/block/*/queue/scheduler,输出的每行应该含有有[deadline]。

 3、网络参数

rmem_default — 默认的接收窗口大小。

rmem_max — 接收窗口的最大大小。

wmem_default — 默认的发送窗口大小。

wmem_max — 发送窗口的最大大小 

使用 /etc/sysctl.conf 在系统启动时把参数配置成您所设置的值: 

net.core.rmem_default = 256960

net.core.rmem_max = 256960

net.core.wmem_default = 256960

net.core.wmem_max = 256960 

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_sack = 0

net.ipv4.tcp_window_scaling = 1 

然后重新启动网络守护程序/etc/rc.d/init.d/network restart。  

4、系统参数(已完成)

1、参数描绘

cat /etc/security/limits.conf

2、现参数:

* soft nofile 65536

* hard nofile 65536

* soft nproc 131072

* hard nproc 131072

5、GP相关参数

#vi /etc/sysctl.conf

kernel.sem = 250 64000 100 512

kernel.shmmax = 500000000

kernel.shmmni = 4096

kernel.shmall = 4000000000

kernel.sem = 250 64000 100 512

kernel.sysrq = 1

kernel.core_uses_pid = 1

kernel.msgmnb = 65536

kernel.msgmax = 65536

net.ipv4.tcp_syncookies = 1

net.ipv4.ip_forward = 0

net.ipv4.conf.default.accept_source_route = 0

net.ipv4.tcp_tw_recycle=1

net.ipv4.tcp_max_syn_backlog=4096

net.ipv4.conf.all.arp_filter = 1

net.core.netdev_max_backlog=10000

net.ipv4.ip_local_port_range = 1025 65535 

1、 kernel.shmmax = 7516192768 (8G,取物理内存16G的50%)

2、 kernel.shmall = 4000000000(物理内存16G时相应大小)

3、 kernel.sem = 250 64000 100 1024

6、GP参数

注:segment host上是4个primary instance,4个mirror instance.

   cat /gpmaster/gp-1/postgresql.conf

1、 shared_buffers(local, max_connections*16K)

shared_buffers = 1600MB # master、standby

shared_buffers = 200MB # segment

2、 work_mem(,global,物理内存的2%-4%)

work_mem = 640MB # master、standby

3、 effective_cache_size(master节点,设为物理内存的85%,15032385536)

effective_cache_size = 9600MB

4、 mainteance_work_mem(global,CREATE INDEX, VACUUM等时用到)

maintenance_work_mem = 800MB

5、 max_connections(local,最大连接数)

max_connections = 200 #(master、standby)

max_connections = 1200 #(segment)

6、 max_prepared_transactions(local,与master最大连接数相同)

max_prepraed_transacrions=300 #(master与segment instance相同)

 二、   表整理(以kn_weblog_detail为例)

1、 表统计

select relname from pg_class where t.relname like 'ods%';

select relname from pg_class where t.relname like 'kn%';

 2、 VACUUM

VACUUM [ FULL | FREEZE ] [ VERBOSE ] [ table ]

VACUUM [ FULL | FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]

 3、 Analyze

ANALYZE [ table [ (column [, ...] ) ] ]

三、   按列存储优化(以kn_weblog_detail为例)

1、 建表:

create table temp_huagai_weblog_Detail_test

(

    id                     varchar(128) NULL,

    session_id              varchar(120) NULL,

    ticket_id               varchar(120) NULL,

    global_user_id          int8 NULL,

    visit_date              timestamp NULL,

    visit_day               int8 NULL,

    email                   varchar(128) NULL,

    ord                     int8 NULL,

    hh24                    int8 NULL,

    ip                      varchar(17) NULL,

    area_prov               varchar(32) NULL,

    area_city               varchar(32) NULL,

    if_in_page              varchar(2) NULL,

    if_out_page             varchar(2) NULL,

    if_main_act_page        varchar(2) NULL,

    if_last_main_act_page   varchar(2) NULL,

    if_above_page           varchar(2) NULL,

    page_on_time            int8 NULL,

    goods_id                varchar(50) NULL,

    utm_source              varchar(128) NULL,

    utm_source_type         int4 NULL,

    utm_medium              varchar(128) NULL,

    utm_campaign            varchar(128) NULL,

    loc_url                 varchar(4096) NULL,

    ref_url                 varchar(4096) NULL,

    user_agent              varchar(4096) NULL,

    browser_name            varchar(64) NULL,

    os                      varchar(64) NULL,

    resolution              varchar(64) NULL,

    client_type             varchar(64) NULL,

    ck_cps_uid              varchar(12) NULL,

    ck_cps_cid              varchar(12) NULL,

    url_cps_uid             varchar(12) NULL,

    url_cps_cid             varchar(12) NULL,

    goods_history           varchar(1024) NULL,

    order_id                int8 NULL,

    ref_id                  varchar(128) NULL,

    time_stamp              timestamp NULL,

log_ip                  int8 NULL

)WITH (appendonly=true, orientation=column,compresstype=QuickLZ,compresslevel=1)

DISTRIBUTED BY (id);

2、 创建位图索引

CREATE INDEX goods_id _bmp_idx ON temp_huagai_weblog_Detail USING bitmap (goods_id);

四、   性能评估

1、 I/O测试sql

select count(1) from kn_webloG_all_detail where visit_date >= '2011-11-01' and visit_date < '2011-11-02';

2、 CPU测试sql

SELECT  a.ID
,a.SESSION_ID
,a.ticket_id
,a.global_user_id
, a.email
,a.ORD
,a.VISIT_DATE
,a.visit_day
,a.HH24
,A.IP
,coalesce(B.Province,'-') as area_prov
,coalesce(B.city,'-') as area_city
, if_in_page
FROM temp_huagai_weblog_Detail A
left join 
(
select a.id,B.PROVINCE,B.CITY from temp_huagai_weblog_Detail a 
INNER JOIN ODS_IP  B ON A.LOG_IP >= B.HOST_FROM WHERE A.LOG_IP <= B.HOST_TO
) B on A.ID = B.ID;

3、评估方法

gpcheckperf -f all_file -d /dbfast1 -d dw

采用gpcheckperf,统计性能数据,完成评估报告。

五、    问题

1、 Sql

2、   insert into OL_MONITORING_HOUR_FACT
select  t1.visit_day
,t1.hh24
,t1.pv
,t1.visits
,t1.uv
,t1.uip
,t1.bounces
,t1.exit_visit
,coalesce(t2.order_num,0) visit_order
,coalesce(t2.order_amt,0) visit_order_amt
,coalesce(t2.order_num,0)*1.0/t1.visits exchange_rate
,t1.bounces*1.0/t1.visits bounce_rate
,t1.exit_visit*1.0/t1.pv exit_rate
,now()
from
(
select  visit_day,hh24
,count(1) pv
,count(distinct session_id) visits
,count(distinct ticket_id)uv
,count(distinct ip) uip
,sum(case when if_out_page= 1 and if_in_page = 1 then 1 else 0 end) bounces
,sum(case when if_out_page = 1 then 1 else 0 end) exit_visit
from kn_weblog_Detail_hour
where visit_date >= '2011-11-11' and visit_date < '2011-11-12'
group by visit_day,hh24
order by 1,2
)t1 
left join 
(
SELECT 
TO_CHAR(to_timestamp(add_time),'YYYYMMDD') visit_day
,EXTRACT(HOUR FROM to_timestamp(add_time)) hh24
,count(distinct id) order_num
,sum(ORDER_PRICE) order_amt
FROM ods_shop101_tbl_goods_order
WHERE to_timestamp(add_time)  >= '2011-11-11' AND to_timestamp(add_time)  < '2011-11-12'   
GROUP BY TO_CHAR(to_timestamp(add_time),'YYYYMMDD') ,EXTRACT(HOUR FROM to_timestamp(add_time))
ORDER BY 1,2
)t2 on t1.visit_day = t2.visit_day and t1.hh24 = t2.hh24
order by 1,2

六、   测试结果

序号

参数

取值

调整范围

结论

1

kernel.shmmax

物理内存50%

master

对GP无明显影响

2

 

小于物理内存25%

segment

过大,GP无法启动

3

kernel.shmall

物理内存

Master/segment

对GP无明显影响

4

kernel.sem

1024

Master/segment

对GP无明显影响

5

块参数

16384

Master/segment

对GP无明显影响

6

IO调度算法

 

Master/segment

对GP无明显影响

7

网络参数

 

Master/segment

对GP无明显影响

8

max_connections

200

master

GP启动正常

9

 

1200

segment

GP启动正常

10

max_prepared_transactions

300

Master/segment

GP启动正常

11

shared_buffers

400MB

master

GP启动正常

12

work_mem

160MB

global

GP启动正常

13

effective_cache_size

500MB

master

对GP无明显影响

 七、   结论

结合前面生产环境上参数优化分析,总结如下:

1、     在生产环境上max_connections和max_prepared_transactions修改导致GP无法启动的现象没有出现;

2、     测试环境上kernel.shmmax(master物理内存50%,segment物理内存25%),没有使用交换分区。之前,生产环境上,kernel.shmmax(master和 segment)均取物理内存85%,导致内存交换;

在生产环境上shared_buffers修改导致GP无法启动的现象没有出现。

八、   优化建议

可以进一步在生产环境上逐项优化。

优化方法及步骤如下:

1、 kernel.shmmax:master/standby取物理内存50%;segment取物理内存25%;

2、 max_connections(master/standby为200segment1200)

max_prepared_transactions(master/standby/segment均为300)

3、 shared_buffers:

master/standby取物理内存10%;segment取物理内存10%/实例数;

4、 块参数:16384;

5、 IO调度算法;

6、 网络参数;

7、 work_mem

本文转载自:

共有 人打赏支持
闻术苑
粉丝 63
博文 165
码字总数 68374
作品 0
济南
产品经理
私信 提问
构建统一数据分析服务【转】

对于OLAP的话题本号曾经谈论过不少次,期间也有一些观点有失偏颇,例如对基于Brute Force扫描方案的否定态度,包含Impala,Stinger/Tez,Presto等诸多手段。站在一个新的高度来看待OLAP,暴力...

强子哥哥
2016/04/11
69
0
PgSQL · 应用案例 · 经营、销售分析系统DB设计之共享充电宝

背景 共享充电宝、共享单车、共享雨伞,共享女朋友^|^,共享汽车,。。。 共享经济最近几年发展确实非常迅猛。 共享必定涉及被共享对象的管理、会员的管理等,实际上也属于一种物联网系统。 ...

阿里云RDS-数据库内核组
2017/10/10
0
0
数据湖(Data Lake)前世今生解析(上)

EMC收购视频存储设备厂商Isilon Systems完善EMC在分布式Scale-Out架构NAS技术方面的不足,近几年isilon在媒资、大数据和HPC场景得到客户的一致认可,也在去年和另外一个产品线Povital Hadoo...

hardywang
2018/07/04
0
0
大规模并行处理系统--Greenplum DB

Greenplum 之前是一家总部位于美国加利福尼亚州,为全球大型企业用户提供新型企业级数据仓库(EDW)、企业级数据云(EDC)和商务智能(BI)提供解决方案和咨询服务的公司。目前 Greenplum 已经归属...

匿名
2011/10/11
20.3K
2
从oracle往greenplum迁移,查询性能不满足要求的定位以及调优过程

一、前言 在一次对比oracle和greenplum查询性能过程中,由于greenplum查询性能不理想,因此进行定位分析,提升greenplum的查询性能 二、环境信息 初始情况下,搭建一个小的集群,进行性能测试...

yxly2008
2018/08/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

python中类方法和静态方法区别

面相对象程序设计中,类方法和静态方法是经常用到的两个术语。 逻辑上讲:类方法是只能由类名调用;静态方法可以由类名或对象名进行调用。 在C++中,静态方法与类方法逻辑上是等价的,只有一...

xiangyunyan
今天
9
0
Hibernate SQLite方言

以下代码有参考过github上国外某位大佬的,在发文的最新稳定版Hibernate上是可用的,有时间再仔细分析一下 import org.hibernate.dialect.Dialect;import org.hibernate.dialect.function.S...

CHONGCHEN
今天
4
0
CentOS 7 MariaDB搭建主从服务器

本文编写环境为CentOS7。确保关闭SELinux,关闭防火墙或者防打开指定端口。具体信息如下 #master[root@promote ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [r...

白豆腐徐长卿
今天
11
0
介绍python中运算符优先级

下面这个表给出Python的运算符优先级,从最低的优先级(最松散地结合)到最高的优先级(最紧密地结合)。这意味着在一个表达式中,Python会首先计算表中较下面的运算符,然后在计算列在表上部...

问题终结者
今天
4
0
Spring Boot 2.x基础教程:快速入门

简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot来让...

程序猿DD
昨天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部