PostgreSQL �������⣨FAQ�� ������£�2005 �� 06 �� 02 �� ������ 22:27:35 CST Ŀǰά����Ա��Bruce Momjian (pgman@candle.pha.pa.us) ���İ�ά����Ա��doudou586 ��doudou586_2005@yahoo.com.cn�� ���ĵ������°汾������ http://www.postgresql.org/files/documentation/faqs/FAQ.html�鿴�� �����ϵͳƽ̨��ص�������http://www.postgresql.org/docs/faq/��ش� _________________________________________________________________ �������� 1.1)PostgreSQL ��ʲô������ô������ 1.2)PostgreSQL �İ�Ȩ��ʲô�� 1.3)PostgreSQL ������������Щ����ϵͳƽ̨�ϣ� 1.4)�Ҵ������ܵõ� PostgreSQL�� 1.5)�Ҵ������ܵõ��� PostgreSQL ��֧�֣� 1.6)������ύһ��BUG���棿 1.7)���°��PostgreSQL ��ʲô�� 1.8)�ܹ���ȡ�������ĵ�����Щ�� 1.9)������˽���֪�� BUG ����ȱ�Ĺ��ܣ� 1.10)��Ӧ������ѧϰ SQL �� 1.11)��Ӧ���������뿪�����飿 1.12)PostgreSQL ���������ݿ�ϵͳ��������Σ� 1.13)˿��ƺ͹���PostgreSQL �� �û��ͻ������� 2.1)���ǿ�����ʲô���Ժ� PostgreSQL �򽻵��� 2.2)��ʲô���߿��԰� PostgreSQL ���� Web ҳ�棿 2.3)PostgreSQL ӵ��ͼ���û������� ϵͳ�������� 3.1)���������ܰ� PostgreSQL װ�� /usr/local/pgsql ����ĵط��� 3.2)����ο��������������������ӣ� 3.3)�������������ݿ������Ի�ø��õ����ܣ� 3.4)PostgreSQL ����Ի��ʲô���ĵ������ԣ� 3.5)Ϊʲô����ͼ���ӵ�¼ʱ�յ���Sorry, too many clients�� ��Ϣ�� 3.6)ΪʲôҪ������ PostgreSQL ��Ҫ�����汾ʱ�� dump �� restore �� 3.7)(ʹ��PostgreSQL)����Ҫʹ��ʲô�����Ӳ�� �� �������� 4.1)���ֻѡ��һ����ѯ�����ͷ���У����������һ�У� 4.2)��β鿴�������������ݿ��Լ��û��Ķ��壿��β鿴psql���õ��IJ�ѯָ ���ʾ���ǣ� 4.3)��θ���һ���ֶε��������ͣ� 4.4)һ�м�¼��һ������һ��������ߴ��Ƕ��٣� 4.5)�洢һ�����͵��ı��ļ����������Ҫ���ٴ��̿ռ䣿 4.6)Ϊʲô�ҵIJ�ѯ������Ϊʲô��Щ��ѯû������������ 4.7)����β��ܿ�����ѯ�Ż������������������ҵIJ�ѯ�ģ� 4.8)���������������ʽ�����ʹ�Сд�޹ص��������ʽ���ң��������������� �д�Сд�޹ز��ң� 4.9)��һ����ѯ����������һ���ֶ��Ƿ�Ϊ NULL������β���׼ȷ���������ij�ֶ��Ƿ�NULLֵ�� 4.10)�����ַ�����֮����ʲô��ͬ�� 4.11.1)����������һ�����к�/�Զ��������ֶΣ� 4.11.2)����λ��һ����������кŵ�ֵ�� 4.11.3)ʹ�� currval() �ᵼ�º������û������������race condition���� 4.11.4)Ϊʲô���������쳣��ֹ���������к��أ�Ϊʲô�����к��ֶε�ȡֵ� д��ڼ���أ� 4.12)ʲô�� OID��ʲô�� CTID �� 4.13)Ϊʲô���յ�������Ϣ��ERROR: Memory exhausted in AllocSetAlloc()���� 4.14)����β���֪�������е� PostgreSQL �İ汾�� 4.15)����δ���һ��ȱʡֵ�ǵ�ǰʱ����ֶΣ� 4.16)��ν��� outer join �������ӣ��� 4.17)���ʹ���漰������ݿ�IJ�ѯ�� 4.18)����ú������ض��л���У� 4.19)Ϊʲô����ʹ��PL/PgSQL������ȡ��ʱ��ʱ���յ�������Ϣ��relation with OID ##### does not exist���� 4.20)Ŀǰ����Щ���ݸ��Ʒ������ã� _________________________________________________________________ �������� 1.1)PostgreSQL ��ʲô������ô������ PostgreSQL ���� Post-Gres-Q-L����ʱ��Ҳ���ΪPostgres �� PostgreSQL ������Ŀ��Ĺ�ϵ���ݿ�ϵͳ�������д�ͳ��ҵ���ݿ�ϵͳ�����й��ܣ�ͬʱ�� ���н�����һ�� DBMS ϵͳ��ʹ�õ���ǿ���ԡ� PostgreSQL ��������ѵģ���������Դ���붼���Ի�á� PostgreSQL �Ŀ���������ҪΪ־Ը�ߣ����DZ鲼������ز�ͨ��������������ϵ������һ�� ����������Ŀ���������κι�˾���ơ� ������뿪�����飬��μ�������Ա�������⣨FAQ�� http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html 1.2)PostgreSQL �İ�Ȩ��ʲô? PostgreSQL�ķ�����Ӿ� ���BSD��Ȩ������Դ��������ʹ��û���κ����ƣ����Ǻ�ϲ�����ַ�ʽ���һ �û�д���ı����� �����������ʹ�õ�BSD��Ȩ���ݣ� ���ְ�Ȩ��c��1996-2005��PostgreSQL ȫ�򿪷�С�飬���ְ�Ȩ��c��1994-1996 ���ݴ�ѧ��� ��Portions copyright (c) 1996-2005, PostgreSQL Global Development Group Portions Copyright (c) 1994-6 Regents of the University of California�� ����Ϊ�κ�Ŀ��ʹ�ã��������޸ĺͷַ���������������ĵ�������ȡ�κη��� �� ��������ǩ����˶�������֤����ǰ��������İ�Ȩ�����ͱ����Լ����������� �ֳ��������п����С� ��Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies.�� ���κ�����£����ݴ�ѧ�����е���ʹ�ô����������ĵ������µĶ��κε����� ��ֱ�ӵģ� ��ӵģ�����ģ����ӵĻ������������𻵣�����������ʧ�����Σ���ʹ���� ��ѧ�Ѿ��������Щ��ʧ�Ŀ�����ʱҲ����ˡ� ��IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.�� ���ݴ�ѧ��ȷ�����κα�֤����������������ijһ�ض���;����ҵ����������� ��֤�� �����ṩ����������ǻ��ڡ������ǡ��Ļ����ģ�������ݴ�ѧû�������ṩά ����֧�֣����£���ǿ�����޸ĵķ��� ��THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.�� 1.3)PostgreSQL ������������Щ����ϵͳƽ̨�ϣ� һ��˵����һ���ִ��� UNIX ���ݵ�ƽ̨�������� PostgreSQL ���ڰ�װָ�����г��˷���ʱ�����ȷ���Ե�ƽ̨�� PostgreSQlҲ����ֱ�������ڻ���΢��Windows-NT�IJ���ϵͳ����Win2000��Win XP �� Win2003����������ɵİ�װ���ɴ� http://pgfoundry.org/projects/pginstaller���أ�����MSDOS��Windows����� �ͳ ��Win95��Win98��WinMe����Ҫͨ��Cygwinģ�⻷������PostgreSQL�� ͬʱҲ��һ��ΪNovell Netware 6�����İ汾�ɴ� http://forge.novell.com ��ȡ��ΪOS/2�����İ汾�ɴ� http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre SQL&stype=all&sort=type&dir=%2F 1.4)�Ҵ������ܵõ� PostgreSQL�� ͨ��������ɴ�http://www.postgresql.org/ftp/���أ�Ҳ��ͨ��FTP���� ftp://ftp.PostgreSQL.org/pub/վ�����ء� 1.5)�Ҵ������ܵõ��� PostgreSQL ��֧�֣� PostgreSQL����ͨ���ʼ��б�Ϊ�������û��ṩ�����������ʼ��б�����վ�� �� http://www.postgresql.org/community/lists/��һ������£��ȼ���General �� Bug�ʼ��б���һ���ϺõĿ�ʼ�� ��Ҫ��IRCƵ������FreeNode(irc.freenode.net)��#postgresql��Ϊ�����ϴ�Ƶ ��������ʹ��UNIX����irc����ָ���ʽ�� irc -c '#postgresql' "$USER" irc.freenode.net ������ʹ������IRC�ͻ��˳����ڴ������л�����һ��PostgreSQL��������Ƶ� �(#postgersql-es)�ͷ���Ƶ�� (#postgresql-fr)��ͬ���أ���EFNET��Ҳ��һ��PostgreSQL�Ľ���Ƶ���� ��ҵ֧�ֹ�˾���б��� http://techdocs.postgresql.org/companies.php�� 1.6)������ύһ��BUG���棿 �ɷ��� http://www.postgresql.org/support/submitbug����дBug�ϱ����񼴿ɡ� ͬ��Ҳ�ɷ���ftpվ��ftp://ftp.PostgreSQL.org/pub/ ������޸��µ�PostgreSQL�汾�򲹶��� 1.7)���°��PostgreSQL ��ʲô�� PostgreSQL ���µİ汾�ǰ汾 8.0.2 ����ע�������°汾Ϊ8.0.3���� ���Ǽƻ�ÿ�귢��һ����Ҫ�汾��ÿ�����·���һ��С�汾�� 1.8)�ܹ���ȡ�������ĵ�����Щ�� PostgreSQL�����������ĵ�����Ҫ��һЩ�ֲᣬ�ֲ�ҳ��һЩ�IJ������ӡ��μ� /doc Ŀ¼����ע��ӦΪ $PGHOME/doc���� �㻹����������� PostgreSQL ���ֲᣬ���ַ�ǣ�http://www.PostgreSQL.org/docs�� ���������� PostgreSQL ���������ṩ���� http://www.PostgreSQL.org/docs/awbook.html �� http://www.commandprompt.com/ppbook/ �� Ҳ�д�����PostgreSQL�鼮�ɹ�����������Ϊ���е�һ������Korry Douglas��д�ġ��� http://techdocs.PostgreSQL.org/techdocs/bookreviews.php�� ���д����й�PostgreSQL�鼮�ļ�顣 �� http://techdocs.PostgreSQL.org/���ռ����й� PostgreSQL �Ĵ����������¡� �ͻ��˵������г���psql��һЩ�� \d ��ͷ���������ʾ�������ͣ������������������ܵȵ���Ϣ��ʹ�� \? ������ʾ���п��õ���� ���ǵ� web վ�����������ĵ��� 1.9)������˽���֪�� BUG ����ȱ�Ĺ��ܣ� PostgreSQL ֧��һ����չ�˵� SQL-92 ���Ӽ����������ǵ�TODO �б�����ȡһ����֪Bug����ȱ�Ĺ��ܺͽ����ļƻ��� 1.10)��Ӧ������ѧϰ SQL �� ���ȿ��������ᵽ����PostgreSQL��ص��鼮������һ����Teach Yourself SQL in 21 Days, Second Edition�� ���ǵ������û�ϲ��The Practical SQL Handbook Bowman, Judith S., et al., Addison-Wesley����������ϲ�� The Complete Reference SQL, Groff et al., McGraw-Hill�� 1.11)��Ӧ���������뿪�����飿 ��� Developer's FAQ �� 1.12)PostgreSQL ���������ݿ�ϵͳ��������Σ� ���������кü��ַ��������ԣ����ܣ��ɿ��ԣ�֧�ֺͼ۸� ���� PostgreSQL ӵ�д������� DBMS ���������ԣ� ���磺�����Ӳ�ѯ������������ͼ������ο������Ժ͸��ӵ����ȡ� ���ǻ���һЩ����û�е����ԣ����û��������ͣ��̳У�����Ͷ�汾� ��п����Լ����������õȡ� ���� PostgreSQL ���������úͿ�Դ�����ݿ�������Ƶ����ܡ� ��ijЩ�������ȽϿ죬������һЩ�������Ƚ����� ���������ݿ���ȣ����ǵ�����ͨ���� +/- 10%֮�䡣 �ɿ��� ����֪�� DBMS �����ǿɿ��ģ���������һ���ö�û�С� ����Ŭ������������ ��������Եģ��ȶ��ij������ٵĴ��롣ÿ���汾������һ���µ� beta ����ʱ�䣬�������ǵķ�����ʷ��ʾ���ǿ����ṩ�ȶ��ģ��ι̵ģ���� �������ʹ�õİ汾���������� ���ⷽ�����������������ݿ��������൱�ġ� ֧�� ���ǵ��ʼ��б��ṩһ���dz���Ŀ�����Ա���û������԰����������� ����κ����⡣ ���Dz��ܱ�֤�϶��ܽ�����⣬���֮�£����� DBMS Ҳ���������ܹ��ṩ��������� ֱ���뿪����Ա���û�Ⱥ���ֲ��Դ����Ӵ��� PostgreSQL ��֧�ֱ����� DBMS ��Ҫ�á�����һЩ��ҵ�Ե�Ԥ��װ��֧�֣����Ը��ṩ����Щ��Ҫ���ˡ ������� FAQ ���� 1.5 С�ڣ� �۸� ���Ƕ��κ���;����ѣ��������úͷ�����Ŀ�ġ� ����Բ������Ƶ�����IJ�Ʒ��������ǵĴ��룬������Щ���������� İ�Ȩ������������ BSD ���İ�Ȩ�⡣ 1.13)˿���PostgreSQL �� �������Ѱ��PostgreSQL�������ˣ�����ʲô����ίԱ�ᣬ����ʲô������˾�� ��ֻ�ܷ�����---��Ϊһ��Ҳ�����ڣ������ǵ�ȷ��һ�� ίԱ���CVS�����飬����Щ�������������Ҫ��Ϊ�˽��й������������Ƕ�Pos tgreSQL���п��ƣ�PostgreSQL��Ŀ�����κ��˾� �ɲμӵĿ�����Ա�����������û����Ƶģ�������Ҫ���ľ��Ǽ����ʼ��б����� �����ۼ��ɣ�Ҫ����PostgreSQL�Ŀ������ Developer's FAQ ��ȡ��Ϣ���� _________________________________________________________________ �û��ͻ������� 2.1)���ǿ�����ʲô���Ժ� PostgreSQL �򽻵��� PostgreSQL(ȱʡ���)ֻ��װ��C����ǶʽC�Ľӿڣ������Ľӿڶ��Ƕ�������Ŀ ���ܹ��ֱ����أ���Щ�ӿ���Ŀ�����ĺô� �����ǿ����и��Եķ����ƻ��͸��Զ����Ŀ����顣 һЩ���������PHP���з��� PostgreSQL �Ľӿڣ�Perl,TCL,Python�Լ��ܶ��������ԵĽӿ��� http://gborg.postgresql.org �ϵ�Drivers/InterfacesС�ڿ��ҵ��� ����ͨ��Internet�������������� 2.2)��ʲô���߿��԰� PostgreSQL ���� Web ҳ�棿 һ�����������ݿ�Ϊ��̨��ͦ������վ���ǣ�http://www.webreview.com�� ���� Web ���ɣ�PHP ��һ�����õĽӿڡ����ڣ�http://www.php.net/�� ���ڸ��ӵ����񣬺ܶ��˲��� Perl �ӿں� CGI.pm �� mod_perl �� 2.3)PostgreSQL ӵ��ͼ���û������� �ǵģ��� http://techdocs.postgresql.org/guides/GUITools��һ����ϸ���б��� _________________________________________________________________ ϵͳ�������� 3.1)�������ܰ� PostgreSQL װ�� /usr/local/pgsql ����ĵط��� ������ configure ʱ���� --prefix ѡ� 3.2)����ο��������������������ӣ� ȱʡʱ��PostgreSQL ֻ����ͨ�� unix ���׽��ֻ�TCP/IP��ʽ�����Ա��������ӡ� ��ֻ�����޸��������ļ�postgresql.conf�е�listen_addresses����Ҳ������� ļ�pg_hba.conf�д��� ����Ϊ������ host-based ����������֤������������PostgreSQL���������������Dz��������PostgreSQL ���������ӵġ� 3.3)�������������ݿ������Ի�ø��õ����ܣ� ��������Ҫ�����������PostgreSQL��DZ�ܡ� ��ѯ��ʽ�ı仯 ����Ҫ�漰�޸IJ�ѯ��ʽ�Ի�ȡ���õ�����: + ������������������ʽ�Ͳ��������� + ʹ��COPY��������Insert��䣻 + �����SQL������һ�������Լ����ύ����Ŀ����� + ��һ����������ȡ������¼ʱʹ��CLUSTER�� + ��һ����ѯ�����ȡ�����ּ�¼ʱʹ��LIMIT�� + ʹ��Ԥ����ʽ��ѯ��Prepared Query)�� + ʹ��ANALYZE�Ա��־�ȷ���Ż�ͳ�ƣ� + ����ʹ�� VACUUM �� pg_autovacuum + ���д������ݸ���ʱ��ɾ��������Ȼ���ؽ������� ������������ �����ļ�postgres.conf�еĺܶ����ö���Ӱ�����ܣ����в������б��� ���� Administration Guide/Server Run-time Environment/Run-time Configuration�� �йز����Ľ��Ϳɼ��� http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_co nf_e.html �� http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html�� Ӳ����ѡ�� �����Ӳ�������ܵ�Ӱ������ http://candle.pha.pa.us/main/writings/pgsql/hw_performance/inde x.html �� http://www.powerpostgresql.com/PerfList/�� 3.4)PostgreSQL ����Ի��ʲô���ĵ������ԣ� PostgreSQL �кܶ����� log_* �ķ��������ñ��������ڲ�ѯ�Ĵ�ӡ�ͽ���ͳ�ƣ�����Щ�����Ե��Ժ����ܲ��� ���а����� 3.5)Ϊʲô����ͼ����ʱ�յ���Sorry, too many clients����Ϣ�� ���ʾ���Ѵﵽȱʡ100��������̨�����������ƣ�����Ҫͨ���޸�postgresql. conf�ļ��е�max_connectionsֵ�� ����postmaster�ĺ�̨�������������޸ĺ�����������postmaster�� 3.6)ΪʲôҪ������ PostgreSQL ��Ҫ�����汾ʱ�� dump �� restore �� PostgreSQL �������ÿ��С�����������˽��ٵ��޸ģ���˴� 7.4.0 ������ 7.4.1 ����Ҫ dump �� restore�� ������Ҫ������������� 7.3 �� 7.4��ͨ�����޸�ϵͳ�������ݱ����ڲ���ʽ�� ��Щ�仯һ��Ƚϸ��ӣ�������Dz�ά�����ļ��������ݡ� dump �����ݰ���ͨ�õĸ�ʽ����������Ա����¼��ز�ʹ���µ��ڲ���ʽ�� 3.7)(ʹ��PostgreSQL)����Ҫʹ��ʲô�����Ӳ�� �� ���ڼ����Ӳ��������Ǽ��ݵģ����������������������м����Ӳ������Ҳ�� ��ͬ�ġ���ʵ�ϲ��ǣ� ECC RAM������żУ����ڴ棩��SCSI ��Ӳ�̣������ʵ������һЩ���˻�Ҫ���ӿɿ��Ҿ��и��õ����ܡ�PostgreSQL ���������������κ�Ӳ���ϣ� ������ɿ��Ժ����ܶ����ϵͳ����Ҫ�������Ҫȫ����о�һ�����Ӳ������ �ˡ������ǵ��ʼ��б���Ҳ�й��� Ӳ�����ú��Լ۱ȵ����ۡ� _________________________________________________________________ �������� 4.1)���ֻѡ��һ����ѯ�����ͷ���У����������һ�У� �����ֻ��Ҫ��ȡ�������ݣ���������ִ�в�ѯ��֪��ȷ�е������������ʹ�� LIMIT���ܡ� �����һ�������� ORDER BY�е�����ƥ�䣬PostgreSQL ���ܾ�ֻ����Ҫ���ͷ������¼�� �����򽫶�������ѯ���д���ֱ��������Ҫ���У��������ִ�в�ѯ����ʱ��֪ ��ȷ�еļ�¼���� ��ʹ���α�(cursor)��FETCH���ܡ� ��ʹ�����·�����ȡһ�������¼�ģ� SELECT cols FROM tab ORDER BY random() LIMIT 1 ; 4.2)��β鿴�������������ݿ��Լ��û��Ķ��壿��β鿴psql���õ��IJ�ѯָ�� �ʾ���ǣ� ��psql��ʹ�� \dt ��������ʾ���ݱ��Ķ��壬Ҫ�˽�psql�е����������б���ʹ��\? �����⣬��Ҳ�����Ķ� psql ��Դ���� �ļ�pgsql/src/bin/psql/describe.c��������Ϊ����psql��б������������� ��� SQL ����㻹���Դ� -E ѡ������ psql�� ����������ӡ��ִ������psql����������������ڲ�ʵ��ʹ�õ�SQL��ѯ��Postg reSQLҲ�ṩ��һ������SQL��INFORMATION SCHEMA�ӿڣ� ����Դ������ȡ�������ݿ����Ϣ�� ��ϵͳ����һЩ��pg_ ��ͷ��ϵͳ��Ҳ�����˱��Ķ��塣 ʹ�� psql -l ָ������г����е����ݿ⡣ Ҳ�������һ�� pgsql/src/tutorial/syscat.source�ļ������о��˺ܶ�ɴ����ݿ�ϵͳ���л� ȡ��Ϣ��SELECT�﷨�� 4.3)��θ���һ���ֶε��������ͣ� ��8.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; ��Ȼ�����ʹ��VACUUM FULL tab ָ����ʹϵͳ�ջ���Ч������ռ�õĿռ䡣 4.4)һ�м�¼��һ������һ��������ߴ��Ƕ��٣� ������һЩ���ƣ� һ�����ݿ����ߴ磿 �����ƣ��Ѵ����� 32TB �����ݿ⣩ һ���������ߴ磿 32 TB һ�м�¼�����ߴ磿 1.6 TB һ���ֶε����ߴ�? 1 GB һ��������������� ������ һ��������������� 250-1600 �����������йأ� һ�������������������� ������ ��Ȼ��ʵ����û�������������ƣ�����Ҫ�ܿ��ô��̿ռ䡢�����ڴ�/��������� �Լ�� ��ʵ�ϣ�����Щ��ֵ����쳣�ش�ʱ��ϵͳ����Ҳ���ܴܺ�Ӱ�졣 �������ߴ� 32 TB ����Ҫ����ϵͳ�Դ��ļ���֧�֡�����ö�� 1 GB ���ļ��洢������ļ�ϵͳ�ߴ�������Dz���Ҫ�ġ� ���ȱʡ�Ŀ��С������ 32K �����ı��ߴ������������������ӵ��ı��� 4.5)�洢һ�����͵��ı��ļ����������Ҫ���ٴ��̿ռ䣿 һ�� Postgres ���ݿ⣨�洢һ���ı��ļ�����ռ�õĿռ���������Ҫ�൱������ı��ļ��� ����С5���Ĵ��̿ռ䡣 ���磬������һ�� 100,000 �е��ļ���ÿ����һ��������һ���ı������� �����ı�����ƽ������Ϊ20�ֽڡ��ı��ļ�ռ�� 2.8 MB�������Щ���ݵ� PostgreSQL ���ݿ��ļ���Լ�� 6.4 MB: 32 �ֽ�: ÿ�е�ͷ������ֵ�� 24 �ֽ�: һ���������ֶκ�һ���ı����ֶ� + 4 �ֽ�: ҳ����ָ��Ԫ���ָ�� ---------------------------------------- 60 �ֽ�ÿ�� PostgreSQL ����ҳ�Ĵ�С�� 8192 �ֽ� (8 KB)���� 8192 �ֽ�ÿҳ ------------------- = 136 ��/����ҳ������ȡ���� 60 �ֽ�ÿ�� 100000 ������ -------------------- = 735 ����ҳ������ȡ���� 128 ��ÿҳ 735 ����ҳ * 8192 �ֽ�/ҳ = 6,021,120 �ֽڣ�6 MB�� ��������Ҫ��ô��Ķ������ģ���Ҳȷʵ���������������ݣ��������Ҳ���ܺ� �� ��ֵNULL�����λͼ�У����ռ�ú��ٵĿռ䡣 4.6)Ϊʲô�ҵIJ�ѯ������Ϊʲô��Щ��ѯû������������ ����ÿ����ѯ�����Զ�ʹ��������ֻ���ڱ��Ĵ�С����һ����Сֵ�����Ҳ�ѯֻ ��ѡ�б��н�С�����ļ�¼ʱ�Ż���������� ������Ϊ����ɨ��������漴���̴�ȡ���ܱ�ֱ�ӵض�ȡ����˳��ɨ�裩������ Ϊ���ж��Ƿ�ʹ��������PostgreSQL�������йر���ͳ��ֵ����Щͳ��ֵ���� ʹ�� VACUUM ANALYZE���� ANALYZE ��á� ʹ��ͳ��ֵ���Ż���֪�������ж����У����ܹ����õ��ж��Ƿ����������� ͳ��ֵ��ȷ���Ż�������˳������ӷ���Ҳ�����á��ڱ������ݷ����仯ʱ��Ӧ ���ڽ���ͳ��ֵ�ĸ����ռ��� ����ͨ�������� ORDER BY ��ִ�����ӡ���һ�������һ��˳��ɨ�裬����һ����ʽ������ͨ��������ɨ�� Ҫ�졣 ���ǣ��� LIMIT �� ORDER BY ���ʹ��ʱ�� ����ʹ����������Ϊ��ֻ�᷵�ر���һС���֡� ʵ���ϣ���Ȼ MAX() �� MIN() ����ʹ��������ͨ���� ORDER BY �� LLIMIT ʹ������ȡ�����ֵ����СֵҲ�ǿ��Եģ� SELECT col FROM tab ORDER BY col [ DESC ] LIMIT 1; �����ȷ��PostgreSQL���Ż���ʹ��˳��ɨ���Dz���ȷ�ģ������ʹ��SET enable_seqscan TO 'off'ָ� Ȼ���ٴ����в�ѯ����Ϳ��Կ���ʹ��һ������ɨ���Ƿ�ȷʵҪ��һЩ�� ��ʹ��ͨ������������� LIKE �� ~ ʱ������ֻ�����ض��������ʹ�ã� * �ַ����Ŀ�ʼ���ֱ�������ͨ�ַ�����Ҳ����˵�� + LIKE ģʽ������ % ��ͷ�� + ~ ���������ʽ��ģʽ������ ^ ��ͷ�� * �ַ���������ƥ�����ַ���ģʽ���ͷ������ [a-e]�� * ��Сд�޹صIJ��ң��� ILIKE �� ~* �Ȳ�ʹ���������������� 4.8 �������ĺ��������� * ���� initdb ʱ�������ȱʡ�ı������� C locale����Ϊϵͳ������֪���ڷ�C locale���ʱ��һ������ַ���ʲô�� ����������£�����Դ���һ�������text_pattern_ops����������LIKE�� ������ ��8.0֮ǰ�İ汾�У�����Ҫ��ѯ���������ͺ�����������������ƥ�䣬������� ������δ���õ����ر��Ƕ�int2,int8����ֵ�͵������� 4.7)����β��ܿ�����ѯ�Ż������������������ҵIJ�ѯ�� �ο� EXPLAIN �ֲ�ҳ�� 4.8)���������������ʽ�����ʹ�Сд�޹ص��������ʽ���ң����������������д�� �д�޹ز��ң� ������ ~ �����������ʽƥ�䣬�� ~* ������Сд�޹ص��������ʽƥ�䡣��дЩ�޹ص� LIKE ���ֳ�Ϊ ILIKE�� ��Сд�޹صĵ�ʽ�Ƚ�ͨ��д���� SELECT * FROM tab WHERE lower(col) = 'abc'; ����������ʹ�ñ�׼�����������ǿ��Դ���һ���ɱ����õĺ�������: CREATE INDEX tabindex ON tab (lower(col)); 4.9)��һ����ѯ����������һ���ֶ��Ƿ�Ϊ NULL ������β���׼ȷ���������ij�ֶ��Ƿ� NULL ֵ�� �� 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) 4.10)�����ַ�����֮����ʲô��ͬ�� ���� �ڲ����� ˵�� VARCHAR(n) varchar ָ������󳤶ȣ��䳤�ַ��������㶨�峤�ȵIJ��ֲ����� CHAR(n) bpchar �����ַ�����ʵ�����ݲ��㶨�峤��ʱ���Կո��� TEXT text û���ر���������ƣ������е���󳤶����ƣ� BYTEA bytea �䳤�ֽ����У�ʹ��NULLҲ�������ģ� "char" char һ���ַ� ��ϵͳ������һЩ������Ϣ���㽫�����ڲ����ơ� �������е�ǰ����������"varlena"���䳤�����ͣ�Ҳ����˵����ͷ���ĸ��ֽ�� dz��ȣ�����������ݣ��� ����ʵ��ռ�õĿռ�������Ĵ�СҪ��һЩ�� Ȼ����Щ���Ͷ����Ա�ѹ���洢��Ҳ������ TOAST �ѻ��洢����˴��̿ռ�Ҳ���ܱ�Ԥ���Ҫ�١� VARCHAR(n) �ڴ洢��������󳤶ȵı䳤�ַ�������õġ� TEXT �����ڴ洢���ɴ� 1G���ҵ�δ�������Ƴ��ȵ��ַ����� CHAR(n) ���ʺ��ڴ洢������ͬ���ַ����� CHAR(n)��������������ֶγ����Կո��㣨������ֶ����ݣ��� �� VARCHAR(n) ֻ�洢���������������ݡ� BYTEA ���ڴ洢���������ݣ������ǰ��� NULL �ֽڵ�ֵ����Щ���;������Ƶ��������ԡ� 4.11.1)����������һ�����к�/�Զ��������ֶΣ� 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 �ֲ�ҳ��ȡ�������еĸ�����Ϣ�� 4.11.2)����λ��һ����������кŵ�ֵ�� һ�ַ������ڲ���֮ǰ���ú��� 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 ��������ƽ����� __seq�� ���� table �� serialcolumn �ֱ�����ı������ƺ���� SERIAL �ֶε����ơ� ���Ƶģ��� SERIAL ����ȱʡ�����������ú��� currval() �����ո�ֵ�� SERIAL ֵ�����磺 execute("INSERT INTO person (name) VALUES ('Blaise Pascal')"); new_id = execute("SELECT currval('person_id_seq')"); 4.11.3)ʹ�� currval() �ᵼ�º������û��ij�ͻ�����race condition���� ���ᡣcurrval() ���ص����㱾�λỰ����������ֵ�����������û��ĵ�ǰֵ�� 4.11.4)Ϊʲô���������쳣��ֹ���������к��أ�Ϊʲô�����к��ֶε�ȡֵ�д��� ����أ� Ϊ����߲����ԣ����к�����Ҫ��ʱ�����������е����񣬲������������֮ ǰ������������ ��ͻᵼ���쳣��ֹ����������кŻ���ּ���� 4.12)ʲô�� OID ��ʲô�� CTID �� PostgreSQL �ﴴ����ÿһ�м�¼������һ��Ψһ��OID�������ڴ�����ʱʹ��WITHOUT OIDSѡ� OID����ʱ���Զ�����һ��4�ֽڵ����������� OID ������ PostgreSQL �о���Ψһ�ġ� Ȼ�������ڳ���40��ʱ������� OID�˺������ظ���PostgreSQL �������ڲ�ϵͳ����ʹ�� OID �ڱ�֮�佨����ϵ�� ���û������ݱ��У������ʹ��SERIAl������OID ��ΪSERIALֻ�DZ�֤�ڵ�������������Ψһ�ģ�����������Ŀ����Ծͷdz�С�� �� SERIAL8����������8�ֽڵ����к��ֶΡ� CTID ���ڱ�ʶ�������ݿ飨��ַ���ͣ����ڣ�ƫ�Ƶ��ض��������С� CTID �ڼ�¼�����Ļ����غ����ı䡣�������ʹ������ָ�������С� 4.13)Ϊʲô���յ�������Ϣ��ERROR: Memory exhausted in AllocSetAlloc()���� ��ܿ�����ϵͳ�������ڴ��ù��ˣ������ں˶�ijЩ��Դ�нϵ͵�����ֵ������ �� postmaster ֮ǰ������������ ulimit -d 262144 limit datasize 256m ȡ�������õ� shell����������ֻ��һ���ܳɹ���������������Ľ������ݶ�������ñȽϸߣ � ���Ҳ�����ò�ѯ��ɡ���������Ӧ���ڵ�ǰ���̣��Լ������������������к� �������ӽ��̡� �������������SQL�ͻ���ʱ��Ϊ��̨������̫������ݶ��������⣬�������п ͻ���֮ǰִ��������� 4.14)����β���֪�������е� PostgreSQL �İ汾�� �� psql ����� SELECT version();ָ� 4.15)����δ���һ��ȱʡֵ�ǵ�ǰʱ����ֶΣ� ʹ�� CURRENT_TIMESTAMP�� CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); 4.16)���������� outer join �������ӣ��� PostgreSQL ���ñ�׼�� SQL �﷨֧�������ӡ��������������ӣ� SELECT * FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col); ���� SELECT * FROM t1 LEFT OUTER JOIN t2 USING (col); �������ȼ۵IJ�ѯ�� t1.col �� t2.col �������ӣ����ҷ��� t1 ������δ���ӵ��У���Щ�� t2 ��û��ƥ����У��� ��[��]����(RIGHT OUTER JOIN)������ t2 ��δ���ӵ��С� ��ȫ�����ӣ�FULL OUTER JOIN�������� t1 �� t2 ��δ���ӵ��С� �ؼ��� OUTER ����[��]���ӡ���[��]���Ӻ���ȫ[��]�������ǿ�ѡ�ģ���ͨ���ӱ���Ϊ������ ��INNER JOIN���� 4.17)���ʹ���漰������ݿ�IJ�ѯ�� û�а취��ѯ��ǰ���ݿ�֮������ݿ⡣ ��Ϊ PostgreSQL Ҫ���������ݿ���ص�ϵͳĿ¼��ϵͳ��������˿����ݿ�IJ�ѯ���ִ���Dz� ���ġ� ������ֵģ��contrib/dblink�������ú�������ʵ�ֿ���ѯ����Ȼ�û�Ҳ���� ͬʱ���ӵ���ͬ�����ݿ�ִ�в�ѯȻ���ڿͻ��˺ϲ������ 4.18)����ú������ض��л���У� �ں����з������ݼ�¼���Ĺ����Ǻ�����ʹ�õģ�����μ��� http://techdocs.postgresql.org/guides/SetReturningFunctions 4.19)Ϊʲô����ʹ��PL/PgSQL������ȡ��ʱ��ʱ���յ�������Ϣ��relation with OID ##### does not exist���� PL/PgSQL�Ỻ�溯�������ݣ��ɴ˴�����һ�����õĸ���������һ�� PL/PgSQL ����������һ����ʱ����Ȼ��ñ���ɾ�����ؽ��ˣ����ٴε��øú�����ʧ�ܣ� ��Ϊ����ĺ���������Ȼָ��ɵ���ʱ��������ķ������� PL/PgSQL ����EXECUTE ����ʱ�����з��ʡ������ᱣ֤��ѯ��ִ��ǰ�ܻᱻ���½����� 4.27)Ŀǰ����Щ���ݸ��Ʒ������ã� �����ơ�ֻ��һ������кü��ָ��Ƽ�����ʹ�ã�ÿ�ֶ����ŵ��ȱ�㣺 ��/�Ӹ��Ʒ�ʽ������һ�������������ܶ�/д�����룬������ӷ�����ֻ�ܽ��� ��/SELECT��ѯ�����룬 Ŀǰ������������ѵ���/�� PostgreSQL���Ʒ����� Slony-I �� ������������ĸ��Ʒ�ʽ��������/д�����뷢�͸���̨�ļ���������ַ�ʽ��� ���Ҫ�ڶ�̨������֮��ͬ�����ݱ䶯 ���ܻ���������ص�������ʧ��Pgcluster��Ŀǰ���ַ��� ����õģ����һ�����������ء� Ҳ��һЩ��ҵ�踶�Ѻͻ���Ӳ�������ݸ��Ʒ�����֧���������ָ���ģ�͡