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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 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)

相关文章
|
7月前
|
存储 算法 Java
算法系列--哈希表
算法系列--哈希表
42 0
|
7月前
|
存储 分布式计算 固态存储
starrocks导入性能和分区分桶介绍
starrocks导入性能和分区分桶介绍
starrocks导入性能和分区分桶介绍
|
7月前
GEE——土地利用分类种两个矢量集合中不同列进行相减的方式(利用join进行连接处理)
GEE——土地利用分类种两个矢量集合中不同列进行相减的方式(利用join进行连接处理)
84 2
|
存储 机器学习/深度学习 自然语言处理
398. 随机数索引 :「哈希表预处理」&「蓄水池抽样」
398. 随机数索引 :「哈希表预处理」&「蓄水池抽样」
|
关系型数据库 数据库 索引
|
SQL 存储 索引
sql server 索引阐述系列七 索引填充因子与碎片
原文:sql server 索引阐述系列七 索引填充因子与碎片 一.概述     索引填充因子作用:提供填充因子选项是为了优化索引数据存储和性能。 当创建或重新生成索引时,填充因子的值可确定每个叶级页上要填充数据的空间百分比,以便在每一页上保留一些剩余存储空间作为以后扩展索引的可用空间,例如:指定填充因子的值为 80 表示每个叶级页上将有 20% 的空间保留为空,以便随着向基础表中添加数据而为扩展索引提供空间。
1128 0
|
SQL 索引 Perl
[20171227]表的FULL_HASH_VALUE值的计算2
[20171227]表的FULL_HASH_VALUE值的计算2.txt --//上午做了测试,得出结论表的FULL_HASH_VALUE计算就是table_name.
1015 0
|
Oracle 关系型数据库 Perl
[20171227]表的FULL_HASH_VALUE值的计算
[20171227]表的FULL_HASH_VALUE值的计算.txt --//sql_id的计算是使用MD5算法进行哈希,生成一个128位的Hash Value,其中低32位作为HASH VALUE显示,SQL_ID则取了后64位。
1156 0