1. 程式人生 > >資料庫之路——greenplum資料庫學習筆記

資料庫之路——greenplum資料庫學習筆記

一、常用指令:
1.取埠號:select  * from gp_segment_configuration 
2.select * from pg_stat_activity  該表能檢視到當前資料庫連線的IP 地址,使用者名稱,提交的查詢等。
3.select pg_size_pretty(pg_relation_size('schema.tablename'));檢視資料庫佔用空間
4.select pg_size_pretty(pg_database_size('databasename));查看錶佔用空間
5.Vacuum analyze tablename 回收垃圾和收集統計資訊
6.Select gp_segment_id,count(*) from  tablename  group by 1 ;檢視資料分佈情況
7.gp_segment_configuration例項恢復
8.8.SELECT locktype, database, c.relname, l.relation, l.transactionid, l.transaction, l.pid, l.mode, l.granted, a.current_query FROM pg_locks l, pg_class c, pg_stat_activity a WHERE l.relation=c.oid AND l.pid=a.procpid ORDER BY c.relname;
主要欄位說明:
relname: 表名

locktype、mode 標識了鎖的型別

二、表分佈
Hash分佈:create table ... Distributed by(column1,column2...);同樣數值的內容被分配到同一個segmment(如沒有明確定義分佈鍵,系統會把第一個欄位作為分佈鍵)
迴圈分佈:create table ... Distributed randomly;


三、表相關:
1.建立表:CREATA TABLE 表名 DISTRIBUTED BY(表分佈鍵);  --指定分佈鍵
         CREATA TABLE 表名 DISTRIBUTED RANDOMLY    --預設表的第一列作為分佈鍵

 【注:分佈鍵設定型別不能為幾何資料型別或使用者自定義資料型別】

2.表和列的約束:check 表或列的約束
               NOT NULL 列約束
               UNIQUE 列約束【注:每表只能一個,被UNIQUE定義列會作為表分佈鍵,如果表設定了主鍵則不允許有UNIQUE約束】

               PRIMATY KEY 表約束

3.外部表:建立:CREATE EXTERNAL [WEB] TABLE

         刪除:DROPEXTERNAL [WEB] TABLE

4.表的儲存模式:
  儲存模式:堆儲存、只追加(AO)、行儲存、列儲存、壓縮表(只可以是AO表)
  建立堆表:CREATE TABLE 表名(a int ,b text) DISTRIBUTED BY (列名);
  只追加表:CREATE TABLE 表名(a int ,b text) WITH(appendonly = true);
  列存表:CREAT TABLE 表名(a int,b text) WITH(appendonly=true,orientation=列名) DISTRIBUTED BY(列名);沒有指定orientation的為行存表
  壓縮表:CREATE TABLE 表名(a int,b text) 
WITH(appendonly=true,compresstype=zilb,compresslevel=5); --建立一張5級ZLIB壓縮的AO表

5.刪除表
 DDROP TABLE 表名;
 DELETE FROM 表名;  --不刪除表但清空表中記錄

 TRUNCATE 表名     --不刪除表單清空表中記錄

6.表的分割槽策略(調優):以下因素大部分答案為也是,可通過分割槽策略提高查詢效能
 決定因素:(1)表是否足夠大?(百萬級或以上條記錄)、
                    (2)對目前效能不滿意?
                    (3)查詢條件是否能匹配分割槽條件?(檢查查詢語句的where條件是否與考慮分割槽的column一致)
                    (4)資料倉庫是否需要滾動歷史資料?(可按照記錄日期分割槽)
                    (5)按照某個規則資料是否可被均勻分拆?
  建立分割槽表:通過使用start、end值、every子句定義分割槽增量實現自動產生分割槽
                        【注:start值總是被包含而end值總是被排除】
          Eg:CREATE TABLE 表名(列1,列2......) DISTRIBUTED BY(列名)
              PARTITION BY RANGE(分割槽鍵)
              (START(分割槽鍵值1)INCLUSIVE
                END(分割槽鍵值2)EXCLUSIVE
                EVERY(INTERVAL ‘增量值’));
              每個分割槽單獨指定名稱:
              【注:每個分割槽範圍是連續的則不需為每個分割槽指定END值】
          Eg:CREATE TABLE 表名(列1,列2......) DISTRIBUTED BY(列名)
              PARTITION BY RANGE(分割槽鍵)
              (PARTITION 分割槽1名 START(分割槽鍵值1)INCLUSIVE,
               PARTITION 分割槽2名 START(分割槽鍵值2)INCLUSIVE,
               PARTITION 分割槽3名 START(分割槽鍵值3)INCLUSIVE,
               ......
               END(分割槽鍵值n)EXCLUSIVE);
  分割槽表限制:主鍵或唯一約束必須包含表上所有分割槽鍵。而唯一索引可不包含分割槽鍵
  檢視分割槽設計:SELECT partitionboundary,partitionablename,partitionlevel,partitionrank FROM pg_partitions WHERE tablename=’表名’;
  新增新分割槽:ALRER TABLE表名 ADD PARTITION
                         START()  INCLUSIVE
                         END() EXCLUSIVE;
  刪除分割槽:ALTER TABLE 表名DROP PARTITION FOR(RANK(partitionrank))
                      RABK(partitiontank)指範圍分割槽同意層級中的順序

  清空分割槽資料:ALTER TABLE 表名 TRUNCATE PARTITION FOR(RANK(partitionrank));

三、檢視和索引:
CREATE VIEW               CRREATE INDEX
DROP VIEW                DROP INDEX
使用索引需考慮:
1.查詢工作負載:對於查詢工作負載需返回大量資料的情況而言索引未必有效
2.壓縮表:對於壓縮資料而言,索引訪問方法是解壓需要的記錄而不是全部解壓
3.避免你在頻繁更新列表上使用索引:會消耗大量寫磁碟和CPU計算資源
4.建立選擇性B-tree索引:選擇性指數=DISTINCT值數量/表記錄數,即表中重複記錄越多,建立B-tree索引越有用(DISTINCT值在100到100000之間最佳,超100000之後不宜使用)
5.低選擇性列上使用點陣圖索引
6.索引列用於關聯:或許可以改善join(關聯)效能

7.索引列經常用在查詢條件中:對大表來說,查詢語句where條件中常用到的列可考慮使用索引

建立索引:

1.建立B-tree索引:CREATE INDEX 索引名 ON 表名(索引鍵);

 2.建立點陣圖索引:CREATE INDEX 索引名ON 表名 USING bitmap(索引鍵);


更新記錄:UPDATE 表名 SET 賦值表示式 WHERE 查詢條件;
刪除記錄:DELETE FROM 表名 WHERE 查詢條件;

相關推薦

資料庫——greenplum資料庫學習筆記

一、常用指令: 1.取埠號:select  * from gp_segment_configuration  2.select * from pg_stat_activity  該表能檢視到當前資料庫連線的IP 地址,使用者名稱,提交的查詢等。 3.select pg_si

Python第二天-----學習筆記

ati pop 可用 cor reverse 單詞 print 但是 進行 變量名要點: 1、變量名只能包含字母、 數字和下劃線。 變量名可以字母或下劃線打頭, 但不能以數字打頭, 例如, 可將變量命名為message_1, 但不能將其命名為1_message。 2、變量

Java學習從基礎到精通——技術小白的成長(Java學習筆記)第五天

for迴圈、巢狀迴圈、break的講解、while和do...while...的講解、陣列的講解 1.for迴圈: 固定次數迴圈,應用率高。 迴圈的選擇規則: 1)先看固定次數還是不固定次數:   1.1)固定次數------------------------直接

