Hologres笔记
Hologres笔记
一、常用命令
-- 创建内部表
begin;
create table [if not exists] [schema_name.]table_name(id bigint primary key,b text,ds text,
)
partition by list(ds);
commit;-- 创建子表
create table if not exists table_name_date_202101 partition of table_name for values in ('202101');-- 创建外部表
CREATE FOREIGN TABLE odps_students (id bigint,b text,ds text,
)
SERVER odps_server
OPTIONS (project_name 'public_data', table_name 'oracle2odps_cust');-- 删除表
DROP TABLE [ IF EXISTS ] table_name [, ...];-- 删除外部表
DROP FOREIGN TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]-- 修改表名
ALTER TABLE table_name RENAME to new_table_name;-- 修改外部表名
ALTER FOREIGN TABLE [ IF EXISTS ] name RENAME TO new_name;-- 增加列
ALTER TABLE IF EXISTS table_name ADD COLUMN new_column_name data_type;
ALTER TABLE IF EXISTS table_name ADD COLUMN col_add_1 data_type, ADD COLUMN col_add_2 TEXT IF NOT EXISTS col_add_2 data_type;-- 给表增加注释
COMMENT ON TABLE table_name IS 'my comments on table table_name.';-- 给列增加注释
COMMENT ON COLUMN table_name.col1 IS 'This my first col1';-- 给外部表增加注释
COMMENT ON FOREIGN TABLE foreign_table IS ' comments on my foreign table';-- 查询执行计划
explain querysql;-- 查询表所在的组名
select property_value from hologres.hg_table_properties where table_name = '表名' and property_key = 'table_group';-- 查询对应表组的shard count
select * from hologres.hg_table_group_properties where tablegroup_name = '组名' and property_key = 'shard_count';
-- 获取当前用户Account ID
SELECT current_user;-- 获取当前用户的阿里云显示名称
SELECT user_display_name(current_user);-- 获取所有用户的阿里云显示名称
SELECT user_display_name(rolname) FROM pg_roles;
-- UNION
返回位于一个或者两个结果集中的全部行-- INTERSECT
返回同时位于两个结果集中的所有行-- EXCEPT
返回位于第一个结果集但不在第二个结果集中的行注:在所有三种情况下,重复行都会被消除(除非指定ALL)。
二、索引
2.1 存储类型设置
call set_table_property('table1','orientation','[row|colume]');行存适用于高QPS的基于primary key的点查询,例如where pk=abc,其余场景都应该选用列存方式。
2.2 聚簇索引 Clustering key
call set_table_property('table1','clustering_key','a');
or
call set_table_property('tbl', 'clustering_key', 'a:desc,b:asc');对建立索引数据进行排序,建立聚簇索引能够加速用户在索引列上的range和filter查询
例:select sum(a) from table1 where a > 100 and a < 200;
注:desc和asc表名构建索引时的排序方式,默认为asc。clustering key创建的时候数据类型不能为float/double,每个表最多只有一个clustering key
2.3 分段键Segment Key
call set_table_property('table1','segment key','ds');分段键帮助Hologres进行一些文件的快速筛选和跳过。指定分段键,当查询条件包含分段列时,查询可以通过segment key快速找到相应数据对应的存储位置。
例:select sum(a) from table1 where ts > '2020-01-01' and ts < '2020-03-02'
注:segment key要求按照数据输入自增,一般只有时间类型的字段(timestamptz)适合设置为segment key,其他场景基本不需要设置。只有列存表支持分段键设置。
2.4 比特编码列bitmap columns
call set_table_property('table1','bitmap key','ds');指定比特编码列使Hologres会在这些列上构建比特编码,相当于把数据与对应的行号做一个映射
例:select * from table1 where a = 100;
注:bitmap可以对segment内部的数据进行快速过滤,因此建议把filter条件的数据建成比特编码。目前Hologres会默认所有text列都会被隐藏式地设置到bitmap_columns中。但是只有列存表支持比特编码列
2.5 字典编码列设置
call set_table_property('table1','dictionary_encoding_columns','b');字典编码可以将字符串的比较转换成数字的比较,加速group by查询
例:select sum(a) from table1 group by b;
注:不建议将基数高的列建为字典编码列,会导致查询性能变差。目前Hologres会默认所有text列都会被隐藏式地设置到bitmap_columns中。但是只有列存表支持比特编码列
2.6 分部键distribution key
call set_table_property('table1','distribution key','b');指定分布列,数据将按照指定列,将数据shuffle到各个shard,同样的数值肯定会在同样的shrad中。
例:select count(1) from tmp1 join tmp2 on tmp1.a = tmp2.b
注:对于有pk的表,其分布键默认就是pk,如果不想pk字段作为分布键,可以指定pk字段的子集,但是不能随意指定。可以通过shard_count来指定表的shard数,如果不指定的话每个数据库都有一个默认的shard数,一旦指定了一个表的shard数,其他的表如果想要和这个表做local join,就必须指定colcate with这个表。
2.7 数据生命周期管理time_to_live_in_seconds
call set_table_property('table1','time_to_live_in_seconds','96400');管理数据的声明周期,默认时间是秒,必须是非负数字类型。表数据的TTL并不是精确的时间,当超过设置的TTL后,系统会在某一个时间自动删除数据,因此业务逻辑不能强依赖TTL,以免带来不必要的损失时
三、函数
1、常用函数
2、函数转换
1.nullif(num,0)
如果num为null就显示为0,不为空就显示为num2.cast(num as bigint)
将num转换成bigint类型
Hologres笔记相关推荐
- 【读书笔记】知易行难,多实践
前言: 其实,我不喜欢看书,只是喜欢找答案,想通过专业的解答来解决我生活的困惑.所以,我听了很多书,也看了很多书,但看完书,没有很多的实践,导致我并不很深入在很多时候. 分享读书笔记: <高效1 ...
- 【运维学习笔记】生命不息,搞事开始。。。
001生命不息,搞事不止!!! 这段时间和hexesdesu搞了很多事情! 之前是机械硬盘和固态硬盘的测速,我就在那默默的看着他一个硬盘一个机械测来测去. 坐在他后面,每天都能看到这位萌萌的小男孩,各 ...
- SSAN 关系抽取 论文笔记
20210621 https://zhuanlan.zhihu.com/p/353183322 [KG笔记]八.文档级(Document Level)关系抽取任务 共指id嵌入一样 但是实体嵌入的时候 ...
- pandas以前笔记
# -*- coding: utf-8 -*- """ Created on Sat Jul 21 20:06:20 2018@author: heimi "& ...
- PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call
您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...
- 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 王道考研 计算机网络笔记 第六章:应用层
本文基于2019 王道考研 计算机网络: 2019 王道考研 计算机网络 个人笔记总结 第一章:王道考研 计算机网络笔记 第一章:概述&计算机网络体系结构 第二章:王道考研 计算机网络笔记 第 ...
- 王道考研 计算机网络笔记 第五章:传输层
本文基于2019 王道考研 计算机网络: 2019 王道考研 计算机网络 个人笔记总结 第一章:王道考研 计算机网络笔记 第一章:概述&计算机网络体系结构 第二章:王道考研 计算机网络笔记 第 ...
最新文章
- iOS OpenCV 图像灰度处理
- 这一年,宇宙“面目”愈发清晰
- epoll 的accept , read, write
- Linux 常用命令与设置
- 游戏服务器端引擎——DogSE的设计
- 2008铁路旅客列车时刻表_天津到新沂汽车卧铺大巴车长途汽车发车时刻表
- navcat定时备份mysql_Linux实现MYSQl数据库的定时备份
- 使用jRebel在IntelliJ IDEA 中进行 Java 热部署
- Linux学习笔记4.4-Linux重定向
- R语言正则表达式[stringr package]
- ×××病毒分析工具集之File Format Identifier v1.0
- 【java笔记】map集合
- 阿里无线11.11:手机淘宝移动端接入网关基础架构演进之路
- php input样式,input能改变css样式吗
- solidworks迈迪设计宝_机械入门|那些看起来很牛X的机械结构,是如何设计的?...
- 门诊电子处方软件免费版本2.3
- 分享一个2.4G无线麦克风音频接收器的成功案例
- AAAI 2021论文:利用深度元学习对城市销量进行预测
- cluster_acc计算
- 如何服务器登录 MySQL