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. 【读书笔记】知易行难,多实践

    前言: 其实,我不喜欢看书,只是喜欢找答案,想通过专业的解答来解决我生活的困惑.所以,我听了很多书,也看了很多书,但看完书,没有很多的实践,导致我并不很深入在很多时候. 分享读书笔记: <高效1 ...

  2. 【运维学习笔记】生命不息,搞事开始。。。

    001生命不息,搞事不止!!! 这段时间和hexesdesu搞了很多事情! 之前是机械硬盘和固态硬盘的测速,我就在那默默的看着他一个硬盘一个机械测来测去. 坐在他后面,每天都能看到这位萌萌的小男孩,各 ...

  3. SSAN 关系抽取 论文笔记

    20210621 https://zhuanlan.zhihu.com/p/353183322 [KG笔记]八.文档级(Document Level)关系抽取任务 共指id嵌入一样 但是实体嵌入的时候 ...

  4. pandas以前笔记

    # -*- coding: utf-8 -*- """ Created on Sat Jul 21 20:06:20 2018@author: heimi "& ...

  5. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  6. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  7. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  8. 王道考研 计算机网络笔记 第六章:应用层

    本文基于2019 王道考研 计算机网络: 2019 王道考研 计算机网络 个人笔记总结 第一章:王道考研 计算机网络笔记 第一章:概述&计算机网络体系结构 第二章:王道考研 计算机网络笔记 第 ...

  9. 王道考研 计算机网络笔记 第五章:传输层

    本文基于2019 王道考研 计算机网络: 2019 王道考研 计算机网络 个人笔记总结 第一章:王道考研 计算机网络笔记 第一章:概述&计算机网络体系结构 第二章:王道考研 计算机网络笔记 第 ...

最新文章

  1. iOS OpenCV 图像灰度处理
  2. 这一年,宇宙“面目”愈发清晰
  3. epoll 的accept , read, write
  4. Linux 常用命令与设置
  5. 游戏服务器端引擎——DogSE的设计
  6. 2008铁路旅客列车时刻表_天津到新沂汽车卧铺大巴车长途汽车发车时刻表
  7. navcat定时备份mysql_Linux实现MYSQl数据库的定时备份
  8. 使用jRebel在IntelliJ IDEA 中进行 Java 热部署
  9. Linux学习笔记4.4-Linux重定向
  10. R语言正则表达式[stringr package]
  11. ×××病毒分析工具集之File Format Identifier v1.0
  12. 【java笔记】map集合
  13. 阿里无线11.11:手机淘宝移动端接入网关基础架构演进之路
  14. php input样式,input能改变css样式吗
  15. solidworks迈迪设计宝_机械入门|那些看起来很牛X的机械结构,是如何设计的?...
  16. 门诊电子处方软件免费版本2.3
  17. 分享一个2.4G无线麦克风音频接收器的成功案例
  18. AAAI 2021论文:利用深度元学习对城市销量进行预测
  19. cluster_acc计算
  20. 如何服务器登录 MySQL

热门文章

  1. 松下MCA H1具体应用模式
  2. Midjourney之logo设计(建议收藏)
  3. 华为鲲鹏处理器安装conda
  4. 嵌入式Linux 时间同步 gpsd+chrony
  5. 违反敬业限制义务!程序员赔偿金额达90余万
  6. 红旗linux v11预览版下载,红旗Linux V11社区预览版将发布 :UI风格+兼容面广
  7. css中使用iconmoon图标
  8. 数学学位给予我的财富:与数字无关,与生活有关
  9. 微波笔记1—怎么去理解dB,dBm,dBc,dBd,dBi
  10. linux tail 命令查看日志