資料庫MySQL基礎語法的學習筆記

目錄   1.進入資料庫 2.建立資料庫 3.建立資料表 4.資料型別 5.表的增刪修改操作 6.查詢的擴充套件 7.表的修改、 8.表的複製   1.進入資料庫 找出自己主機資料庫的位置,再使用Dos.指令進入自己主機的資料庫

《SQL入門經典》筆記(第四章:建立資料庫去規格化資料庫

1. 什麼是去規格化? 去規格化是通過修改規格化資料庫的表的構成,在允許一定程度的資料冗餘的情況下,提高資料庫庫效能。   2. 為什麼要去規格化? 嘗試提高效能是進行去規格化資料庫的唯一原因(規格化的資料庫需要頻繁地進行表的結合,效能會降低)。   3.

【58沈劍 架構師資料庫索引,到底是什麼做的?

問題1. 資料庫為什麼要設計索引?   圖書館存了1000W本圖書,要從中找到《架構師之路》,一本本查,要查到什麼時候去? 於是,圖書管理員設計了一套規則: (1)一樓放歷史類,二樓放文學類,三樓放IT類… (2)IT類,又分軟體類,硬體類… (3)軟體類,又按照書名音序排序… 以便快

【58沈劍 架構師資料庫索引,到底是什麼做的?

問題1. 資料庫為什麼要設計索引?   圖書館存了1000W本圖書,要從中找到《架構師之路》,一本本查,要查到什麼時候去? 於是,圖書管理員設計了一套規則: (1)一樓放歷史類,二樓放文學類,三樓放IT類… (2)IT類,又分軟體類,硬體類… (3)軟體類,又按照書

mysql學習【第4篇】:資料庫資料型別 資料庫資料型別

資料庫之資料型別 首先補充點了解的小知識; select * from mysql.user #顯示出來亂了 select * from mysql

mysql學習【第5篇】:資料庫完整性約束 資料庫完整性約束

資料庫之完整性約束 一、介紹 約束條件與資料型別的寬度一樣,都是可選引數 作用:用於保證資料的完整性和一致性主要分為:

八年資料庫的感悟

  時間過的很快,從在部落格園寫第一篇文章當現在剛好一年,而自己在資料庫這條路上已經走過八年。回想下這八年感覺總是在【迷茫-激動-充實-迷茫-激動-充實】的迴圈中。本篇也分享一下這些迷茫激動充實和美好的願景。   古有大詩仙懷才不遇,詩書縱情于山水,今有小人物藍瘦香菇,博文感悟與園友。 成長   IT民

程式設計菜鳥到大佬資料庫系統概論(一)

基礎篇 初識資料庫系統 資料庫的4個基本概念 資料庫系統的發展經歷了三代演變 層次/網狀資料庫系統、關係資料庫系統、新一代資料庫系統。 資料庫是一個巨大的軟體產業:理論創立–>原型研製–>產品上市–>經濟效

MySQL資料庫基礎知識彙總(學習筆記

前言 此文章主要內容是簡單的記錄學習歷程,主要通途是日後查詢東西比較方便,當做字典來使用。內容的順序也是從簡單的入門開始的。內容無非就是增刪改查。 ~~ ~~ 關係資料庫往簡單了說就是一個一個的表,每個表都有行和列,表與表之間又有聯絡。其中列,就是一個一個的欄位,代表著你要存入資料的標題。行

資料庫【mysql篇】學習筆記

      Windows服務 -- 啟動MySQL    net start mysql-- 建立Windows服務    sc create mysql binPath= mysqld_bin_path(注意:等號

laravel-4 資料庫操作(查詢構造器)

    正文之前想聊一些關於MVC的事情,接觸過很多專案,發現很多人還是很自然的把SQL寫到Ç層中,整個方法的資料庫操作完全沒有中號層什麼事,可維護性完全為0撒。試想如果有個表要改表名,改欄位名,我需要整個專案搜一下都有哪些地方用了這個表。如果產品需要監控某個表的所有操作日誌

Nginx模塊Nginx-Ts-Module學習筆記(一)搶險體驗

學習筆記 體驗 nginx模塊 int images clas tps gin issues 1、通過HTTP接收MPEG-TS2、生產和管理Live HLS 3、按照官方的編譯和配置,當然了我是第一次編譯沒有通過,在作者重新調整下,編譯成功,感謝:@arut https:

Unity3DMecanim動畫系統學習筆記(二):模型導入

leg character ... sdk ocs 物體 mat 版本 sset 我們要在Unity3D中使用上模型和動畫,需要經過下面幾個階段的制作,下面以一個人形的模型開發為準來介紹。 模型制作 模型建模(Modelling) 我們的美術在建模時一般會制作一個稱為

Unity3DMecanim動畫系統學習筆記(六):使用腳本控制動畫

ont nim 復制代碼 info rip esc enter machine images 控制人物動畫播放 這裏我重新弄了一個簡單的場景和新的Animator Controller來作為示例。 下面先看看Animator Controller的配置: 人物在站

Unity3DMecanim動畫系統學習筆記(五):Animator Controller

浮點 key 發現 菜單 融合 stat mon 好的 project 簡介 Animator Controller在Unity中是作為一種單獨的配置文件存在的文件類型,其後綴為controller,Animator Controller包含了以下幾種功能: 可以對

Unity3DMecanim動畫系統學習筆記(四):Animation State

大致 面板 輸入 jpg any 動畫播放 速度 nsf 顯示 動畫的設置 我們先看看Animation Clip的一些設置: Loop time:動畫是否循環播放。 下面出現了3個大致一樣的選項: Root Transform Rotation:表示為播放動畫

【前端小小白的學習】vue學習記錄(vue-cli腳手架構建項目結構)

cli 4.0 ebp bpa pack all 點擊 ash install 我們直接從vue的工程化開始入手。 在這裏用git命令行搭建項目環境。(當然直接cmd命令行下也是一樣的) git下載安裝地址:https://www.git-scm.com/downloa