2213-定位板
Vertica
实施与运维最佳实践
?
前言
数据分布与分区
负载均衡
性能诊断与优化
o
查找耗时最长的
query
o
分析
qu
ery
的执行计划
o
使用辅助工具进行调优
Database Designer
Workload
Analyzer
内置的性能评测工具
附带的
diagnostics
工具
附带的
profile<
/p>
工具
o
一些优化经验
与
Hadoop
互访
o
从
had
oop
加载数据
o
卸载数据到
hadoop
数据加载
一些有用的管理操作
前言
在使用
vertica
的过程中,我们会总结一些很好的经验,为了能帮助大家更好地
实施项目,我们整理了其中一些实用的方法与大家分享。
数据分布与分区
数据分布,就是按照
某一列或几列,打散数据,把数据均匀的分布在各个节点
上,我们把这样的列称为分布键
。对于大表,要记得使用。所以
分布键是主键
最好,也就是说分布键数据不重复的值越多,越适合做
hash.
分布键不要用
LONG VARBINARY and
LONG VARCHAR
类型的字段。相关
语句:
SEGMENTED BY HASH(pk_col1,pk_col2) ALL
NODES
对于小表,比如维表,可以选择不分布,使用
UNSEGMENTED ALL NODES
让每个节点都有一个副本。这样,大表
(事实表)与维表的
join
操作都可以在
各节点本地完成。
vertica
要求表的分区数不超过
1024
,因为一个分区就是一个文件
。一般使用
年、年月或者月这种时间跨度相对较大的做分区,不建议用日期分区。
#
带分布键和分区的建表
ddl
CREATE TABLE fact_test(
userid_ varchar(255) not null,
f2 float,
f7 float,
f12 float,
djzclx int,
xzqh int,
bbq_ int not null
) SEGMENTED BY HASH(userid_,bbq_) ALL
NODES
PARTITION BY bbq_;
#
多副本的建表
ddl
CREATE
TABLE dim_test (
id_ int,
caption_ varchar(255)
)
UNSEGMENTED ALL NODES;
负载均衡
在
Vertica7
以前的版本中,
Vertica
是通过
Linux
的
Vir
tual IP
来实现连接的负
载均衡,但是在
Vertica7x
以后,
Vertica
本身提供了连接的负载均衡功能,这
个功能用起来也是非常方便。
服务器端设置:
#
启用负载均衡
SELECT
SET_LOAD_BALANCE_POLICY('ROUNDROBIN');
#
查看功能是否开启
SELECT GET_LOAD_BALANCE_POLICY();
#
禁用负载均衡
SELECT SET_LOAD_BALANCE_POLICY('NONE');
客户端设置:
#
< br>在
url
中加入
Connect
ionLoadBalance
参数
#
或者在
j
ava
代码中加入参数
(
测试负载均衡功能是否生效
#
每次显示的节点名会变化
select node_name, client_hostname from
sessions;
性能诊断与优化
数据库的调优工作,
实际上是一个解决问题的过程,而解决问题,第一步就是
需要定位问题。找到问题的手段
多种多样,可以通过分析程序、监控生产上服
务器的性能、定期生成数据库的负载报告等
手段。这里,我们给大家分享其中
一些比较好的方法。
查找耗时最长的
query
vert
ica
内置的系统视图中,有些用于监控
query
或
session
的运行状态。例如:
QUERY_PROFILES
,
query_r
equests
等。我们可以通过这些视图统计出
query<
/p>
的时长,次数等信息,借此找出耗时最长或者执行最频繁的
que
ry
。比如
QUERY_PROFILES
视图:
#
统计最耗时的
query top10
SELECT query,count(*) as
times,avg(query_duration_us)/1000000 as
avg_duration_s,sum(query_duration_us)/1000000 as
total_duration_s FROM QUERY_PROFILES WHERE
query_type = 'QUERY' and
query_start>='2015-02-13' group by query ORDER BY
avg_duration_s
DESC limit 10;
分析
query
的执行计划
p>
使用
profile
工具,分析具体的
p>
sql
语句
#
假设
sql
语句是:
< br>select * from t
profile select *
from t;
得到这个语句的
transcation_i
d
和
statement_id
,然后通过查询系统表
query_
plan_profiles
获得语句实际的执行计划和各个阶段的执行时间。
#
查询这个
sql
语句的执行计划
select
cast(g_time as varchar),t.* from
query_plan_profiles t where
transaction_id='45893' and statement_id
=1 order by path_id,path_line_index
上述结
果会将
sql
语句的每个阶段的执行耗时和执行过程呈现出来。
通过这个
结果,我们可以知道语句中的哪些操作是最影响性能的,然后针对这些问题尝<
/p>
试一些优化。
使用辅助工具进行调优
vertic
a
提供了一些辅助工具,能向用户提供一些优化建议,用户可参考这些建
议,实施相关优化调整。这里介绍几个比较好的工具:
Database Designer
DBD =
Database Designer
,是
Vertica
p>
数据库优化中最主要的原生工具。主要
用于帮助用户创建全面设计,
为数据库中的表创建投射,分析指定的
query
,
更新统计信息等。
首先运行
admintools
工具
,
按下
面步骤依次执行:
1.
2.
3.
4.
5.
6.
选择
选
择
选择需要分析的数据库
输入
dbd
的输出目录
输入
dbd
的名字,随意起
选择
dbd
的设计类型,
有两个单选项,根据实际需求选择
7.
选择需要设计的
shema(s)
8.
design]
这里有三个复选项,推荐先去掉
Deploy design
< br>,之后可以手工
应用
dbd
的建
议
9.
输
入业务常用到的
sql
查询语句,使
得
dbd
的分析更有针对性
10.
这里默认即可
11.
performance|Query
performance(larger footprint)|Load
performance(smaller
footprin
t)]
这里有三个单选项,根据实际需求选择,
一般选择第一项
,均衡兼顾查询和加载性能
12.
执行
dbd
13.
完成之后,可根据屏幕提示执行
xxx_
脚本进行部署。
当我们需要针对
query
进行优化时,可以使
用
DBD
进行物理设计。
Workload Analyzer
WA
< br>是一个智能监控
query
性能的工具。通过分析
query
执行时的资源使用、
负载等,为用
户提供优化建议。
#table
为<
/p>
query
所引用的库表
select analyze_workload('');
#
优化建议在
tuning_command
列
当我们需要对库表进行优化时,则可以使用
Workload
Analyzer
内置的性能评测工具
硬件也是影响性能的一个重要因素,我们需要对服务器硬件的性能有清楚的了
解,以
确定是是否存在系统瓶颈。
vertica
内置了一些测试工具
用于检测硬件资
源的性能。使用如下工具启动相关的测试工具
#
每个节点都执行如下测试
/opt/vertica/bin/vioperf
--
磁盘性能评估
/opt/vertica/bin/vnetperf
--
网络性能评估
/opt/vertica/bin/vcpuperf
--
处理器性能评估
2213-定位板
2213-定位板
2213-定位板
2213-定位板
2213-定位板
2213-定位板
2213-定位板
2213-定位板
-
上一篇:表结构(综合查询)
下一篇:时间序列分析基于R_习题答案