資料庫之路——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 --預設表的第一列作為分佈鍵
【注:分佈鍵設定型別不能為幾何資料型別或使用者自定義資料型別】
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 表名 --不刪除表單清空表中記錄
決定因素:(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:
Unity3D之Mecanim動畫系統學習筆記(二):模型導入
leg character ... sdk ocs 物體 mat 版本 sset 我們要在Unity3D中使用上模型和動畫,需要經過下面幾個階段的制作,下面以一個人形的模型開發為準來介紹。 模型制作 模型建模(Modelling) 我們的美術在建模時一般會制作一個稱為
Unity3D之Mecanim動畫系統學習筆記(六):使用腳本控制動畫
ont nim 復制代碼 info rip esc enter machine images 控制人物動畫播放 這裏我重新弄了一個簡單的場景和新的Animator Controller來作為示例。 下面先看看Animator Controller的配置: 人物在站
Unity3D之Mecanim動畫系統學習筆記(五):Animator Controller
浮點 key 發現 菜單 融合 stat mon 好的 project 簡介 Animator Controller在Unity中是作為一種單獨的配置文件存在的文件類型,其後綴為controller,Animator Controller包含了以下幾種功能: 可以對
Unity3D之Mecanim動畫系統學習筆記(四):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