pg 資料庫物件
阿新 • • 發佈:2022-12-10
建立資料庫
語法 | 引數 | 引數作用 |
---|---|---|
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執行計劃
分割槽選擇性診斷
維護分割槽表
-
必須使用alter table從root表來維護
-
新增/修改/刪除/拆分新分割槽
序列 ?
特殊的單行表
建立序列
- 欄位型別為serial
- create sequence
索引
檢視
檢視就是一個sql
建立檢視
- create view name as select...
刪除檢視
- drop view name
物化檢視
- 將查詢結果持久化為資料檔案,不會重新整理,只能通過refresh materialized view 重新整理資料