Vertica 分区表设计(续)
在上篇Vertica 分区表设计中,已经提过了Vertica的分区表创建和分区删除,但举例上并不系统,
本篇文章将系统的对分区表设计及后续的删除分区进行讲解。
概述:Vertica分区表(天和月)创建以及删除分区
1.分区表创建
Vertica分区表可以使用预定义函数创建,有特殊需求时,也可以自定义函数创建。
我这里测试均是以业务用户test登录建表: vsql -Utest
1.1 使用预定义函数创建分区表
按天分区(doy)
--按天分区(doy)
create table t_jingyu_doy(
col1 int,
col2 varchar,
col3 timestamp not null)
PARTITION BY (date_part('doy', col3));
按月分区(month)
--按月分区(month)
create table t_jingyu_month(
col1 int,
col2 varchar,
col3 timestamp not null)
PARTITION BY (date_part('month', col3));
1.2 使用自定义函数创建分区表
按天分区
--按天分区
create table t_day(
col1 int,
col2 varchar,
col3 timestamp not null)
PARTITION BY (EXTRACT(year FROM col3)*10000
+ EXTRACT(month FROM col3)*100 +
EXTRACT(day FROM col3));
按月分区
--按月分区
create table t_month(
col1 int,
col2 varchar,
col3 timestamp not null)
PARTITION BY (EXTRACT(year FROM col3)*100 +
EXTRACT(month FROM col3));
2.查询业务表的基本信息
查询业务表的基本信息:
```
--所有表
select table_schema, owner_name, table_name,
partition_expression from tables;
--未分区的表
select table_schema, owner_name, table_name,
partition_expression from tables where partition_expression='';
--分区的表
select table_schema, owner_name, table_name,
partition_expression from tables where partition_expression '';
```
3.Vertica入库测试数据
入库须知:
• 数据库字符集utf-8
• 入库文件编码格式: utf-8无BOM格式编码
• 主机系统字符集: zh_CN.UTF-8
• CRT软件字符集: utf-8
我们这里入库2年(每天1条)的测试数据供后面讲解删除分区数据用。 col3时间列是2年中每一天的时间。
入库具体方法可以参见:Vertica 业务用户指定资源池加载数据
4.删除历史分区数据
## 4.1 删除历史分区数据(使用预定义函数创建的分区表) ##
```
--按天分区(doy),删除”2015-08-01”这一时间的分区数据
SELECT DROP_PARTITION('test.t_jingyu_doy', EXTRACT('doy' FROM '2015-08-01'::date));
test=> SELECT DROP_PARTITION('test.t_jingyu_doy', EXTRACT('doy' FROM '2015-08-01'::date));
DROP_PARTITION
-------------------
Partition dropped
(1 row)
测试结论:实际删除2天的数据, 2015和2016年的这一天数据都被删除, 而且第二年不一定就是8月1日。
--按月分区(month),删除”2015-08”这一个月的分区数据
SELECT DROP_PARTITION('test.t_jingyu_month', EXTRACT('month' FROM '2015-08-01'::date));
test=> SELECT DROP_PARTITION('test.t_jingyu_month', EXTRACT('month' FROM '2015-08-01'::date));
DROP_PARTITION
Partition dropped
测试结论:实际删除2个月的数据, 2015和2016年的8月份的数据。
## 4.2 删除历史分区数据(使用自定义函数创建的分区表) ##
--按天分区,删除2015-08-01这一时间的分区数据
SELECT DROP_PARTITION('test.t_day', 20150801);
test=> SELECT DROP_PARTITION('test.t_day', 20150801);
DROP_PARTITION
Partition dropped
(1 row)
--按月分区,删除2015-08这一个月的分区数据
SELECT DROP_PARTITION('test.t_month', 201508);
test=> SELECT DROP_PARTITION('test.t_month',201508);
DROP_PARTITION
Partition dropped
<h1 id="5">Reference</h1>
本篇内容其实之前在我给公司项目组的培训中已经提过,但未在博客中整理,现在更新到博客。
附当时培训视频和资料的云盘地址:https://pan.baidu.com/s/1c2LuZSW
Vertica 分区表设计(续)的更多相关文章
- Vertica 分区表设计
Vertica数据库中的表只是一个逻辑概念. 实际存储在磁盘上的是projection. 当创建一张表,没有创建projection时,那么插入数据的时候会自动创建一个默认的projection.如果 ...
- 《c# 实现p2p文件分享与传输系统》 二、 设计 - 续(NAT穿透)
c#实现P2P文件分享与传输系统 二.设计 - 续(NAT穿透) 首先要抱歉,因为这些日子较忙,没有写文章,这个系列拖了很久,现在开始继续. 上一篇文章介绍了p2p系统Tracker Server和 ...
- 电商系统中的商品模型的分析与设计—续
前言 在<电商系统中的商品模型的分析与设计>中,对电商系统商品模型有一个粗浅的描述,后来有博友对货品和商品的区别以及属性有一些疑问.我也对此做一些研究,再次简单的对商品模型做一个介 ...
- Vertica 数据库知识汇总篇
Vertica 数据库知识汇总篇(更新中..) 1.Vertica 集群软件部署,各节点硬件性能测试 2.Vertica 创建数据库,创建业务用户测试 3.Vertica 数据库参数调整,资源池分配 ...
- Vertica集群扩容实验过程记录
需求: 将3个节点的Vertica集群扩容,额外增加3个节点,即扩展到6个节点的Vertica集群. 实验环境: RHEL 6.5 + Vertica 7.2.2-2 步骤: 1.三节点Vertica ...
- The Vertica Analytic Database:C-Store 7 Years Later笔记
1.设计目标 Vertica数据库可以说是7年之后的C-Store,在2012年发表的这样一篇论文,描述了现在基于C-Store的一部分改进,当然,Vertica借鉴了很多C-Store的思想,但并非 ...
- Vertica性能分析
Vertica的特点简单的说可以总结为:列存储.MPP架构.技术比较新.列存储本身带来了数据高度压缩的便利,MPP架构使得可以用相对廉价的PC级服务器横向扩展到较大规模(PB级),05年才问世使得它在 ...
- MaxCompute表设计最佳实践
MaxCompute表设计最佳实践 产生大量小文件的操作 MaxCompute表的小文件会影响存储和计算性能,因此我们先介绍下什么样的操作会产生大量小文件,从 而在做表设计的时候考虑避开此类操作. 使 ...
- 柯南君 :Oracle 分区技术 之 怎样支撑大数据操作?
前段时间.看了罗女士( 资深技术顾问 - Oracle 中国 顾问咨询部)关于<大批量数据处理技术的演讲>视频.感觉受益良多,结合多年的知识积累,柯南君给大家分享一下: 交流内容: 一.O ...
随机推荐
- VisualVM通过jstatd方式远程监控远程主机
配置好权限文件 [root@test bin]# cd $JAVA_HOME/bin [root@test bin]# vim jstatd.all.policy grant codebase &qu ...
- 来,给Entity Framework热热身
先来看一下Entity Framework缓慢的初始化速度给我们更新程序带来的一种痛苦. 我们手动更新程序时通常的操作步骤如下: 1)把Web服务器从负载均衡中摘下来 2)更新程序 3)预热(发出一个 ...
- salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type)
本篇引用以下三个链接: http://www.tgerm.com/2012/01/recordtype-specific-picklist-values.html?m=1 https://github ...
- 前端常用的WindowsCMD命令
前面的话 在网上找了一些关于命令提示符CMD的资料,但是很多资料都是把所有的功能罗列出来,大部分都不会用到.所以,自己把常用的CMD命令总结如下,方便查阅 操作类 help 列出所有支持的指令及说 ...
- redis 学习笔记(1)
redis持久化 snapshot数据快照(rdb) 这是一种定时将redis内存中的数据写入磁盘文件的一种方案,这样保留这一时刻redis中的数据镜像,用于意外回滚.redis的snapshot的格 ...
- QT5利用chromium内核与HTML页面交互
在QT5.4之前,做QT开发浏览器只能选择QWebkit,但是有过使用的都会发现,这个webkit不是出奇的慢,简直是慢的令人发指,Release模式下还行,debug下你就无语了,但是webkit毕 ...
- 问题记录:EntityFramework 一对一关系映射
EntityFramework 一对一关系映射有很多种,比如主键作为关联,配置比较简单,示例代码: public class Teacher { public int Id { get; set; } ...
- Spark读写Hbase的二种方式对比
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 一.传统方式 这种方式就是常用的TableInputFormat和TableOutputForm ...
- 小兔Java教程 - 三分钟学会Java文件上传
今天群里正好有人问起了Java文件上传的事情,本来这是Java里面的知识点,而我目前最主要的精力还是放在了JS的部分.不过反正也不麻烦,我就专门开一贴来聊聊Java文件上传的基本实现方法吧. 话不多说 ...
- Android—自定义开关按钮实现
我们在应用中经常看到一些选择开关状态的配置文件,做项目的时候用的是android的Switch控件,但是感觉好丑的样子………… 个人认为还是自定义的比较好,先上个效果图: