1. 程式人生 > 其它 >pg 資料庫物件

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
  • 非空約束
  • 唯一約束
  • 主鍵約束
  • 外來鍵約束(不支援)

定義主鍵

  • 可以選擇一列或者多列
  • 生成主鍵:
    1.將主鍵設定成 seial

定義外來鍵

  • 資料完整性

選擇表的分佈策略

  • 考略因素

    • 平坦的資料分佈:大表之間關聯的某個唯一性較高的欄位
    • 本地操作與分散式操作
    • 平坦的查詢處理

宣告分佈鍵

  • 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 重新整理資料