Vertica以优化查询的格式将数据存储在Projection 中。与物化视图类似,Projection 将结果集存储在磁盘上,而不是每次在查询中使用它们时都对其进行计算。Vertica会在数据更新或插入新数据时自动刷新这些结果集。
有时您可能需要刷新投影,以确保Projection中存在的是表中最新的数据。例如,当您从现有表创建Projection时,在执行刷新之前,Projection不会使用最新数据进行更新。
刷新Projection也可以提高您的Ancient History Mark。这缩短了AHM和当前时期之间的间隔,从而减少了catalog中使用的内存量。
为了最大程度地减少使用和刷新Projection时可能遇到的某些风险,请注意以下几点:
确保您有足够的临时空间和磁盘空间以使Projection成功刷新。
创建具有合理排序的Projection。
在大表上使用分段Projection。
创建Projection时指定正确的编码。
磁盘空间
如果没有足够的磁盘空间,则Projection可能需要很长时间才能刷新。通常,磁盘空间是Projection大小的2到3倍,可以缓解任何刷新问题。
其他可能影响Projection性能的空间问题包括:
TEMP空间中没有足够的空间。
没有足够的空间,因为表太大,并且Projection刷新会复制数据。
如果由于磁盘空间不足而遇到问题,则必须执行回滚,这将结束当前事务并丢弃在事务期间发生的所有更改。有关更多信息,请参见创建和回滚事务。
您还可以使用以下系统表监视磁盘空间:
-
PROJECTION_STORAGE
-
DISK_STORAGE
-
COLUMN STORAGE
合理的排序顺序
选择合理的排序顺序可以帮助您实现最佳查询性能。如果您的查询包含GROUP BY子句,JOIN或其他谓词,则最好将这些子句中指定的列放在排序顺序的前面。如果没有其他有关如何对数据进行排序的标准,则在高基数列之前先对最低基数列进行排序会更有效。
首先按具有最少不同值的列进行排序还具有减少磁盘空间的好处,因为该列的压缩效率更高。
K-safety 保证 Vertica数据库集群的容错能力。K代表数据库集群中复制数据的数量。这些副本允许其他节点接管任何故障节点的查询处理。
在Projection中实施K-Safe会有所不同,具体取决于您是使用分段Projection还是未分段Projection。
对于K-safe数据库中的分段Projection,Vertica为此Projection创建了多个buddy projection,并将它们分布在整个群集的不同节点上。
您可以选择不对维表进行segment,因为它们相对较小。在这种情况下,请设计一个K-Safe数据库,以便在不对所有群集节点进行分段的情况下复制其维度表的Projection。
创建Projection时,您可以设置K-Safe值。
文章目录How Vertica Works with ProjectionsHelpful TipsSegmentationEncodingMonitoring ProjectionsOther Projection TasksRefreshing ProjectionMerging ProjectionMaking Projections K-Safe本文翻译自:Best Practic...
在之前的博文《vertcia介绍》中有讲到,在
vertica
中,表只是一个逻辑上的概念,其真实数据其实是存储在一个个的
projection
中。
projection
s以
优化
查询执行的格式存储数据。与物化视图类似,
projection
s将结果集存储在磁盘上,而不是在每次查询时计算它们。您可以使用新数据或更新数据刷新
projection
s。
projection
s提供以下好处:
1.压缩和编码数据以减少...
Vertica
是一款基于列存储的MPP(massively parallel processing)架构的
数据库
。它可以支持存放多至PB(Petabyte)
级别的结构化数据。
1)列式存储
vertica
以列格式存储数据, 以便在查 询时获得
最佳
性能。相比基于行的存储, 列存储可减少磁盘I/O, 非常适合读取 密集型工作负载
1、 使用分区
2、 定义主键外键
3、 默认的数字类型长度可能比实际需要的大。例如:NUMBERC 该类型默认的长度是38位,如果实际的长度比这个小,那你建表的时候最好加上适合的长度。
4、 对于一个True/False值,Boolean类型...
Vertica
数据库
的数据是存放在投影(
projection
)里,
vertica
数据库
在对象创建的时候会自动创建一个supper
projection
, supper
projection
主要实现让所有数据查询可见。
为了获得最好的性能和压缩比,
vertica
建议创建自己的投影。
1 ...
从多个博主那里简单学习一下下,复制粘贴的文字,粗略了解
Vertica
是一款基于列存储的MPP(massively parallel processing)架构的
数据库
。它可以支持存放多至PB(Petabyte)级别的结构化数据。
是由关系
数据库
大师Michael Stonebraker(2014 年图灵奖获得者)所创建,于2011年被惠普收购并成为其核心
大数据
平台软件
Vertica
采用无共享的MPP 架构,基于工业标准的x86 服务器,拥有高可扩展性。
Vertica
集群中的所有节点100
Vertica
提供了三种类型的投影,用于存储从聚合函数或表达式返回的数据:
包含表达式的投影:使用投影中包含从锚表列计算结果的列。
实时聚合投影:投影钟包含具有从其锚表中的列的聚合值的列。还可以定义包含用户定义的转换函数的实时聚合投影。
Top-K投影:实时聚合投影的类型,...
vertica
这一mpp型
数据库
还是有很多不同的地方,
vertica
的表就相当于一个’视图‘一样并不存储数据,数据都在其对应的
projection
中,由于这些
projection
事记录在
vertica
系统信息里面的,记录在
vertica
系统信息里面的东西修改很困难,所以涉及此类问题我们一般都不得不重建表。
这里要提到若是表的某个字段未写入系统信息得情况,例如若某个字段没有在
projection
中
进入
vertica
的sql环境:vsql -d dbname -w passwd
创建序列:CREATE SEQUENCE sq1 MAXVALUE 5000 START 1;
使用序列:SELECT NEXTVAL('my_seq');删除序列:DROP SEQ