




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Consult Build Deploy ManageGreenplum SQL介紹 鄧才應(yīng)現(xiàn)代設(shè)備(中國(guó))有限公司北京環(huán)亞時(shí)代信息技術(shù)有限公司深圳發(fā)展銀行ODS項(xiàng)目組Overview Greenplum 數(shù)據(jù)庫(kù)介紹 PostgreSql語(yǔ)法特征 Pgsql與Plsql主要區(qū)別 Pgsql操作注意事項(xiàng)Greenplum 數(shù)據(jù)庫(kù)介紹 Massively Parallel Processing (MPP) DBMS 基于開(kāi)源的PostgreSQL1 postgres(master)+n postgres (instance)external tables / parallel loadingcop
2、y commandresource managementquery optimizer enhancementsGreenplum特性DK分布 HASH分布 避免數(shù)據(jù)傾斜 隨機(jī)分布 不能建立唯一索引PARTITION類(lèi)型 RANGE分區(qū) LIST分區(qū) -建議表記錄小于2000W不使用分區(qū)表表存儲(chǔ)類(lèi)型 heap table、Column-Oriented table、Row-Oriented tableINDEX策略 一個(gè)表只建一個(gè)唯一索引 唯一索引全包含DK字段分析表 vacuum analyze user table; vacuum full system table;PostgreSql語(yǔ)
3、法特征 PostgreSQL 是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)。 Greenplum基于PostgreSQL,但也不是Postgres所有特性都能使用,比如: 沒(méi)有觸發(fā)器 不能指定表空間 不能在function中建立新的事務(wù)保存點(diǎn) 不推薦使用外鍵和索引(特殊情況除外)Data Type/CommandData Type / CommandORACLEPOSTGRESNumericNUMBER (p, s)SMALLINT (2 bytes)INTEGER (4 bytes)BIGINT (8 bytes)DECIMAL (p, s) (11 + p/2 bytes)NUMERIC (p
4、, s) (11 + p/2 bytes)REAL (4 bytes)DOUBLE (8 bytes)SERIAL (4 bytes)BIGSERIAL (8 bytes)CharacterCHAR and NCHARCHARVARCHAR2 and NVARCHAR2VARCHARDate & Time Date FunctionsDATE (includes time to sec)DATE orTIMESTAMP without Time ZoneTIMESTAMPTIMESTAMPINTERVALINTERVAL/TIMETRUNC ()DATE_TRUNC (day, )TRUNC
5、(sysdate)current_dateSysdatecurrent_timestamp or now()sysdate + 1.5current_timestamp + 36 hours:intervalBinaryBFILE ( 1 GB)Large Objects (up to 2 GB)RAW BFILE ( Limit & OffsetROWIDOID(不推薦使用)NVL()COALESCE()Union,intersect,minusUnion,intersect,exceptDECODE()CASE expression WHENCASE WHEN expressionSELE
6、CT SUM(*) TOTAL FROM tab1;SELECT SUM(*) AS TOTAL FROM tab1;SELECT * FROM a, b WHERE a.col1 = b.col1(+);SELECT * FROM aLEFT JOIN b ON a.col1 = b.col1;SELECT * FROM (SELECT id FROM a ORDER BY name) WHERE rownum 8 AND rownum = 20;SELECT id FROM a ORDER BY name LIMIT 12OFFSET 8;PartitionsOne INDEX over
7、all dataOne INDEX for each partitionFunction ORACLE Procedure function Greenplum functionOracle例子CREATE OR REPLACE PROCEDURE cs_update_referrer_type_proc IS CURSOR referrer_keys IS SELECT * FROM cs_referrer_keys ORDER BY try_order; func_cmd VARCHAR(4000); BEGIN func_cmd := CREATE OR REPLACE FUNCTION
8、 cs_find_referrer_type(v_host IN VARCHAR, v_domain IN VARCHAR, v_url IN VARCHAR) RETURN VARCHAR IS BEGIN; FOR referrer_key IN referrer_keys LOOP func_cmd := func_cmd | IF v_ | referrer_key.kind | LIKE | referrer_key.key_string | THEN RETURN | referrer_key.referrer_type | ; END IF; END LOOP; func_cmd
9、 := func_cmd | RETURN NULL; END; EXECUTE IMMEDIATE func_cmd; END; / Greenplum例子CREATE OR REPLACE FUNCTION cs_update_referrer_type_proc() RETURNS void AS $func$DECLARE referrer_key RECORD; func_body text; func_cmd text;BEGIN func_body := BEGIN; FOR referrer_key IN SELECT * FROM cs_referrer_keys ORDER
10、 BY try_order LOOP func_body := func_body | IF v_|referrer_key.kind | LIKE quote_literal(referrer_key.key_string) | THEN RETURN | quote_literal(referrer_key.referrer_type) | ; END IF; ; END LOOP; func_body := func_body | RETURN NULL; END; func_cmd := CREATE OR REPLACE FUNCTION cs_find_referrer_type(
11、v_host varchar, v_domain varchar, v_url varchar) RETURNS varchar AS | quote_literal(func_body) | LANGUAGE plpgsql; ; EXECUTE func_cmd;END;$func$ LANGUAGE plpgsql;Greenplum常用函數(shù)length(string)octet_length(string)replace(string text, from text, to text)strpos(string, substring)substr(string, from , coun
12、t)trim(string)lpad(string text, length int , fill text)rpad(string text, length int , fill text)to_charto_dateto_numberto_timestampdate_part(text, timestamp)date_trunc(text, timestamp)extract(field from timestamp)。Greenplum自定義C函數(shù)例子crc64_str.sqlCREATE OR REPLACE FUNCTION crc64_str(text) RETURNS integ
13、er AS /usr/local/greenplum-db/lib/cgcrc64,crc64_str LANGUAGE C;Cgcrc64.C#include #include #include #include postgres.h #include #include fmgr.h PG_FUNCTION_INFO_V1(crc64_str);Datum crc64_str(PG_FUNCTION_ARGS) . 分區(qū)表 Oracle: (range、list、hash) select * from sales partition (sdb_partition_20100101); 分區(qū)表
14、以邏輯表形式存在 Greenplum: (range、list) select * from sales_1_prt_sdb_partition_20100101; 分區(qū)表以物理表形式存在系統(tǒng)表/視圖 gp_configuration pg_tables pg_partition pg_partitions pg_proc pg_indexes pg_class pg_stat_activity pg_locks 對(duì)象授權(quán)Tables, Views, SequencesSELECTINSERTUPDATEDELETERULEALLDatabasesCREATETEMPORARYALLFunct
15、ionsEXECUTEProcedural LanguagesUSAGESchemasCREATEUSAGEALL注意:例如給某個(gè)角色賦予操作表的權(quán)限,必須對(duì)數(shù)據(jù)庫(kù)、模式和表同時(shí)有權(quán)限Greenplum優(yōu)化建議 使用執(zhí)行計(jì)劃 EXPLAIN ANALYZE SQL EXPLAIN SQLEXPLAIN ANALYZE SELECT * FROM tenk1 t1, tenk2 t2 WHERE t1.unique1 Bitmap Heap Scan on tenk1 t1 (cost=2.37.232.35 rows=106 width=244) (actual time=0.878.2.36
16、7 rows=100 loops=1) Recheck Cond: (unique1 Bitmap Index Scan on tenk1_unique1 (cost=0.00.2.37 rows=106 width=0) (actual time=0.546.0.546 rows=100 loops=1) Index Cond: (unique1 Index Scan using tenk2_unique2 on tenk2 t2 (cost=0.00.3.01 rows=1 width=244) (actual time=0.067.0.078 rows=1 loops=100) Inde
17、x Cond: (outer.unique2 = t2.unique2) Total runtime: 14.452 msParallel Query PlansSELECT customer, amount FROM sales JOIN customer USING (cust_id) WHERE date=04302008;Query Worker ProcessesGreenplum優(yōu)化建議 用明確的 JOIN 控制規(guī)劃器 關(guān)閉自動(dòng)提交 使用 COPY 刪除索引和外鍵約束 事后運(yùn)行 VACUUM ANALYZE COPY命令COPY table (column , .) FROM fi
18、le | STDIN WITH BINARY OIDS DELIMITER AS delimiter NULL AS null string ESCAPE AS escape | OFF NEWLINE AS LF | CR | CRLF CSV HEADER QUOTE AS quote FORCE NOT NULL column , . FILL MISSING FIELDS LOG ERRORS INTO error_table KEEP SEGMENT REJECT LIMIT count ROWS | PERCENT COPY table (column , .) | (query)
19、 TO file | STDOUT WITH BINARY OIDS DELIMITER AS delimiter NULL AS null string ESCAPE AS escape | OFF NEWLINE AS LF | CR | CRLF CSV HEADER QUOTE AS quote FORCE QUOTE column , . EXTERNAL TABLECREATE EXTERNAL TABLE table_name ( column_name data_type , .| LIKE other_table )LOCATION (file:/seghost:port/p
20、ath/file , .)| (gpfdist:/filehost:port/file_pattern , .)FORMAT TEXT | CSV( DELIMITER AS delimiter | OFFNULL AS null stringESCAPE AS escape | OFFHEADERQUOTE AS quoteFORCE NOT NULL column , .FILL MISSING FIELDS ) ENCODING encoding LOG ERRORS INTO error_table SEGMENT REJECT LIMIT countROWS | PERCENT 20
21、22-3-21注意事項(xiàng)1 不能對(duì)分布字段即distributed by ()子句中的字段進(jìn)行更新 在更新表時(shí),如果存在表關(guān)聯(lián),那么相對(duì)應(yīng)的關(guān)聯(lián)字段都必須是對(duì)應(yīng)的distributed by 字段注意事項(xiàng)2現(xiàn)象:不支持Not exists語(yǔ)句,只支持exists語(yǔ)句結(jié)論:使用left join替代注意事項(xiàng)3現(xiàn)象:or關(guān)系不能出現(xiàn)在兩個(gè)子查詢中結(jié)論: 1、GP數(shù)據(jù)庫(kù)并不支持對(duì)多個(gè)子查詢集的or操作,遇到這類(lèi)語(yǔ)句,就要考慮用語(yǔ)句替換。 2、即使是一個(gè)子查詢查與一個(gè)非子查詢集的or操作,也是不允許的。 3、對(duì)于多個(gè)非子查詢集的or操作,是允許的。 4、對(duì)于多子查詢集的and操作,是允許的。 注意事項(xiàng)4 現(xiàn)象:Case when語(yǔ)句中不能出現(xiàn)子嵌套查詢結(jié)論: GreenPlum并不支持在case when中含有子嵌套查詢的復(fù)雜語(yǔ)句,通過(guò)left join等操作替代注意事項(xiàng)5現(xiàn)象:在ORACLE腳本中,常常會(huì)通過(guò)rowid進(jìn)行一些數(shù)據(jù)的特殊處理,如刪除重復(fù)的記錄;PostgreSQL數(shù)據(jù)庫(kù)有一個(gè)與oracle的rowid類(lèi)似的偽列oid,但會(huì)重復(fù)。結(jié)論: 總的來(lái)說(shuō),gp沒(méi)有嚴(yán)格兼容oracle的rowid,如果segment instance不共用相同
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 泉州工程職業(yè)技術(shù)學(xué)院《辦公空間室內(nèi)設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 馬鞍山職業(yè)技術(shù)學(xué)院《新型光纖通信系統(tǒng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 信陽(yáng)學(xué)院《中國(guó)傳統(tǒng)建筑設(shè)計(jì)研究》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢體育學(xué)院《軟件設(shè)計(jì)模式》2023-2024學(xué)年第二學(xué)期期末試卷
- 齊齊哈爾工程學(xué)院《電力拖動(dòng)與運(yùn)動(dòng)控制》2023-2024學(xué)年第二學(xué)期期末試卷
- 泰安2025年山東泰安市屬事業(yè)單位初級(jí)綜合類(lèi)崗位招聘127人筆試歷年參考題庫(kù)附帶答案詳解-1
- 內(nèi)蒙古建筑職業(yè)技術(shù)學(xué)院《普通化學(xué)原理》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東協(xié)和學(xué)院《文藝節(jié)目策劃與創(chuàng)作》2023-2024學(xué)年第二學(xué)期期末試卷
- 蕪湖職業(yè)技術(shù)學(xué)院《現(xiàn)代教育技術(shù)理論及應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 河南2025年河南鄭州大學(xué)第一附屬醫(yī)院招聘博士302人筆試歷年參考題庫(kù)附帶答案詳解
- 電力系統(tǒng)動(dòng)態(tài)仿真與建模
- 庭院工程暫預(yù)算報(bào)價(jià)單(龍威景觀)
- 2024年南京機(jī)電職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案解析
- 投標(biāo)技術(shù)服務(wù)和質(zhì)保期服務(wù)計(jì)劃
- 2023年全國(guó)高考體育單招考試英語(yǔ)試卷試題真題(精校打印版)
- 音樂(lè)欣賞與實(shí)踐(中職音樂(lè))全套教學(xué)課件
- 粵語(yǔ)活動(dòng)策劃方案模板范文相關(guān)7篇
- 蘇教版三年級(jí)數(shù)學(xué)下冊(cè)教學(xué)計(jì)劃及進(jìn)度表
- 中國(guó)春節(jié)ppt英文版 Chinese New Year
- 高中數(shù)學(xué)《6.2 排列與組合》課件與導(dǎo)學(xué)案
- 腸道健康講座活動(dòng)策劃
評(píng)論
0/150
提交評(píng)論