版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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è)子查詢(xún)中結(jié)論: 1、GP數(shù)據(jù)庫(kù)并不支持對(duì)多個(gè)子查詢(xún)集的or操作,遇到這類(lèi)語(yǔ)句,就要考慮用語(yǔ)句替換。 2、即使是一個(gè)子查詢(xún)查與一個(gè)非子查詢(xún)集的or操作,也是不允許的。 3、對(duì)于多個(gè)非子查詢(xún)集的or操作,是允許的。 4、對(duì)于多子查詢(xún)集的and操作,是允許的。 注意事項(xiàng)4 現(xiàn)象:Case when語(yǔ)句中不能出現(xiàn)子嵌套查詢(xún)結(jié)論: GreenPlum并不支持在case when中含有子嵌套查詢(xún)的復(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)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年幼兒課程教案6篇
- 智能科創(chuàng)課程設(shè)計(jì)
- 2025年度股權(quán)代持及收益權(quán)分配合同(個(gè)人股權(quán)投資與代持)20篇
- 2025年度住宅小區(qū)智能安防系統(tǒng)合同11294篇
- 2025年新能源汽車(chē)充電樁停車(chē)場(chǎng)地合作租賃合同3篇
- 網(wǎng)紅木質(zhì)拓展課程設(shè)計(jì)
- 2025年草花種植基地水資源使用權(quán)合同3篇
- 2024食品行業(yè)市場(chǎng)競(jìng)爭(zhēng)分析合同
- 電纜掛牌施工方案
- 2024食品行業(yè)線上線下整合營(yíng)銷(xiāo)代理協(xié)議3篇
- GB/T 18724-2024印刷技術(shù)印刷品與印刷油墨耐各種試劑性的測(cè)定
- IEC 62368-1標(biāo)準(zhǔn)解讀-中文
- 15J403-1-樓梯欄桿欄板(一)
- 2024年中考語(yǔ)文名句名篇默寫(xiě)分類(lèi)匯編(解析版全國(guó))
- 新煤礦防治水細(xì)則解讀
- 故障診斷技術(shù)的國(guó)內(nèi)外發(fā)展現(xiàn)狀
- 醫(yī)院領(lǐng)導(dǎo)班子集體議事決策制度
- 解讀2024年《學(xué)紀(jì)、知紀(jì)、明紀(jì)、守紀(jì)》全文課件
- 農(nóng)機(jī)維修市場(chǎng)前景分析
- 大學(xué)生《思想道德與法治》考試復(fù)習(xí)題及答案
- 職業(yè)技術(shù)學(xué)院汽車(chē)專(zhuān)業(yè)人才需求調(diào)研報(bào)告
評(píng)論
0/150
提交評(píng)論