Vertica ros和wos介绍

1.单节点的数据存储

  vertica数据存储分为两部分,一是读优存储(read-optimized store,ROS),另一个是写优存储(write-optimized store,WOS),每次更新和插入的数据临时放在WOS部分,WOS达到最大容量后,vertica将数据加载到ROS。SQL查询会访问ROS部分,并且ROS存放已经经过压缩和排序的数据,这样就做到了读写并发两不误,通过tuple mover进程定期将WOS的数据压缩排序后拷贝到ROS区域。
  ros总共有1024个sql。
 

2.选择加载方式

(1)适用sql
表元数据:CREATE TABLE 和ALTER TABLE
DML语句: COPY/ COPY FROM VERTICA,INSERT,MERGE,和UPDATE
如果表指定了加载选项,则除非DML语句另有指定,否则Vertica会将其用于所有DML操作。
 
(2)加载方式种类
指定该表上面上所有DML语句的默认记载行为,例如insert和copy。
  • AUTO(默认):最初将数据加载到WOS中,适用于较小的批量加载。
  • DIRECT:直接将数据加载到ROS容器中,适用于大容量(> 100 MB)的大容量加载。
  • TRICKLE:仅将数据加载到WOS中,适用于频繁的增量加载。
 
(3)使用例子
建表语句:
DROP TABLE IF EXISTS test.history;
CREATE TABLE test.history
(
    id int,
    version varchar(255) NOT NULL,
    description varchar(255) NOT NULL,
    update_date date NOT NULL,
    PRIMARY KEY(id)
)DIRECT;
copy语句:
COPY a FROM STDIN DIRECT;
COPY b FROM LOCAL STDIN DIRECT;
注意:避免使用DIRECT加载许多较小的数据集。这种方法导致许多ROS容器必须稍后组合。
 
全局Direct设置:
alter database default set DMLTargetDirect = 1;
show database default DMLTargetDirect;
alter resource pool tm maxconcurrency 7 plannedconcurrency 6;
alter resource pool wosdata memorysize '0%';

3.常见错误

(1)错误信息
[Vertica][VJDBC](5065) ERROR: Too many ROS containers exist for the following projections:
 
(2)错误原因
是由于过多的ROS碎片导致的,可以通过调小Tuple Mover的参数来优化,参数如下
 
参数名称
解释
默认值
MergeOutInterval
Tuple Mover在两次检查之间等待新的ROS文件合并的等待秒数。如果经常添加ROS容器,则可能需要减小此值。
600 单位:秒
MoveOutInterval
Tuple移动器在两次检查之间需要等待的秒数,该时间是检查 WOS中的新数据以将其移至 ROS的时间
300 单位:秒
 
(3)修改参数语句
SELECT SET_CONFIG_PARAMETER('MergeOutInterval',100);
SELECT SET_CONFIG_PARAMETER('MoveOutInterval',100);
(4)手动进行ros合并命令
select DO_TM_TASK ('mergeout');
 
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值