4
�����2007 年 2 � 8 � ��� 22:43:13 EST
5
��������2007 年 2 � 12 � ��� 12:00:04 CST
7
����人��Bruce Momjian (pgman@candle.pha.pa.us)
8
�������人�����(ChaoYi, Kuo)�kuo.chaoyi@gmail.com�
11
http://www.postgresql.org/files/documentation/faqs/FAQ.html ���
13
���系統平�������� http://www.postgresql.org/docs/faq/
15
_________________________________________________________________
19
1.1)PostgreSQL ��麼�該�麼���
20
1.2)誰���管�PostgreSQL �
22
1.4)PostgreSQL�以�������系統平���
23
1.5)���裡���PostgreSQL�
24
1.6)���� PostgreSQL ��麼�
25
1.7)���裡���� PostgreSQL ����
27
1.9)����解已�� BUG ��缺����
31
1.13)PostgreSQL �����庫系統�起����
32
1.14)PostgreSQL �以�������家��������
36
2.1)���以��麼��� PostgreSQL �����
37
2.2)��麼工��以� PostgreSQL �� Web � ��
38
2.3)PostgreSQL ���形����(GUI)��
42
3.1)��樣��� PostgreSQL �� /usr/local/pgsql 以�����
44
3.3)��樣調���庫伺��以���好����
45
3.4)PostgreSQL 裡�以���麼樣�調試���
46
3.5)��麼�試���������Sorry, too many clients� ���
47
3.6)PostgreSQL ���������容�
48
3.7)(使� PostgreSQL )���使��麼��硬��
52
4.1) ��������詢���� 幾����������
53
4.2) ����表�索����庫以�����義����� psql
56
4.4) �������表�����庫��大������
57
4.5) ����������件裡���������空��
58
4.6) ��麼���詢�����麼���詢����索��
59
4.7) ��������詢�����樣�估�����詢��
60
4.8) ��樣���表���索�大�寫����
61
��表������樣��索���大�寫�����
62
4.9) ����詢裡���樣檢測�������
63
NULL�������確�����������NULL��
65
4.11.1) ��樣�建����������������
66
4.11.2) ����������������
67
4.11.3) ��使� currval() ���������������
68
4.11.4) ��麼�����常������������麼���������中
70
4.12) �麼� OID��麼� CTID �
71
4.13) ��麼����誤���ERROR: Memory exhausted in
73
4.14) ����������� PostgreSQL ����
74
4.15) ����建��� �����������
75
4.16) ��������outer join��詢�
78
4.19) ��麼��使� PL/PgSQL ������表�����誤���relation
79
with OID ##### does not exist��
80
4.20) ��������寫(replication)�����
81
4.21) ���詢��顯示�表��������詢��中
83
_________________________________________________________________
87
1.1) PostgreSQL ��麼�該�麼���
89
PostgreSQL �� Post-Gres-Q-L�����簡稱�Postgres
90
���������人����裡�����件� MP3 � �� �
92
PostgreSQL ����������庫系統�����統�業
93
��庫系統���������������代 DBMS
98
�����主��������������並����網���繫�����社����
100
��� �����������人�常����FAQ�
101
http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html
103
1.2) 誰�� PostgreSQL �
105
��� ���PostgreSQL���人����麼中
106
央�������麼�屬���� �����---� ������
107
������確��� � ������CVS管������工���設
108
�主������管�工�����PostgreSQL��������PostgreSQL�
110
��� ���人�社����������� �����就����件�表�������
111
�����PostgreSQL���詳� ��人�常�� (Developer's FAQ) ������
113
1.3) PostgreSQL �����麼?
115
PostgreSQL�������� BSD �����許�������使�
116
PostgreSQL���� �以�� PostgreSQL
117
����代碼��以������就�� ��� ���身������追訴��
118
責任���就������������ ��以������
123
�����c�1996-2005�PostgreSQL ������������c�1994-1996
126
�Portions copyright (c) 1996-2005,PostgreSQL Global Development Group
127
Portions Copyright (c) 1994-6 Regents of the University of
130
�許�任���使�����修�����������������任�費��
131
並��� 簽署� ��������������������段以����段��
134
�Permission to use, copy, modify, and distribute this software and
135
its documentation for any purpose, without fee, and without a written
136
agreement is hereby granted, provided that the above copyright notice
137
and this paragraph and the following two paragraphs appear in all
140
�任������ �大������ 使��
141
������������任���人�����
142
���������� ����伴�����������失�責任��使� �大�
145
�IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY
146
PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
147
DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS
148
SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA
149
HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.�
151
� �大��確��任�����������������������������
152
�裡����份���������������� �� �大���責任��維
155
�THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
156
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
157
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
158
PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
159
CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
160
UPDATES, ENHANCEMENTS, OR MODIFICATIONS.�
162
1.4) PostgreSQL �以�������系統平���
164
��說��任���� UNIX �容���系統������ PostgreSQL
165
������裡���������確測試�平��
167
PostgreSQL ��以�������微� Windows-NT ���系統��
168
Win2000 SP4�WinXP � Win2003�已製���������
169
http://pgfoundry.org/projects/pginstaller�����MSDOS�Windows�業
170
系統 �Win95�Win98�WinMe�����Cygwin模�����PostgreSQL�
172
������� Novell Netware 6 ������� http://forge.novell.com
173
����OS/2(eComStation)�������
174
http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
175
SQL&stype=all&sort=type&dir=%2F ���
177
1.5) ���裡��� PostgreSQL�
179
���覽��� http://www.postgresql.org/ftp/ �������FTP��
180
ftp://ftp.PostgreSQL.org/pub/ �����
182
1.6) ���� PostgreSQL ��麼�
184
PostgreSQL �������� 8.2.3 �
186
�����年����主�������幾����������
188
1.7) ���裡���� PostgreSQL ����
190
PostgreSQL社����件�表��大������幫�����件�表�主��
192
http://www.postgresql.org/community/lists/��������� �General �
195
主��IRC� ����FreeNode(irc.freenode.net)�#postgresql������
196
�� ����以使� UNIX �� irc���令� ��� irc -c '#postgresql'
197
"$USER" irc.freenode.net ���使���IRC客�端�����網絡���
198
��� PostgreSQL �西��� ��(#postgersql-es)���� ��
199
(#postgresql-fr)��樣��� EFNET ����� PostgreSQL �交�� ���
201
�����������表�� http://techdocs.postgresql.org/companies.php
204
1.8) ����交�� BUG � ���
206
�訪� http://www.postgresql.org/support/submitbug�填寫 Bug
207
�� �表� �����樣��訪� ftp �� ftp://ftp.PostgreSQL.org/pub/
208
檢������PostgreSQL ������
210
��使� Bug �交表� ����� PostgreSQL �件�表� Bug
212
* ��交�容���� Bug ���� Bug ��� �
213
* ��交�容���已�� Bug 並�已�� � TODO ���任��表�
214
* ��交� Bug 已������被修��
215
* ��交� Bug 已修�������� ����������
222
* ��交�容���� Bug����以�工��
223
+ �建�����並��� ����主�������������
224
+ � Bug ����修���被� � TODO ���任��表�
226
1.9) ����解已�� BUG ��缺����
228
PostgreSQL ������� SQL:2003 ��������� TODO �表��解已� Bug
231
���� �������常���以�������
232
* 該��已� � TODO ���任��表�
234
+ ������符� SQL ����������
235
+ 該����大大�� 代碼�������帶��好��微�足���
237
* 該���被� � TODO ���任��表�
239
PostgreSQL �使� Bug �蹤系統�� �������件�表中
241
任��表總����������工����������實��Bug��������中
242
������� �影������Bug�總��快�被修�
243
���������������修����� CVS
244
�������使���������������������������
248
PostgreSQL ��大�����主��詳細��������� ����測試�����
249
/doc ����註��� $PGHOME/doc�� � ��以���覽 PostgreSQL
250
�����網���http://www.PostgreSQL.org/docs�
252
�����PostgreSQL��������
253
http://www.postgresql.org/docs/books/awbook.html �
254
http://www.commandprompt.com/ppbook/ � ��大�� PostgreSQL
255
����購買������������ Korry Douglas 編寫���
256
http://techdocs.PostgreSQL.org/techdocs/bookreviews.php� ��大���
257
PostgreSQL ���簡�� � http://techdocs.PostgreSQL.org/ ������
260
客�端��令���psql���以 \d �� �
261
��令��顯示�������符����������使� \?
268
�����述����PostgreSQL����������� Teach Yourself SQL in
269
21 Days, Second Edition��詳細�紹�網��
270
http://members.tripod.com/er4ebus/sql/index.htm� ���許�����The
271
Practical SQL Handbook� Bowman, Judith S.
272
編寫�Addison-Wesley����������� The Complete Reference SQL,
273
Groff 編寫�McGraw-Hill �����
276
* http://www.intermedia.net/support/sql/sqltut.shtm
277
* http://sqlcourse.com.
278
* http://www.w3schools.com/sql/default.asp
279
* http://mysite.verizon.net/Graeme_Birchall/id1.html
281
1.12)���交����� ������
283
詳� ��人�常��� (Developer's FAQ) �
285
1.13) PostgreSQL �����庫系統�起����
287
�����好幾種����������� ������� ��
290
PostgreSQL ��大�����庫�������������
291
�詢�觸���������������������
292
������������������義���繼��������並����
296
PostgreSQL�����������庫���似������������快��
297
����������� �����庫�����������常� +/-
301
�������庫�� ��� �����就������������������
302
�測試��缺����穩�代碼������������ beta
304
��顯示���以��穩������������使��������信��
308
����件�表�����常大���人������以幫�解決�碰��
310
總��解決������������庫���並��總�� ���
312
�����人����群��������觸使PostgreSQL�������
314
����������以給��給�����人����1.7 ���
317
���任�����費������������
318
� �以�� ����� ���裡� ����代碼�������������
321
1.14) PostgreSQL �以�������家�������?
323
PostgreSQL 8.0������使���系統������庫�����������
324
8.0 ��以���� PostgreSQL ��身����������
325
_________________________________________________________________
329
2.1) ���以��麼��� PostgreSQL �����
331
PostgreSQL (� ���)���� C ���� C
332
��������������� ���� ���������� ����好�
333
����以������������������
335
��編���� PHP ��訪� PostgreSQL ����Perl�TCL�Python
336
以����������� http://gborg.postgresql.org 網���
337
Drivers/Interfaces ������ 並��� Internet �容��索��
339
2.2) ��麼工��以� PostgreSQL �� Web � ��
341
���紹以��庫������������http://www.webreview.com�
343
�� Web ���PHP ���極好������ http://www.php.net/�
345
�����任����人�� Perl ��� 使� CGI.pm � DBD::Pg � mod_perl
348
2.3)PostgreSQL ���形������
350
����������人��������� PostgreSQL�GUI �形工�����
351
PostgreSQL社��� ���詳細��表�
352
_________________________________________________________________
356
3.1)��樣�� PostgreSQL �� /usr/local/pgsql 以�����
358
��� configure �� � --prefix �� �
362
� �����PostgreSQL ��許������� unix ����� TCP/IP
363
������ � ���修���置�件 postgresql.conf ��
364
listen_addresses�����置�件 $PGDATA/pg_hba.conf ����
365
��� ���� host-based ��身份���並����
366
PostgreSQL������������ � PostgreSQL 伺��������
368
3.3) ��樣調���庫��以���好����
370
���主����以�� PostgreSQL ����
376
+ 使� COPY ��代��� Insert ���
377
+ ���SQL��������以���交������
378
+ ���索���������使� CLUSTER�
379
+ ����詢����������使� LIMIT�
380
+ 使�� 編���詢�Prepared Query)�
381
+ 使� ANALYZE 以��精確���統��
382
+ ��使� VACUUM � pg_autovacuum
383
+ ��大���������索�����建索��
386
�置�件 postgres.conf ����設
388
管����/��庫伺������/��庫伺�����置�
389
�����解����http://www.varlena.com/varlena/GeneralBits/Tidb
390
its/annotated_conf_e.html �
391
http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html�
395
http://candle.pha.pa.us/main/writings/pgsql/hw_performance/inde
396
x.html � http://www.powerpostgresql.com/PerfList/�
398
3.4)PostgreSQL 裡�以���麼樣�調試���
400
PostgreSQL ����似 log_*
401
�伺���置������詢������統�����工��調試���測試�
404
3.5) ��麼�試�������Sorry, too many
405
clients�已�太����������
407
�表示� 已��� � 100 �並�(��)���������� ����修�
408
postgresql.conf �件�� max_connections �� �� postmaster
409
���併�����修������� postmaster�
411
3.6)PostgreSQL ���������容 �
413
PostgreSQL �����次������主������ Bug 修�工��� ��
414
7.4.8 ��� 7.4.9 ��� dump � restore������
415
���庫伺�����������������伺�����
417
��PostgreSQL����該������ �使��主������������快��
418
��管�次��������風��PostgreSQL��� ���������修�
420
����碼������以風�������PostgreSQL社������������
423
主��������� 7.3 � 7.4��常�修�系統表���表���� ���
424
������������ ���������件����容��� �����中
426
�������reload��主�������� ��
428
3.7)(使� PostgreSQL )���使��麼��硬� �
430
����硬�大����容��人�總�����信����硬�質����
431
����實���� ECC RAM�帶��� ��������SCSI
432
�硬����質�主�����便�貨��� �� ����好����
433
PostgreSQL 幾��以���任�硬���
434
����� ������ �系統����� 就������ 究��� �硬���
435
�������件�表����� 硬��置��������
436
_________________________________________________________________
440
4.1) ��������詢���� 幾����������
442
��� �����幾����並�� ����詢中
443
��確������ �以使� LIMIT ��� �����索�� ORDER BY 中
444
��件���PostgreSQL ��就������� 幾����
445
��������詢��������������������詢������確�����
446
�� �使�游�(cursor)�FETCH���
455
����表�索����庫以�����義�����psql裡����詢�令並顯示�
458
�psql�使� \dt �令�顯示��表��義���解 psql 中
459
����令�表�使� \? ����� ��以�� psql ��代碼 �件
460
pgsql/src/bin/psql/describe.c������� psql ����令�輸���� SQL
461
�令�� ��以帶 -E �� �� psql� �樣������ � psql 中
462
�給���令������實�使�� SQL
463
�詢���PostgreSQL�������容 SQL� INFORMATION SCHEMA ���
466
�系統�����以 pg_ �� �系統表��述�表��義�
468
使� psql -l �令�以�������庫�
470
��以�覽�� pgsql/src/tutorial/syscat.source
471
�件�����������庫系統表������SELECT���
475
�8.0��裡������������容���使� ALTER TABLE ALTER COLUMN
480
ALTER TABLE tab ADD COLUMN new_col new_data_type;
481
UPDATE tab SET new_col = CAST(old_col AS new_data_type);
482
ALTER TABLE tab DROP COLUMN old_col;
485
� ���以使� VACUUM FULL tab �令�使系統����������空��
487
4.4) �������表�����庫��大������
491
����庫�大尺寸� ����已��� 32TB ���庫�
496
��表裡�大���� 250-1600 ��������
499
���實�������������������空�������/交������
500
�實����述�������常�大��系統������大影��
503
系統����件���麼大����大表��� 1 GB ��件���� �
506
��� ���大���� 32K ��大��表大���大����以�� ����
509
����建索��幸����樣�索�����������
510
����容��MD5����������索�������������
513
4.5) ����������件裡���������空��
516
������件�����空���������������件�身大�5����空�
519
�������� 100,000 ���件��������������述� �設
520
��串�平��度�20���(Byte)����件�� 2.8 MB��
521
������PostgreSQL��庫�件大�� 5.2 MB:
523
24 ����: ���������������
524
+ 4 ����: � ���������
525
----------------------------------------
528
PostgreSQL ��� �大�� 8192 ��� (8 KB)���
531
------------------- = 158 �/��� ������
535
-------------------- = 633 ��� ������
538
633 ��� * 8192 ��/� = 5,185,536 ���5.2 MB�
540
索�����麼���������確實��被索������ �
543
空� NULL �������� ������空��
545
4.6) ��麼���詢�����麼���詢����索��
547
並����詢����使�索�����表�大���������並��詢���
548
��表�������������索�� ��� �索����起������
551
������使�索��PostgreSQL
552
�� ����表�統�����統���以使� VACUUM ANALYZE�� ANALYZE
554
�����就�� �好�������索��
555
統���確������� ������������表��容�����������
559
���������大表��次� ������次���常�索����快������
561
����起使��話��常��使�索��� ������表���������
563
��� 確信PostgreSQL����使�� ������確��� �以使�SET
564
enable_seqscan TO 'off'�令���� ����
565
���次���詢�� 就�以��使���索�����確實�快���
567
�使���符����� LIKE � ~ ��索����������使��
568
* �符串������� ����符串��就�說�
570
+ ~ ���表���模��� 以 ^ �� �
571
* �符串��以�����符�模���� ��� [a-e]�
572
* 大�寫������� ILIKE � ~* ��使�索����以� 4.8
574
* �� initdb ��� ��� �����置 C
575
locale�� �系統������� C locale �������大�符��麼�
576
��種����� �以�建����� text_pattern_ops 索����
580
�����詢������索������������索��常��被������
581
�� int2, int8 �����索��
583
4.7) ��������詢�����樣�估�����詢�
587
4.8) ��樣���表���索�大�寫����
588
��表������樣��索���大�寫�����
590
��符 ~ ����表������ ~* ��大�寫�����表�����大�寫���
596
WHERE lower(col) = 'abc';
598
�樣���使����索�����以�建����種���使��表��索�
600
CREATE INDEX tabindex ON tab (lower(col));
602
���述索���建�� � UNIQUE �����索����身�容�以�
603
�大�寫����容����� UNIQUE
604
�������容�����大�寫������� ���������
605
����種����以使� CHECK ���件��觸�����������
607
4.9) ����詢裡���樣檢測������� NULL
608
�������確����������� NULL ��
610
� IS NULL � IS NOT NULL 測試������������
615
����� NULL ������� ORDER BY �件�使� IS NULL � IS NOT
616
NULL 修飾符��件�� true ���件�� false ����������
617
就��� NULL �������������
620
ORDER BY (col IS NOT NULL)
625
VARCHAR(n) varchar ����大�度����
627
CHAR(n) bpchar ���符串�實����足�義�度��以空� ���
628
TEXT text ���������������大�度���
629
BYTEA bytea �������使�NULL�符���許��
632
�系統表�����誤��裡� ������稱�
634
�������種��� "varlena"��������就�說��� ����
635
���度��������� ��實����空�����大������
636
��������義�����以被�縮���� �
639
VARCHAR(n) �������大�度����符串��好�� TEXT ����
640
��大�� 1G 左����義���度��符串�
642
CHAR(n) �������度����符串�
643
CHAR(n)�� ���給�����度以空� ��足��足����容�� �
644
VARCHAR(n) ����給�����容� BYTEA ����������尤����
645
NULL �����������差������
647
4.11.1) ��樣�建���������������
650
���������義�SERIAL������建�����������
651
CREATE TABLE person (
657
CREATE SEQUENCE person_id_seq;
658
CREATE TABLE person (
659
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
663
�� create_sequence ��� ���������������
665
4.11.2) ����������������
667
�種������������ nextval() ����象裡檢索���� SERIAL
668
��������精確����使� 4.11.1 裡��表����碼�樣�述�
669
new_id = execute("SELECT nextval('person_id_seq')");
670
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
672
�樣������詢�使���� new_id 裡����������� person
673
表����� 注����建� SEQUENCE �象��稱���
674
<table>_<serialcolumn>_seq� �裡 table � serialcolumn
675
���� �表��稱�� � SERIAL ����稱�
677
�似��� SERIAL �象� ����� �以��� currval() 檢索�賦��
679
execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
680
new_id = execute("SELECT currval('person_id_seq')");
682
4.11.3) ��使� currval() ���������������
684
���currval() ����� �次�話���賦��������������
686
4.11.4) ��麼�����常������������麼����������������
689
��������並�������������� �就����常中
692
4.12) �麼� OID ��麼� CTID �
694
PostgreSQL 裡�建��������������� OID�����建表�使�
695
WITHOUT OIDS �� � OID �建�������� 4��������� OID ���
696
PostgreSQL 伺��������� ������� 40���溢�� OID �
697
��������PostgreSQL �����系統表裡使� OID
700
������表���好�使� SERIAl �代� OID � � SERIAL ����
701
���表��������就�以���樣�溢�����就�常���
702
SERIAL8 �����8���������
704
CTID ����帶��������������移�������� CTID
705
���被�����������索���使���������
707
4.13) ��麼����誤���ERROR: Memory exhausted in AllocSetAlloc()��
709
�����系統������������� �����������������
710
postmaster ��試試����令�
715
shell����令�������������� �����段��������
716
� ��許���詢������令��������以�������令����建�
718
��� ����SQL客�端�� ������太��������������客��
721
4.14) �����������PostgreSQL����
723
� psql 裡�輸� SELECT version();�令�
725
4.15) ����建��� �����������
727
使� CURRENT_TIMESTAMP�
728
CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
730
4.16) ��樣�� outer join ������
732
PostgreSQL ����� SQL ���������裡������
734
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
738
FROM t1 LEFT OUTER JOIN t2 USING (col);
740
�������詢� t1.col � t2.col �����並��� t1 中
741
����������� t2 ��������� �[�]���RIGHT OUTER
742
JOIN���� t2 ������� ������FULL OUTER JOIN���� t1 � t2
743
������� ��� OUTER �左[�]����[�]�����[�]��中
744
���������被稱�����INNER JOIN��
746
4.17) ��使�������庫��詢�
749
� �PostgreSQL�� ����庫���系統���系統表��� �
752
�� ��模� contrib/dblink
753
�許����調�實�跨庫�詢�������以����������庫��
756
4.18) ���������������
758
����������������容�使���詳����
759
http://techdocs.postgresql.org/guides/SetReturningFunctions
761
4.19) ��麼��使� PL/PgSQL ������表�����誤���relation with OID
762
##### does not exist��
764
PL/PgSQL �緩�������容���帶�����好��������
766
��訪������表���該表被��並�建����次調�該����
767
��� � �緩�����容��������表�解決����� PL/PgSQL 中
768
�EXECUTE ���表��訪���樣����詢����總�被��解��
770
4.20) ��������寫(replication)�����
772
��寫���������好幾種�寫������種�����缺��
774
主/���寫����許��主伺�����/寫��������伺������
775
�/SELECT�詢���� �������費�主/�PostgreSQL�寫���
778
��主伺����寫���許��/寫�����給���主���種�����
779
����伺���������� ���帶��������失�Pgcluster
780
����種����好��並���以�費���
782
��������費���硬�����寫������述�種�寫模��
784
4.21) ���詢��顯示�表��������詢���������大寫�������
786
�常���� ���建表��表�����使�����( ' '
787
)��使�������表�����稱���符������� 大�寫��
788
����� ��詢�表������使�������工����� pgAdmin
789
�����建表��令���������符�� ���� � ������
791
* ��建表������符使�����起��
793
* ����已�����符�����詢�使�������符�起��