首页 > 数据库 >pg 数据库和表

pg 数据库和表

时间:2022-12-10 10:33:12浏览次数:83  
标签:和表 name 分区 视图 ALTER 分区表 pg 数据库

创建数据库

语法 参数 参数作用
create database db_name with
owner
template 使用数据库模板名
encoding
allowconn 默认为true 是否允许连接
connlimit 限制连接数,默认没有限制
istemplate 是否为模板库

删除数据库

语法 参数 参数作用
drop databse if exists database_name

修改数据库

语法 参数 参数作用
ALTER DATABASE name RENAME TO new_name; 改名
ALTER DATABASE name OWNER TO new_owner; 修改所有者
alter database name with ... 修改数据库选项
ALTER DATABASE name SET TABLESPACE new_tablespace; 修改数据库表空间
ALTER DATABASE name SET configuration_parameter FROM CURRENT; 修改数据库配置文件

创建表

选择column数据类型

  • 最小的空间存储数据
  • 对数据范围的约束

设置table和column约束

  • 检查约束 check
  • 非空约束
  • 唯一约束
  • 主键约束
  • 外键约束(不支持)

选择表的分布策略

  • 考略因素

    • 平坦的数据分布:大表之间关联的某个唯一性较高的字段
    • 本地操作与分布式操作
    • 平坦的查询处理

声明分布键

  • distributed by ;distributed randonly;distributed replicaied

选择表的存储类型

  • 堆存储

  • 追加优化存储 ao

    • 创建ao appendoptimized=true
    • 选择行存,列存crientation=true 1.更新操作:行存heap表 2.insert操作:行 3.查询column多:行,单字段,列 4.表中字段数 5.压缩,列
    • 使用压缩 compresstype='' compresslevel=5 113页

表分区

是否要分区原则

  • 表足够大,每个分区在每个instance上数据量在100-1000万
  • 查询条件是否满足分区条件
  • 数据仓库是否要滚动历史数据
  • 某个规则下的数据是否可以均匀拆分

创建分区表

  • 时间范围分区 rangge

    • 考虑最细的颗粒进行分区
  • 数字范围分区 range

  • 定义列表分区表 list

    • 多个column组合(范围分区不允许)

插入数据到分区表

  • 非叶子分区没有数据,数据在最底层,不能匹配添加到默认分区

验证分区策略

  • 使用 explain 查看sql执行计划

分区选择性诊断

维护分区表

序列 ?

特殊的单行表

创建序列

  • 字段类型为serial
  • create sequence

索引

视图

视图就是一个sql

创建视图

  • create view name as select...

删除视图

  • drop view name

物化视图

  • 将查询结果持久化为数据文件,不会刷新,只能通过refresh materialized view 刷新数据

标签:和表,name,分区,视图,ALTER,分区表,pg,数据库
From: https://www.cnblogs.com/braveman1021/p/16970897.html

相关文章