GBase 8a将Hash分布表转成随机分布表的方法

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
PolarDB Agent Express,2核4GB
RDS AI 助手,专业版
简介: GBase 8a将Hash分布表转成随机分布表的方法

一张id为分布列的hash分布表。

gbase> create table t_hash(id int, name varchar(100))distributed by('id');
Query OK, 0 rows affected (Elapsed: 00:00:00.66)

gbase> show create table t_hash;
+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t_hash | CREATE TABLE "t_hash" (
"id" int(11) DEFAULT NULL,
"name" varchar(100) DEFAULT NULL
) ENGINE=EXPRESS DISTRIBUTED BY('id') DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace' |
+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)

重建表
该方法适合所有版本,无任何风险。

新建一张表,表结构与hash分布表一样,但去掉hash分布列

create table t_nohash(id int, name varchar(100));
insert into t_nohash select * from t_hash;
rename table t_hash to t_hash_BAK;
reanem table t_nohash to t_hash ;
如上的rename操作确认所有业务正常后,可以考虑删除t_hash_BAK表以便节省空间。

删除hash列关键字
该方法在9.5的手册里出现,86未注意,但预计能用。

gbase> drop distributed column on t_hash;
Query OK, 0 rows affected (Elapsed: 00:00:00.02)

gbase> show create table t_hash;
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
| t_hash | CREATE TABLE "t_hash" (
"id" int(11) DEFAULT NULL,
"name" varchar(100) DEFAULT NULL
) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace' |
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)

相关文章
|
SQL 索引
如何删除表中的重复记录只保留其中一条?
如何删除表中的重复记录只保留其中一条?
555 0
csv 如果是utf-8 那么excel打开的时候为啥是乱码
csv 如果是utf-8 那么excel打开的时候为啥是乱码
1320 0
|
NoSQL Java Redis
Java中使用RedisTemplate根据前缀获取key列表
我们在使用 Redis 的时候,会需要获取以某个字符串开头的所有 key
1556 0
|
数据挖掘 BI 定位技术
南大通用GBase 8s 高级分组查询 —— GROUP BY ROLLUP介绍
本文详细介绍了GBase 8s数据库中GROUP BY ROLLUP的高级分组查询功能,涵盖基本概念、语法结构、应用示例及使用场景。ROLLUP支持多维度数据汇总,适用于销售分析、财务报表和用户统计等领域,提升数据汇总的灵活性与便捷性。
|
敏捷开发 测试技术
敏捷开发方法管理项目快速迭代,适应变化
Leangoo领歌是一款永久免费的专业敏捷开发管理工具,也提供私有部署。国产软件,提供端到端敏捷研发管理解决方案,包括小型团队敏捷开发,规模化敏捷SAFe,Scrum of Scrums大规模敏捷,涵盖敏捷需求管理、任务协同、进展跟踪、缺陷管理、统计度量等。提供了不同视角的统计,例如:进度统计、燃尽图、团队速率、任务分布、缺陷分布、测试用例分布等等,实时掌握项目状态及进展。
|
XML 安全 Java
Spring AOP—深入动态代理 万字详解(通俗易懂)
Spring 第四节 AOP——动态代理 万字详解!
614 24
|
SQL 数据库
gbase8a 公用表表达式(CTE)语法介绍
gbase8a 公用表表达式(CTE)语法介绍
|
Ubuntu Linux Apache
在Linux中,如何使用logrotate命令管理日志文件?
在Linux中,如何使用logrotate命令管理日志文件?
|
前端开发 JavaScript Java
招聘信息管理|基于SpringBoot招聘信息管理系统
招聘信息管理|基于SpringBoot招聘信息管理系统
700 1
|
前端开发 API Python
如何在Python中接收前端POST上传的文件
如何在Python中接收前端POST上传的文件
1744 2