暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8a GDCA认证之库表管理

原创 丽芳 2021-07-08
1415

一、DATABASE操作语法

1、创建数据库
CREATE DATABASE [IF NOT EXISTS] database_name;
2、删除数据库
DROP DATABASE [IF EXISTS] database_name;
3、指定当前数据库
USE database_name;
4、查询现有数据库
SHOW databases;
5、查询当前数据库
select database();

二、TABLE类型和操作语法

1、表类型
  • 复制表
  • 随机分布表:数据均匀分布,需要遍历所有节点
  • hash分布表:不保证数据均匀分布,确定性分布可预知
2、设计原则
  • 大表推荐建成hash分布表
  • 小表建成复制表
  • 频繁跟其他表做等值join连接的表建成复制表
3、创建表
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] [database_name.]table_name
(column_name data_type [,column_name data_type][NOT NULL|NULL][DEFAULT default_value][COMPRESS(数值)][COMMENT])[REPLICATED|DISTRIBUTED BY ('column_name')][COMPRESS(数值型,字符型)][COMMENT]

注:查看COMMENT备注信息可用SHOW CREATE TABLE table_name和SHOW_FULL COLUMNS FROM table_name语句。
COMPRESS压缩方式,数值型有0、1、5,字符型有0、3、5。0表示不压缩,1表示对数值型深度压缩,3表示对字符型深度压缩,5表示轻度压缩

4、分布表
  • 默认创建的表是随机分布表,数据平均分布在集群的所有运算节点,每个节点只保留部分表数据。
  • hash分布表能实现相同数据在同一节点上,查询速度快,但是有数据倾斜的风险,大表建议建成hash分布表。hash分布列选取原则和限制:
    • 表中某列常用于JOIN等值关联
    • 通常是等值查询的列,使用频率高
    • 做group by操作时,分组字段
    • 重复值较少的列
    • 只支持INT,BIGINT,varchar,decimal数据类型
    • 不允许进行update操作
    • 可选取多列为分布列,最多可支持10列
5、复制表
  • 存在于各个节点上,每个节点都有相同的表和数据
  • 使用REPLICATED关键字来创建复制表
  • 不用拉表即可实现本地运算,效率高
  • 小表(维度表)可以被创建成复制表
  • 频繁JOIN查询的表可被创建成复制表
6、临时表
  • 使用TEMPORARY关键字来创建临时表
  • 在当前连接中有效,连接关闭后表自动被删除
  • 可以是随机分布表、hash分布表、复制表中的任意一种
  • 支持除ALTER之外的所有DDL及DML操作
  • 不能被备份
7、表复制操作

(1)表结构和数据复制

CREATE TABLE table_name [REPLICATED][DISTRIBUTED BY][AS]SELECT...;

(2)表结构复制

  • 根据列定义创建新的表结构
CREATE TABLE table_name [REPLICATED][DISTRIBUTED BY][AS]SELECT...limit 0;
  • 只创建表结构,目标表和源表类型一致
CREATE TABLE table_name2 LIKE table_name1;
8、修改表操作
ALTER TABLE [ADD...]|[CHANGE...]|[MODIFY...]|[DROP...]|[RENAME...]|[SHRINK SPACE]|[ALTER...COMPRESS...]

微信图片_20210708224503.png
注:不支持改变列类型、列属性、表字符集,varchar类型可改变长度只能改大不能改小。

       字段类型的修改方法:增加新列—>update新列值—>移动新列到指定位置—>老列重命名—>新列重命名—>删除老列
微信图片_20210708224415.png

9、预租磁盘
  • 预先批量分配磁盘块,尽量保证列的DC数据文件磁盘块连续,在顺序读取列DC数据时,有助于性能提升
  • 创建表时,可以指定表的自动扩展大小
  • 预租空间大小在[1M,2G]范围内

操作语法:

  • 创建预租磁盘空间
CREATE TABLE [IF NOT EXISTS] table_name (col_type) AUTOEXTEND ON NEXT NUM[M/G];
  • 修改预租磁盘空间
ALTER TABLE table_name AUTOEXTEND ON NEXT NUM[M/G];
  • 关闭预租磁盘空间
ALTER TABLE table_name AUTOEXTEND OFF;
最后修改时间:2021-07-08 23:06:31
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论