Vertica “ERROR: Too many ROS containers exist”

最近在用Vertica的时候碰到一个问题,Vertica在运行了一段时间后总是出现类似下面的错误


1

2

java.sql.SQLException: [Vertica][VJDBC](5065) ERROR: Too many ROS containers existforthe following projections:

<projection> (limit =18078, ROS files =12088, DV files =5992,newfiles =10)

碰到找个问题就不得不说说Vertica的存储机制了。Vertica在默认情况下会把新写入的数据写入到WOS(写优化)中,然后根据一定的条件(比如说一定的时间周期)再把WOS中的数据写入到ROS(读优化)中,这时ROS有可能很多都是很小数据块的碎片,这是Vertica会在一定的时间周期后把这些ROS数据块合并成大的ROS文件。

这里把数据从WOS写入到ROS的过程Vertica管它叫MoveOut操作,而把零散的ROS合并成大的ROS的过程Vertica管它叫MergeOut操作。

好了,现在来看看我们的问题吧。错误里报的是ROS太多,那可能的原因是
1. WOS写ROS太多,这个原因的原因很大的可能是每次insert/update的数据集太小,导致生成的碎片太多。
2. ROS太多,而配置的MoveOut和MergeOut的时间间隔太长,导致来不及做MoveOut和MergeOut。

好吧来看看我的应用吧
1. 针对第一个可能的原因,确实是我们的应用的需求的问题,这个目前来说我们没法改变。
2. 对于第二个可能的原因,我们查了一下Vertica的资料,在Vertica中默认的MergeOutInterval是600,MoveOutInterval是300。这两个参数可以通过下面的命令来查看


1

2

SELECTGET_CONFIG_PARAMETER(‘MoveOutInterval’);

SELECTGET_CONFIG_PARAMETER(‘MergeOutInterval’);

由于我们的应用本身会产生很多的ROS碎片,所以我们想到了是不是可以通过减小MoveOut和MergeOut的Interval来让Vertica尽快的做MoveOut和MergeOut。因此我们修改了Vertica的参数


1

2

SELECTSET_CONFIG_PARAMETER(‘MoveOutInterval’, 60);

SELECTSET_CONFIG_PARAMETER(‘MergeOutInterval’, 30);

在修改了这两个参数以后,我们的应用确实在运行了很长时间后都没有再出现上面的问题了。

其实关于这个问题,还有几个参数可以调节,具体资料可以参考
Vertica Tuple Mover Parameters

时间: 2024-11-02 02:07:55

Vertica “ERROR: Too many ROS containers exist”的相关文章

Mysql中大小写敏感问题导致的MySql Error 1146 Tabel doen’t exist错误_Mysql

MySql Error 1146 Tabel doen't exist,一般情况下是表不存在,或者表名写错了.权限问题. 今天遇到了这个问题,仔细核对几遍后,确认无误,又在phpMyAdmin里尝试select,可以查询出数据.又核对权限,确认该mysql用户具有所有权限.那这个错误是怎么回事呢?查询了一些资料后,发现如果mysql引擎不对可能会造成真实存在的表却无法访问,但是发现引擎都是myisam. 这下犯愁了,错误出在哪里呢?又找了半天,仍然无果.无辜的看着这段报错代码,发呆了半天,突然发

Error: Object INSTANCES_UTIL does not exist

Error Message Running the Create Enterprise Geodatabase geoprocessing tool on an Oracle database fails with the following errors:  "Failed to create stored procedures in the geodatabase. Error (-51)  DBMS error code: 4043  ORA-04043: object INSTANCES

自定义构建jquery插件实验(2)

//简单的 test.js ;(function($){ $.fn.getData=function(options){ return this.append(options); } })(jQuery); test.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script type='text/javascript' src='http://code.jqu

html5 canvas做的图表插件

用highchart的时候发现它是用svg来画图的,那么用canvas来做怎么样的. 以前做AS图表插件的时候,绘制图画主要用容器的Graphics对象来绘制,而canvas的context和Graphics一样,都可以用来绘制图形. 然后就试着用canvas做了这样一个东西. 具体实现如下,个人表达能力有问题,各位看官还是看源码吧,如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-T

隐藏真实下载地址防盗链的代码

要防止用户直接复制这个地址就能下载, 而必须是前一个页面跳转过来的文件(如: www.a.cn/down.asp?id=xx),才可以.比如需要用户必须登陆才可以下载. <% call downloadFile("1.gif") function downloadFile(strFile)     strFilename = server.MapPath(strFile)     Response.Buffer = True     Response.Clear     Set

一个易用的模板类。

模板 PHP代码:-------------------------------------------------------------------------------- <?phpif(!defined("__TEMPLATE_H_PHP__")){define("__TEMPLATE_H_PHP__","template.h.php");/******************** CODE START *************

利用ADODB.Stream使用浏览器下载服务器文件

ado|stream|服务器|浏览器|下载 download.asp?file=相对路径的文件就可以把这个文件下载下来 <%  2  3 call downloadFile(replace(replace(Request("file"),"\",""),"/",""))  4  5 Function downloadFile(strFile)  6 ' make sure you are on the

利用套接字机制实现Flash与数据库连接

数据|数据库|数据库连接 无论对于Java开发者还是.NET开发者来说,在Flash中创建一个数据库连接都不是件简单的事情.由于解决这一问题需要费不少的周折,所以本文中我们通过建立一个XMLSocket类来帮助实现这一技术. 一. 简介 对于一位具有传统型客户-服务器背景的开发人员来说,转入到ActionScript开发并把Flash连接到一个数据库肯定需要费不少的周折.在.NET或Java世界中,通过直接从应用程序中调用数据库,你仅需要打开一个到数据库的连接并且执行数据库操作即可:而在Flas

用PHP脚本在Linux系统上读取输入和对文件进行操作

Perl作为Linux系统命令行脚本的首选解释语言的日子一去不复返了.今天,我们有了更多的选择,包括Python.Ruby和PHP.如果你已经为网站编写PHP代码,并熟谙这种语言,那么你会发现,在命令行使用PHP的速度之快,效果之好令人惊奇. 在脚本中,任何脚本语言的一个最大功用是对文件进行操作并获取用户输入.PHP处理这些丝毫不比其它任何脚本语言逊色. 例如,利用PHP在脚本执行期间处理读取用户提供输入,使用: #!/usr/bin/php <?phpfunction read_input()