濡傛灉浣犲彧鏄鎻愬彇鍑犺鏁版嵁錛屽茍涓斾綘鍦ㄦ墽琛屾煡璇腑鐭ラ亾紜垏鐨勮鏁幫紝浣犲彲浠ヤ嬌鐢↙IMIT鍔熻兘銆?濡傛灉鏈変竴涓儲寮曚笌 ORDER BY涓殑鏉′歡鍖歸厤錛孭ostgreSQL 鍙兘灝卞彧澶勭悊瑕佹眰鐨勫ご鍑犳潯璁板綍錛?錛堝惁鍒欏皢瀵規暣涓煡璇㈣繘琛屽鐞嗙洿鍒扮敓鎴愰渶瑕佺殑琛岋級銆傚鏋滃湪鎵ц鏌ヨ鍔熻兘鏃朵笉鐭ラ亾紜垏鐨勮褰曟暟錛?鍙嬌鐢ㄦ父鏍?cursor)鍜孎ETCH鍔熻兘銆?
鍙嬌鐢ㄤ互涓嬫柟娉曟彁鍙栦竴琛岄殢鏈鴻褰曠殑錛?
SELECT cols
FROM tab
ORDER BY random()
LIMIT 1 ;
鍦?i>psql涓嬌鐢?\dt 鍛戒護鏉ユ樉紺烘暟鎹〃鐨勫畾涔夛紝瑕佷簡瑙?i>psql涓殑瀹屾暣鍛戒護鍒楄〃鍙嬌鐢╘? 錛屽彟澶栵紝浣犱篃鍙互闃呰 psql 鐨勬簮浠g爜 鏂囦歡pgsql/src/bin/psql/describe.c錛屽畠鍖呮嫭涓虹敓鎴?i>psql鍙嶆枩鏉犲懡浠ょ殑杈撳嚭鐨勬墍鏈?SQL 鍛戒護銆備綘榪樺彲浠ュ甫 -E 閫夐」鍚姩 psql錛?榪欐牱瀹冨皢鎵撳嵃鍑烘墽琛屼綘鍦?i>psql涓墍緇欏嚭鐨勫懡浠ょ殑鍐呴儴瀹為檯浣跨敤鐨凷QL鏌ヨ銆侾ostgreSQL涔熸彁渚涗簡涓涓吋瀹筍QL鐨処NFORMATION SCHEMA鎺ュ彛錛?浣犲彲浠ヤ粠榪欓噷鑾峰彇鍏充簬鏁版嵁搴撶殑淇℃伅銆?
鍦ㄧ郴緇熶腑鏈変竴浜涗互pg_ 鎵撳ご鐨勭郴緇熻〃涔熸弿榪頒簡琛ㄧ殑瀹氫箟銆?
浣跨敤 psql -l 鎸囦護鍙互鍒楀嚭鎵鏈夌殑鏁版嵁搴撱?
涔熷彲浠ユ祻瑙堜竴涓?pgsql/src/tutorial/syscat.source鏂囦歡錛屽畠鍒椾婦浜嗗緢澶氬彲浠庢暟鎹簱緋葷粺琛ㄤ腑鑾峰彇淇℃伅鐨凷ELECT璇硶銆?
鍦?.0鐗堟湰閲屾洿鏀逛竴涓瓧孌電殑鏁版嵁綾誨瀷寰堝鏄擄紝鍙嬌鐢?ALTER TABLE ALTER COLUMN TYPE 銆?
鍦ㄤ互鍓嶇殑鐗堟湰涓紝鍙互榪欐牱鍋氾細
BEGIN;
ALTER TABLE tab ADD COLUMN new_col new_data_type;
UPDATE tab SET new_col = CAST(old_col AS new_data_type);
ALTER TABLE tab DROP COLUMN old_col;
COMMIT;
浣犵劧鍚庡彲浠ヤ嬌鐢?i>VACUUM FULL tab 鎸囦護鏉ヤ嬌緋葷粺鏀跺洖鏃犳晥鏁版嵁鎵鍗犵敤鐨勭┖闂淬?
涓嬮潰鏄竴浜涢檺鍒訛細
涓涓暟鎹簱鏈澶у昂瀵革紵 鏃犻檺鍒訛紙宸插瓨鍦ㄦ湁 32TB 鐨勬暟鎹簱錛?/td> 涓涓〃鐨勬渶澶у昂瀵革紵 32 TB 涓琛岃褰曠殑鏈澶у昂瀵革紵 1.6 TB 涓涓瓧孌電殑鏈澶у昂瀵? 1 GB 涓涓〃閲屾渶澶ц鏁幫紵 鏃犻檺鍒?/td> 涓涓〃閲屾渶澶у垪鏁幫紵 250-1600 錛堜笌鍒楃被鍨嬫湁鍏籌級 涓涓〃閲岀殑鏈澶х儲寮曟暟閲忥紵 鏃犻檺鍒?/td>
褰撶劧錛屽疄闄呬笂娌℃湁鐪熸鐨勬棤闄愬埗錛岃繕鏄鍙楀彲鐢ㄧ鐩樼┖闂淬佸彲鐢ㄥ唴瀛?浜ゆ崲鍖虹殑鍒剁害銆?浜嬪疄涓婏紝褰撹繖浜涙暟鍊煎彉寰楀紓甯稿湴澶ф椂錛岀郴緇熸ц兘涔熶細鍙楀緢澶у獎鍝嶃?
琛ㄧ殑鏈澶у昂瀵?32 TB 涓嶉渶瑕佹搷浣滅郴緇熷澶ф枃浠剁殑鏀寔銆傚ぇ琛ㄧ敤澶氫釜 1 GB 鐨勬枃浠跺瓨鍌紝鍥犳鏂囦歡緋葷粺灝哄鐨勯檺鍒舵槸涓嶉噸瑕佺殑銆?
濡傛灉緙虹渷鐨勫潡澶у皬澧為暱鍒?32K 錛屾渶澶х殑琛ㄥ昂瀵稿拰鏈澶у垪鏁拌繕鍙互澧炲姞鍒板洓鍊嶃?
涓涓?Postgres 鏁版嵁搴擄紙瀛樺偍涓涓枃鏈枃浠訛級鎵鍗犵敤鐨勭┖闂存渶澶氬彲鑳介渶瑕佺浉褰撲簬榪欎釜鏂囨湰鏂囦歡鑷韓澶у皬5鍊嶇殑紓佺洏絀洪棿銆?
渚嬪錛屽亣璁炬湁涓涓?100,000 琛岀殑鏂囦歡錛屾瘡琛屾湁涓涓暣鏁板拰涓涓枃鏈弿榪般?鍋囪鏂囨湰涓茬殑騫沖潎闀垮害涓?0瀛楄妭銆傛枃鏈枃浠跺崰鐢?2.8 MB銆傚瓨鏀捐繖浜涙暟鎹殑 PostgreSQL 鏁版嵁搴撴枃浠跺ぇ綰︽槸 6.4 MB:
32 瀛楄妭: 姣忚鐨勫ご錛堜及璁″鹼級
24 瀛楄妭: 涓涓暣鏁板瀷瀛楁鍜屼竴涓枃鏈瀷瀛楁
+ 4 瀛楄妭: 欏甸潰鍐呮寚鍚戝厓緇勭殑鎸囬拡
----------------------------------------
60 瀛楄妭姣忚
PostgreSQL 鏁版嵁欏電殑澶у皬鏄?8192 瀛楄妭 (8 KB)錛屽垯錛?br />
8192 瀛楄妭姣忛〉
------------------- = 136 琛?鏁版嵁欏碉紙鍚戜笅鍙栨暣錛?br /> 60 瀛楄妭姣忚
100000 鏁版嵁琛?br /> -------------------- = 735 鏁版嵁欏碉紙鍚戜笂鍙栨暣錛?br /> 128 琛屾瘡欏?br />
735 鏁版嵁欏?* 8192 瀛楄妭/欏? = 6,021,120 瀛楄妭錛? MB錛?br />
绱㈠紩涓嶉渶瑕佽繖涔堝鐨勯澶栨秷鑰楋紝浣嗕篃紜疄鍖呮嫭琚儲寮曠殑鏁版嵁錛屽洜姝ゅ畠浠篃鍙兘寰堝ぇ銆?
絀哄?i>NULL瀛樻斁鍦ㄤ綅鍥句腑錛屽洜姝ゅ崰鐢ㄥ緢灝戠殑絀洪棿銆?
騫墮潪姣忎釜鏌ヨ閮戒細鑷姩浣跨敤绱㈠紩銆傚彧鏈夊湪琛ㄧ殑澶у皬瓚呰繃涓涓渶灝忓鹼紝騫朵笖鏌ヨ鍙細閫変腑琛ㄤ腑杈冨皬姣斾緥鐨勮褰曟椂鎵嶄細閲囩敤绱㈠紩銆?榪欐槸鍥犱負绱㈠紩鎵弿寮曡搗鐨勯殢鍗崇鐩樺瓨鍙栧彲鑳芥瘮鐩存帴鍦拌鍙栬〃錛堥『搴忔壂鎻忥級鏇存參銆?
涓轟簡鍒ゆ柇鏄惁浣跨敤绱㈠紩錛孭ostgreSQL蹇呴』鑾峰緱鏈夊叧琛ㄧ殑緇熻鍊箋傝繖浜涚粺璁″煎彲浠ヤ嬌鐢?VACUUM ANALYZE錛屾垨 ANALYZE 鑾峰緱銆?浣跨敤緇熻鍊鹼紝浼樺寲鍣ㄧ煡閬撹〃涓湁澶氬皯琛岋紝灝辮兘澶熸洿濂藉湴鍒ゆ柇鏄惁鍒╃敤绱㈠紩銆? 緇熻鍊煎紜畾浼樺寲鐨勮繛鎺ラ『搴忓拰榪炴帴鏂規硶涔熷緢鏈夌敤銆傚湪琛ㄧ殑鍐呭鍙戠敓鍙樺寲鏃訛紝搴斿畾鏈熻繘琛岀粺璁″肩殑鏇存柊鏀墮泦銆?
绱㈠紩閫氬父涓嶇敤浜?ORDER BY 鎴栨墽琛岃繛鎺ャ傚涓涓ぇ琛ㄧ殑涓嬈¢『搴忔壂鎻忥紝鍐嶅仛涓涓樉寮忕殑鎺掑簭閫氬父姣旂儲寮曟壂鎻忚蹇?
浣嗘槸錛屽湪 LIMIT 鍜?ORDER BY 緇撳悎浣跨敤鏃剁粡甯鎬細浣跨敤绱㈠紩錛屽洜涓鴻繖鍙細榪斿洖琛ㄧ殑涓灝忛儴鍒嗐?瀹為檯涓婏紝铏界劧 MAX() 鍜?MIN() 騫朵笉浣跨敤绱㈠紩錛岄氳繃瀵?ORDER BY 鍜?LLIMIT 浣跨敤绱㈠紩鍙栧緱鏈澶у煎拰鏈灝忓間篃鏄彲浠ョ殑錛?
SELECT col
FROM tab
ORDER BY col [ DESC ]
LIMIT 1;
濡傛灉浣犵‘淇ostgreSQL鐨勪紭鍖栧櫒浣跨敤欏哄簭鎵弿鏄笉姝g‘鐨勶紝浣犲彲浠ヤ嬌鐢?code>text_pattern_ops绱㈠紩鏉ョ敤浜?small>LIKE鐨勭儲寮曘?
鍦?.0涔嬪墠鐨勭増鏈腑錛岄櫎闈炶鏌ヨ鐨勬暟鎹被鍨嬪拰绱㈠紩鐨勬暟鎹被鍨嬬浉鍖歸厤錛屽惁鍒欑儲寮曠粡甯告槸鏈鐢ㄥ埌錛岀壒鍒槸瀵筰nt2,int8鍜屾暟鍊煎瀷鐨勭儲寮曘?
鍙傝?EXPLAIN 鎵嬪唽欏點?
鎿嶄綔絎?~ 澶勭悊姝e垯琛ㄨ揪寮忓尮閰嶏紝鑰?~* 澶勭悊澶у皬鍐欐棤鍏崇殑姝e垯琛ㄨ揪寮忓尮閰嶃傚ぇ鍐欎簺鏃犲叧鐨?LIKE 鍙樼鎴愪負 ILIKE銆?
澶у皬鍐欐棤鍏崇殑絳夊紡姣旇緝閫氬父鍐欏仛錛?
SELECT *
FROM tab
WHERE lower(col) = 'abc';
榪欐牱灝嗕笉浼氫嬌鐢ㄦ爣鍑嗙殑绱㈠紩銆備絾鏄彲浠ュ垱寤轟竴涓彲琚埄鐢ㄧ殑鍑芥暟绱㈠紩:
CREATE INDEX tabindex ON tab (lower(col));
鐢?IS NULL 鍜?IS NOT NULL 嫻嬭瘯榪欎釜瀛楁錛屽叿浣撴柟娉曞涓嬶細
SELECT *
FROM tab
WHERE col IS NULL;
涓轟簡鑳藉鍚?NULL瀛楁鎺掑簭錛屽彲鍦?ORDER BY 鏉′歡涓嬌鐢?IS NULL鍜?IS NOT NULL 淇グ絎︼紝鏉′歡涓虹湡 true 灝嗘瘮鏉′歡涓哄亣false 鎺掑湪鍓嶉潰錛屼笅闈㈢殑渚嬪瓙灝變細灝嗗惈 NULL 鐨勮褰曟帓鍦ㄧ粨鏋滅殑涓婇潰閮ㄥ垎錛?
SELECT *
FROM tab
ORDER BY (col IS NOT NULL)
綾誨瀷 鍐呴儴鍚嶇О 璇存槑 VARCHAR(n) varchar 鎸囧畾浜嗘渶澶ч暱搴︼紝鍙橀暱瀛楃涓詫紝涓嶈凍瀹氫箟闀垮害鐨勯儴鍒嗕笉琛ラ綈 CHAR(n) bpchar 瀹氶暱瀛楃涓詫紝瀹為檯鏁版嵁涓嶈凍瀹氫箟闀垮害鏃訛紝浠ョ┖鏍艱ˉ榻?/td> TEXT text 娌℃湁鐗瑰埆鐨勪笂闄愰檺鍒訛紙浠呭彈琛岀殑鏈澶ч暱搴﹂檺鍒訛級 BYTEA bytea 鍙橀暱瀛楄妭搴忓垪錛堜嬌鐢∟ULL涔熸槸鍏佽鐨勶級 "char" char 涓涓瓧絎?/td>
鍦ㄧ郴緇熻〃鍜屽湪涓浜涢敊璇俊鎭噷浣犲皢鐪嬪埌鍐呴儴鍚嶇О銆?
涓婇潰鎵鍒楃殑鍓嶅洓縐嶇被鍨嬫槸"varlena"錛堝彉闀匡級綾誨瀷錛堜篃灝辨槸璇達紝寮澶寸殑鍥涗釜瀛楄妭鏄暱搴︼紝鍚庨潰鎵嶆槸鏁版嵁錛夈?浜庢槸瀹為檯鍗犵敤鐨勭┖闂存瘮澹版槑鐨勫ぇ灝忚澶氫竴浜涖?鐒惰岃繖浜涚被鍨嬮兘鍙互琚帇緙╁瓨鍌紝涔熷彲浠ョ敤 TOAST 鑴辨満瀛樺偍錛屽洜姝ょ鐩樼┖闂翠篃鍙兘姣旈鎯崇殑瑕佸皯銆?
VARCHAR(n) 鍦ㄥ瓨鍌ㄩ檺鍒朵簡鏈澶ч暱搴︾殑鍙橀暱瀛楃涓叉槸鏈濂界殑銆?TEXT 閫傜敤浜庡瓨鍌ㄦ渶澶у彲杈?1G宸﹀彸浣嗘湭瀹氫箟闄愬埗闀垮害鐨勫瓧絎︿覆銆?
CHAR(n) 鏈閫傚悎浜庡瓨鍌ㄩ暱搴︾浉鍚岀殑瀛楃涓層?CHAR(n)浼氭牴鎹墍緇欏畾鐨勫瓧孌甸暱搴︿互絀烘牸琛ヨ凍錛堜笉瓚崇殑瀛楁鍐呭錛夛紝 鑰?VARCHAR(n) 鍙瓨鍌ㄦ墍緇欏畾鐨勬暟鎹唴瀹廣?BYTEA 鐢ㄤ簬瀛樺偍浜岃繘鍒舵暟鎹紝灝ゅ叾鏄寘鍚?NULL 瀛楄妭鐨勫箋傝繖浜涚被鍨嬪叿鏈夌浉浼肩殑鎬ц兘鐗規с?
PostgreSQL 鏀寔 SERIAL 鏁版嵁綾誨瀷銆傚畠鍦ㄥ瓧孌典笂鑷姩鍒涘緩涓涓簭鍒楀拰绱㈠紩銆備緥濡傦細
CREATE TABLE person (
id SERIAL,
name TEXT
);
浼氳嚜鍔ㄨ漿鎹負錛?
CREATE SEQUENCE person_id_seq;
CREATE TABLE person (
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
name TEXT
);
鍙傝?create_sequence 鎵嬪唽欏佃幏鍙栧叧浜庡簭鍒楃殑鏇村淇℃伅銆?
涓縐嶆柟娉曟槸鍦ㄦ彃鍏ヤ箣鍓嶅厛鐢ㄥ嚱鏁?nextval() 浠庡簭鍒楀璞¢噷媯绱㈠嚭涓嬩竴涓?SERIAL 鍊鹼紝鐒跺悗鍐嶆樉寮忔彃鍏ャ備嬌鐢?4.11.1 閲岀殑渚嬭〃錛屽彲鐢ㄤ吉鐮佽繖鏍鋒弿榪幫細
new_id = execute("SELECT nextval('person_id_seq')");
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
榪欐牱榪樿兘鍦ㄥ叾浠栨煡璇腑浣跨敤瀛樻斁鍦?new_id 閲岀殑鏂板鹼紙渚嬪錛屼綔涓?person 琛ㄧ殑澶栭敭錛夈?娉ㄦ剰鑷姩鍒涘緩鐨?SEQUENCE 瀵硅薄鐨勫悕縐板皢浼氭槸 <table>_<serialcolumn>_seq錛?榪欓噷 table 鍜?serialcolumn 鍒嗗埆鏄綘鐨勮〃鐨勫悕縐板拰浣犵殑 SERIAL 瀛楁鐨勫悕縐般?
綾諱技鐨勶紝鍦?SERIAL 瀵硅薄緙虹渷鎻掑叆鍚庝綘鍙互鐢ㄥ嚱鏁?currval() 媯绱㈠垰璧嬪肩殑 SERIAL 鍊鹼紝渚嬪錛?
execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
new_id = execute("SELECT currval('person_id_seq')");
涓嶄細銆?i>currval() 榪斿洖鐨勬槸浣犳湰嬈′細璇濊繘紼嬫墍璧嬬殑鍊艱屼笉鏄墍鏈夌敤鎴風殑褰撳墠鍊箋?br />
涓轟簡鎻愰珮騫跺彂鎬э紝搴忓垪鍙峰湪闇瑕佺殑鏃跺欒祴浜堟鍦ㄨ繍琛岀殑浜嬪姟錛屽茍涓斿湪浜嬪姟緇撴潫涔嬪墠涓嶈繘琛岄攣瀹氾紝 榪欏氨浼氬鑷村紓甯鎬腑姝㈢殑浜嬪姟鍚庯紝搴忓垪鍙蜂細鍑虹幇闂撮殧銆?
PostgreSQL 閲屽垱寤虹殑姣忎竴琛岃褰曢兘浼氳幏寰椾竴涓敮涓鐨?small>OID錛岄櫎闈炲湪鍒涘緩琛ㄦ椂浣跨敤WITHOUT OIDS閫夐」銆?OID鍒涘緩鏃朵細鑷姩鐢熸垚涓涓?瀛楄妭鐨勬暣鏁幫紝鎵鏈?OID 鍦ㄦ暣涓?PostgreSQL 涓潎鏄敮涓鐨勩?鐒惰岋紝瀹冨湪瓚呰繃40浜挎椂灝嗘孩鍑猴紝 OID姝ゅ悗浼氬嚭鐜伴噸澶嶃侾ostgreSQL 鍦ㄥ畠鐨勫唴閮ㄧ郴緇熻〃閲屼嬌鐢?OID 鍦ㄨ〃涔嬮棿寤虹珛鑱旂郴銆?
鍦ㄧ敤鎴風殑鏁版嵁琛ㄤ腑錛屾渶濂芥槸浣跨敤SERIAl鏉ヤ唬鏇?small>OID 鍥犱負SERIAL鍙槸淇濊瘉鍦ㄥ崟涓〃涓暟鎹槸鍞竴鐨勶紝榪欐牱瀹冩孩鍑虹殑鍙兘鎬у氨闈炲父灝忎簡錛?SERIAL8鍙敤鏉ヤ繚瀛?瀛楄妭鐨勫簭鍒楀彿瀛楁銆?
CTID 鐢ㄤ簬鏍囪瘑甯︾潃鏁版嵁鍧楋紙鍦板潃錛夊拰錛堝潡鍐咃級鍋忕Щ鐨勭壒瀹氱殑鐗╃悊琛屻?CTID 鍦ㄨ褰曡鏇存敼鎴栭噸杞藉悗鍙戠敓鏀瑰彉銆傜儲寮曞叆鍙d嬌鐢ㄥ畠浠寚鍚戠墿鐞嗚銆?
榪欏緢鍙兘鏄郴緇熺殑铏氭嫙鍐呭瓨鐢ㄥ厜浜嗭紝鎴栬呭唴鏍稿鏌愪簺璧勬簮鏈夎緝浣庣殑闄愬埗鍊箋傚湪鍚姩 postmaster 涔嬪墠璇曡瘯涓嬮潰鐨勫懡浠わ細
ulimit -d 262144
limit datasize 256m
鍙栧喅浜庝綘鐢ㄧ殑 shell錛屼笂闈㈠懡浠ゅ彧鏈変竴鏉¤兘鎴愬姛錛屼絾鏄畠灝嗘妸浣犵殑榪涚▼鏁版嵁孌甸檺鍒惰寰楁瘮杈冮珮錛? 鍥犺屼篃璁歌兘璁╂煡璇㈠畬鎴愩傝繖鏉″懡浠ゅ簲鐢ㄤ簬褰撳墠榪涚▼錛屼互鍙婃墍鏈夊湪榪欐潯鍛戒護榪愯鍚庡垱寤虹殑瀛愯繘紼嬨? 濡傛灉浣犳槸鍦ㄨ繍琛孲QL瀹㈡埛绔椂鍥犱負鍚庡彴榪斿洖浜嗗お澶氱殑鏁版嵁鑰屽嚭鐜伴棶棰橈紝璇峰湪榪愯瀹㈡埛绔箣鍓嶆墽琛屼笂榪板懡浠ゃ?
浠?psql 閲岋紝杈撳叆 浣跨敤 CURRENT_TIMESTAMP錛? PostgreSQL 閲囩敤鏍囧噯鐨?SQL 璇硶鏀寔澶栬繛鎺ャ傝繖閲屾槸涓や釜渚嬪瓙錛? 鎴栨槸 榪欎袱涓瓑浠風殑鏌ヨ鍦?t1.col 鍜?t2.col 涓婂仛榪炴帴錛屽茍涓旇繑鍥?t1 涓墍鏈夋湭榪炴帴鐨勮錛堥偅浜涘湪 t2 涓病鏈夊尮閰嶇殑琛岋級銆?
鍙砙澶朷榪炴帴(RIGHT OUTER JOIN)灝嗚繑鍥?t2 涓湭榪炴帴鐨勮銆?瀹屽叏澶栬繛鎺ワ紙FULL OUTER JOIN錛夊皢榪斿洖 t1 鍜?
t2 涓湭榪炴帴鐨勮銆?鍏抽敭瀛?OUTER 鍦ㄥ乏[澶朷榪炴帴銆佸彸[澶朷榪炴帴鍜屽畬鍏╗澶朷榪炴帴涓槸鍙夌殑錛屾櫘閫氳繛鎺ヨ縐頒負鍐呰繛鎺ワ紙INNER
JOIN錛夈? 娌℃湁鍔炴硶鏌ヨ褰撳墠鏁版嵁搴撲箣澶栫殑鏁版嵁搴撱?鍥犱負 PostgreSQL 瑕佸姞杞戒笌鏁版嵁搴撶浉鍏崇殑緋葷粺鐩綍錛堢郴緇熻〃錛夛紝鍥犳璺ㄦ暟鎹簱鐨勬煡璇㈠浣曟墽琛屾槸涓嶅畾鐨勩? 闄勫姞澧炲兼ā鍧梒ontrib/dblink鍏佽閲囩敤鍑芥暟璋冪敤瀹炵幇璺ㄥ簱鏌ヨ銆傚綋鐒剁敤鎴蜂篃鍙互鍚屾椂榪炴帴鍒頒笉鍚岀殑鏁版嵁搴撴墽琛屾煡璇㈢劧鍚庡湪瀹㈡埛绔悎騫剁粨鏋溿? 鍦ㄥ嚱鏁頒腑榪斿洖鏁版嵁璁板綍闆嗙殑鍔熻兘鏄緢瀹規槗浣跨敤鐨勶紝璇︽儏鍙傝錛?http://techdocs.postgresql.org/guides/SetReturningFunctions PL/PgSQL浼氱紦瀛樺嚱鏁扮殑鍐呭錛岀敱姝ゅ甫鏉ョ殑涓涓笉濂界殑鍓綔鐢ㄦ槸鑻ヤ竴涓?PL/PgSQL 鍑芥暟璁塊棶浜嗕竴涓復鏃惰〃錛岀劧鍚庤琛ㄨ鍒犻櫎騫墮噸寤轟簡錛屽垯鍐嶆璋冪敤璇ュ嚱鏁板皢澶辮觸錛?鍥犱負緙撳瓨鐨勫嚱鏁板唴瀹逛粛鐒舵寚鍚戞棫鐨勪復鏃惰〃銆傝В鍐崇殑鏂規硶鏄湪 PL/PgSQL 涓敤EXECUTE 瀵逛復鏃惰〃榪涜璁塊棶銆傝繖鏍蜂細淇濊瘉鏌ヨ鍦ㄦ墽琛屽墠鎬諱細琚噸鏂拌В鏋愩? 鈥滃鍒垛濆彧鏄竴涓湳璇紝鏈夊ソ鍑犵澶嶅埗鎶鏈彲浣跨敤錛屾瘡縐嶉兘鏈変紭鐐瑰拰緙虹偣錛? 涓?浠庡鍒舵柟寮忔槸鍏佽涓涓富鏈嶅姟鍣ㄦ帴鍙楄/鍐欑殑鐢寵錛岃屽涓粠鏈嶅姟鍣ㄥ彧鑳芥帴鍙楄/SELECT鏌ヨ鐨勭敵璇鳳紝 鐩墠鏈嫻佽涓旀槸鍏嶈垂鐨勪富/浠?PostgreSQL澶嶅埗鏂規鏄?Slony-I 銆? 澶氫釜涓繪湇鍔″櫒鐨勫鍒舵柟寮忓厑璁稿皢璇?鍐欑殑鐢寵鍙戦佺粰澶氬彴鐨勮綆楁満錛岃繖縐嶆柟寮忕敱浜庨渶瑕佸湪澶氬彴鏈嶅姟鍣ㄤ箣闂村悓姝ユ暟鎹彉鍔?鍙兘浼氬甫鏉ヨ緝涓ラ噸鐨勬ц兘鎹熷け錛?a >Pgcluster鏄洰鍓嶈繖縐嶆柟妗?涓渶濂界殑錛岃屼笖榪樺彲浠ュ厤璐逛笅杞姐? 涔熸湁涓浜涘晢涓氶渶浠樿垂鍜屽熀浜庣‖浠剁殑鏁版嵁澶嶅埗鏂規錛屾敮鎸佷笂榪板悇縐嶅鍒舵ā鍨嬨?/p>4.15)鎴戝浣曞垱寤轟竴涓己鐪佸兼槸褰撳墠鏃墮棿鐨勫瓧孌碉紵
CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
4.16)鎴戞庢牱榪涜 outer join 錛堝榪炴帴錛夛紵
SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col); SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col);4.17)濡備綍浣跨敤娑夊強澶氫釜鏁版嵁搴撶殑鏌ヨ錛?/h4>
4.18)濡備綍璁╁嚱鏁拌繑鍥炲琛屾垨澶氬垪錛?/h4>
4.19)涓轟粈涔堟垜鍦ㄤ嬌鐢≒L/PgSQL鍑芥暟瀛樺彇涓存椂琛ㄦ椂浼氭敹鍒伴敊璇俊鎭渞elation with OID ##### does not exist鈥濓紵
4.27)鐩墠鏈夊摢浜涙暟鎹鍒舵柟妗堝彲鐢紵