������ �� ����� ���������� ������� �� PostgreSQL

���� ���������� ����������: ������� 16 �������� 14:07:22 EDT 2005

���������� ������� ������������: ���� ������ (Bruce Momjian) (pgman@candle.pha.pa.us)

����ף� �� �������: ������ ���������� (admin@linuxshare.ru)

����� ������ ���������� ������ ��������� ����� ����� �� 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) ��� �������� ���������?
1.6) ��� ��� �������� �� ������?
1.7) ����� ������ ���������?
1.8) ����� ������������ ������� � �������?
1.9) ��� ����� ���������� �� ��������� ������� ��� ������������� ������������?
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) ����� ����������� ��� ������� ���� � �������?
3.5) ������ � ������� ��������� "Sorry, too many clients" ����� ������� ������������ � ����?
3.6) ������ ���������� ������ dump � restore ��� ���������� �������� PostgreSQL?
3.7) ����� ������������ "������" � ������ ������������?

������� ������������

4.1) ��� ��������� SELECT ������ ��� ���������� ������ ������� �������? ��� ������������ ������?
4.2) ��� ��� ����� ����� �������, �������, ���� ������ � ������������ ����������? ��� ��� ������� �������, ������� ���������� psql ��� ��������� ���� ����������?
4.3) ��� �������� ��� ������ �������?
4.4) ������ ������������ ������� ��� ����� � �������, ������ � ���� ������?
4.5) ��� ����� ��������� ������������ � ���� ������ ����� ��� ���������� ������ �� �������� ���������� �����?
4.6) ������ ��� ������� �������� �������? ������ ��� �� ���������� ��� �������?
4.7) ��� ���������� �� ��, ��� ����������� ��������� ��� ������?
4.8) ��� ��� ��������� ����� ����������� ��������� � ����� ����������� �� �������� ���� ����� ����������� ���������? ��� ��� ������������ ������ ��� ������ ������������ �� �������� ����?
4.9) ��� ��� ����������, ��� �������� ���� ����� NULL � �����-���� �������? ���� � ������������� ���� NULL ��� ���?
4.10) ������ ������� ����� ������� ����������� ������?
4.11.1) ��� ��� ������� ���� serial/�-����-�����������?
4.11.2) ��� ��� �������� �������� ��� ������� SERIAL?
4.11.3) �� ����� �� ���������� ���, ��� ������������� currval()nextval() �������� � �������������� � ������� ��������������?
4.11.4) ������ ����� �� ���� ������������������ �� ������������ ����� ��� ������ ����������? ������ ��������� ������� ��� ��������� � �������, ��� � ��������� ������������������/SERIAL?
4.12) ��� ����� OID? ��� ����� CTID?
4.13) ������ � ������� ������ "ERROR: Memory exhausted in AllocSetAlloc()"?
4.14) ��� ��� ������, ����� ������ PostgreSQL ��������?
4.15) ��� ��� ������� ������� ������� �� ��������� ����� ��������� ������� �����?
4.16) ��� ��������� ������� ����������?
4.17) ��� ��������� �������, ������������ ��������� ��� ������?
4.18) ��� ��� ������� �� ������� ��������� ����� �������?
4.19) ������ � ������� ������ "relation with OID #### �� ����������", ����� ���������� � ��������� �������� � �������� PL/PgSQL?
4.20) ����� ���� ������� ��� ����������?
4.21) ������ ����� ������� � ������� �� ������������ � � �ϣ� �������?

����� �������

1.1) ��� ����� PostgreSQL? ��� ������������ ��� ��������?

PostgreSQL ������������ Post-Gres-Q-L (����-����-���-��), ����� ������ ������� ������ Postgres. �� ������ �������� ��� ��� ������������ � ������� ����������, ������� �������� � ������� MP3.

PostgreSQL - ��� ��������-����������� ������� ���������� ������ ������ (����), ������� ����� ������������ ����������� ������������ ���� � ������������, ������� ���� � ���� ������ ���������. PostgreSQL - ��� ��������� � ��������� �������� ����������� �����������.

���������� PostgreSQL ��������� ������� �������������, ������������ �� ����� ���� � ��������� ����� ��������. ���������� �������� ������������ �������� � �� ����������� �����-���� ���������. ����������� �������� � FAQ ��� �������������, http://www.PostgreSQL.org/files/documentation/faqs/FAQ_DEV.html

1.2) ������ ��������� ����� �� PostgreSQL?

PostgreSQL ���������������� �� ������������ �������� BSD. ��� �������� �� �������� ����������� �� ��, ��� ����� �������������� �������� ���. ��� �������� ��� �������� � � ��� ��� ��������� ţ ������.

��� ��� �������� BSD, ������� �� ����������:

������� ���������� ������ ������ PostgreSQL

Portions copyright (c) 1996-2005, PostgreSQL Global Development Group Portions Copyright (c) 1994-1996 Regents of the University of California

��������������� ����� �� �������������, �����������, ��������� � ��������������� ������� ������������ ����������� � ��� ������������ ��� ����� �����, ��������� � ��� ���������� ������-���� ����������, ��� ������� ��� ��� ������ ����� ����� ������������� ������ ���� ��������� �� ��������� ������, ������� �������� � ��� ��������� ���������.

�������������� ����������� �� ����� ������� ��������������� �� ����� �����������, ������� ������ ������, ���������� ������ ��� ��������, ����������� ��� ��������� �������������� ������� ������������ ����������� ��� ��� ������������, ���� ���� �������������� ����������� ��� ������� � ����������� ����� �����������.

�������������� ����������� ���������� ���������������� ������������� ����� ��������, �������, �� �� ������������� ������ ����� ����������: ������� �������� ����������� ������ ��� ����������� ��� ��������� ����. ������ ����������� ����������� ��������������� �� ������ ������� "��� ����" � �������������� ����������� �� ������ ������������� �������������, ���������, ����������, ���������� ��� ���������.

1.3) �� ����� ���������� �������� PostgreSQL?

������, PostgreSQL ����� �������� �� ����� ����������� ��������� ����������� � Unix. � ���������� �� ���������, �� ������� ������ ��� ��������, �� ������� ���� ��������� �������� ������� PostgreSQL � ������� ������ ������ ������.

PostgreSQL ����� �������� �� ������������ �������� Microsoft Windows, ���������� �� NT, ����� ��� Win2000, WinXP � Win2003. ����� ������������ �������� �� ������ http://pgfoundry.org/projects/pginstaller. ������ Windows, ���������� �� MS-DOS (Win95, Win98, WinMe) ����� ��������� PostgreSQL � ������� Cygwin.

����� ���������� ������ �������������� ��� Novell Netware 6 �� http://forge.novell.com, � ������ ��� OS/2 (eComStation) �� http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F.

1.4) ��� ����� ����� PostgreSQL?

����� �������, ��������� http://www.postgresql.org/ftp/ � ����� ftp, ��������� ftp://ftp.PostgreSQL.org/pub/.

1.5) ��� �������� ���������?

���������� PostgreSQL ������������� ������ ��������� ������������� ����� E-mail. �������� web-���� ��� �������� �� ������ �������� �� E-mail ���: http://www.postgresql.org/community/lists/. ������� ������ ��� ����, ����� ������ �������� ������� �������� ������ general (����� �������) ��� bugs (������).

������� IRC ������� �������� #postgreql, ������������� �� ������� Freenode (irc.freenode.net). ����� ������������, �� ������ ������������ � Unix ����� ��������� irc -c '#postgresql' "$USER" irc.freenode.net ��� ����� ������ IRC ������. �� ���� �� ������� ���������� ������ �� ��������� (#postgresql-es) � ����������� (#postgresqlfr) ������. ����� ���������� ����� �� PostgreSQL �� ������� EFNet.

������ ������������ ��������� �������� �������� �� http://techdocs.postgresql.org/companies.php.

1.6) ��� ��� �������� �� ������?

�������� ��������� �� ����������� ������ ��ޣ�� �� ������ � PostgreSQL �� ������: http://www.postgresql.org/support/submitbug.

����� ��������� ������� ����� ������ ������ PostgreSQL �� ����� FTP ����� ftp://ftp.PostgreSQL.org/pub/.

1.7) ����� ��������� ������?

��������� ������ PostgreSQL - ��� ������ 8.0.3

�� ��������� ��������� ����� ������� ������ ������ ���, � ������� ������ ������ ��������� �������.

1.8) ����� ������������ ������� � �������?

PostgreSQL �������� ����� ������������, ������� ������� �����������, �������� ������������ ����������� man � ��������� ��������� �������� �������. �������� � ������� /doc. �� ����� ������ ������������� ������������ � �������� �� ������ http://www.PostgreSQL.org/docs.

���������� ��� ����� �� PostgreSQL ��������� �� ������� http://www.PostgreSQL.org/docs/books/awbook.htmlhttp://www.commandprompt.com/ppbook/. ���� ��������� ���� �� PostgreSQL, ������� ����� ������. ���� �� �������� ���������� ������� ����� ������ (Korry Douglas). ������ ������� �� ���� ������ �������� �� ������ http://techdocs.postgresql.org/techdocs/bookreviews.php. ����� ����, �� ������ http://techdocs.PostgreSQL.org/ �� ������ ����� ��������� ����������� ������ ����������� PostgreSQL.

������ ��������� ������ psql ����� ��������� ������ \d ��� ����������� ���������� �� �����, ����������, ��������, ��������� � �.�. - ����������� \? ��� ��������� ������ ��������� ������.

��� ���� �������� ��� ������ ����������.

1.9) ��� ����� ���������� �� ��������� ������� ��� ������������� ������������?

PostgreSQL ������������ ����������� �������� SQL-92. �������� ��� ������ TODO �� ������� ��������� ������, ������������� ������������ � ������� ������.

1.10) ��� ��� ��������� SQL?

��-������, �������� ���� �� ���� �� PostgreSQL, � ������� ���������� ����. ��� ���� ������� - ��� ����� "Teach Yourself SQL in 21 Days, Second Edition" (����� �������������� SQL �� 21 ����, ������ ��������) �� http://members.tripod.com/er4ebus/sql/index.htm. ������ �� ����� ������������� �������� ����� The Practical SQL Handbook, Bowman, Judith S., et al., Addison-Wesley. ������ �������� The Complete Reference SQL, Groff et al., McGraw-Hill.

���� ���������� ������� �� http://www.intermedia.net/support/sql/sqltut.shtm, �� http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM, � �� http://sqlcourse.com.

1.11) ��� ������������� � ������� �������������?

�������� FAQ ��� �������������.

1.12) ��� ���������� PostgreSQL � ������� ����?

���������� ��������� ������� ��������� ������������ �����������: �����������, ������������������, ����������, ��������� � ����.

�����������
PostgreSQL ����� ����������� ������������ �������������� � ������� ������������ ����, ����� ���: ����������, ����������, ��������, �������������, ��������� ����������� ���������� ����� � ������ ����������. � ��� ���� ��������� �����������, ������� ��� � ���: ����, ������������ �������������, �������� ������������, ������� � ����������� ��������������� ���������� ��� ������ � ���������� ����������.

������������������
������������������ PostgreSQL ������ � ������� ������������� ���� � � ���� � �������� �������� �����. � �����-�� ����� �� �������, � �����-�� ���������. ���� ������������������ ������ +/-10% �� ��������� � ������� ����.
����������
�� ��������, ��� ���� ���� ������ ���� �������� ��� ��� ������ �� ����� ������. �� ��������� ��������� ������ �����������, ���������� ���, ������� �������� ������� ������. ������ ������ �������� ������ ����-������������ �� ������� ���� � ������� ������ ������ � ���� ������� �������� ���������� ��� �� ����� ������������� ����������, ���������� �������, ������� ������ � ������������� �������������. �� �����, ��� �� ���������� �������� �� ����, ��� � ������ ����.

���������
��� ������ �������� ������������� �������������� ������� � ������� ������� ������������� � �������������, ������� ����� ������ ������ ����� ��������� ��������. � �� �� �����, �� �� ����������� �����-���� �����������, �� � ������������ ������������ ���� �� ������ ������ �����������. ������ ������ � �������������, ���������� �������������, ������������ � �������� ������� ����� ������ ��������� PostgreSQL ������������� ������ ����. ���������� ������������ ��������� �� ��������� ��������� ����������, ������� �������� ��� ��� ���� ��� �����. (�������� ������ 1.5.)

����
��� ������� ��������� ��� ��� ������������� ���, � �� ��� ������������� �������������. �� ������ ��������� ���� ��� � ��� ������� ��� �����������, �� ����������� ���, ��� ����������� � ����� �������� ����� BSD, ������� ��������� ����.

1.13) ��� ��������� PostgreSQL?

���� �� ����� ������-�� ���������� ��������, ����������� ������� ��� ����������� ��������, �� �������� --- �� ���. � ��� ���� ���� �������� � �������������, ���������� � CVS, �� ��� ������ ������ ������ ��� ���������������� �����, ��� ��� ����������. ������ �������� ������������� � ������� ���������� ������������� � �������������, � �������� ����� ������������� ������. �ӣ ��� ����� -- ��� ����������� �� ������ �������� � ����������� � ����������. (����������� � ��� ��� ���������� � ���������� PostgreSQL �������� � FAQ ��� �������������.)


������� ������������� �� ���������� �����

2.1) ����� ���������� ���� ��� PostgreSQL?

��������� PostgreSQL �������� ������ C � ���������� (embedded) C ����������. ��� ������ ���������� �������� ������������ ��������� � ����������� ��������; ����������������� �������� ��������� �� ������������ ����������� ���������� �������� ����� ������ � ����� ����������� ������� �������������.

��������� ����� ����������������, ����� ��� PHP �������� � ���� ��������� � PostgreSQL. ���������� ��� ����� ������ ��� Perl, TCL, Python � ������ ������, �������� �� http://gborg.postgresql.org � ������ Drivers/Interfaces, � ����� ����� ����� � ��������.

2.2) ����� ����������� ���������� ��� ������������� PostgreSQL ����� Web?

���������� �������� �� �������������� ��� ������ � Web ����� ����� ��: http://www.webreview.com

��� ���������� � Web, PHP http://www.php.net �������� �������� �����������.

� ������� �������, ������ ���������� Perl � DBD::Pg � CGI.pm ��� mod_perl.

2.3) ���� �� � PostgreSQL ����������� ��������� ������������?

��, ����������� �������� � http://techdocs.postgresql.org/guides/GUITools.


������� �����������������

3.1) ��� ��� ���������� PostgreSQL � ����� �������� �� /usr/local/pgsql?

������� ����� --prefix ����� ���������� configure.

3.2) ��� ��� ��������� ������������ � ������ �����������?

�� ���������, PostgreSQL ��������� ������ ���������� �� ��������� ������ ����� ������ ������ Unix ��� TCP/IP ����������. ��� ����, ����� ������ ������ ������ ������������ � ���� �� ������ �������� listen_addressespostgresql.conf, ��������� host-����������� � ����� $PGDATA/pg_hba.conf � �������������� ������.

3.3) ����� ��������� ��� ����� ������� ��� ��������� ������������������?

���������� ��� ������� �������, ������� ������������ ����� ��������� ������������������:

��������� �������
��� �������� ����������� �������� ��� ��������� ������ ������������������:

��������� �������
��������� ��������� � postgresql.conf ������ �� ������������������. ��������� ������ ������ ��������� ��. � Administration Guide/Server Run-time Environment/Run-time Configuration, � ����������� ��. � http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.

����� "������" - ����������� �����������
������� "������" �� ������������������ �������� ������� � http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html http://www.powerpostgresql.com/PerfList/.

3.4) ����� ����������� ��� ������� ���� � �������?

���� ��������� ��������� � ���������� �������, ������������ �� log_*, ����������� ��������������� ������� � ���������� ������ ��������, ������� ����� ������� ��� ������� � ��������� ������������������.

3.5) ������ � ������� ��������� "Sorry, too many clients" ����� ������� ������������ � ����?

�� �������� �������������� �� ��������� ����������� �� 100 ������ ����������� � ���� ������. ��� ���������� ��������� ��� postmaster ����� �� ���������� ������������ backend ���������, ������� �������� max_connections � ����� postgresql.conf � �������������� postmaster.

3.6) ������ ���������� ������ dump � restore ��� ���������� �������� PostgreSQL?

������������ PostgreSQL ������ ������ ��������� ��������� ����� ������������. ����� ������� ���������� � ������ 7.4.0 �� 7.4.1 �� ������� ���������� dump � restore. ������ ��� ������ ���������� ������� (�.�. ��� ���������� ��������, � 7.3 �� 7.4) ����� �������� ���������� ������ ��������� ������ � ������ ������. ��� ��������� ����� ����� ����������� ��������, ��� ��� ��� ����������� ���������� �������� ������������� ������ ������. ��������� dump ��������� �������� ������ � ����� �������, ������� ����� ����� ���� �������� ��� ������������� ������ ����������� �������.

� ��� ��������, ��� ������ ������ �� ����� �� ��������, ��� ���������� ���������� ����� ���� ����������� �������� pg_upgrade ��� ������������� dump/restore. ����������� � ������� ������� ����� ����� ������������ pg_upgrade ��� ����� �������.

3.7) ����� ������������ "������" � ������ ������������?

��������� "������" ������������ ����������� �������� �������� �����������, ���� ������� ������, ��� ����� "������" ����� ���������� ��������. ��� �� ���. ������ ECC, SCSI � ������������ ����������� ����� �������� ����� ������ � ����� ����� ������ ������������������, ��� ����� ������� "������". PostgreSQL ����� �������� �� ����� "������", �� ���� ��� ��� ����� ������� � ������������������, �� � ����� ������� ����� ����� ��������� ��������������� "������". �������� ������ "������" ����� � ����� ������� ��������.


������� ������������

4.1) ��� ��������� SELECT ������ ��� ���������� ������ ������� �������? ������������ ������?

��� ��������� ������ ���������� �����, ���� �� ������ �� ���������� �� ������ ���������� SELECT ����������� LIMIT.

���� ���� �����-���� ������, ������� ��������� � ORDER BY, �� ��������, ��� ���� ������ �������� � �� �����. ���� �� �� ������ ���������� ����������� ����� �� ������ ���������� SELECT, ����������� ������ � FETCH.

To SELECT a random row, use:

    SELECT col
    FROM tab
    ORDER BY random()
    LIMIT 1;

4.2) ��� ��� ����� ����� �������, �������, ���� ������ � ������������ ����������? ��� ��� ������� �������, ������� ���������� psql ��� ��������� ���� ����������?

����� ������������� ������� � psql, ����������� ������� \dt. ������ ������ ������ � psql �� ������ ��������, ��������� \?. ����� ����, �� ������ ���������� �������� ��� psql � ����� pgsql/src/bin/psql/describe.c. �� �������� ������� SQL ������� ������������ ��� ����� � psql ������, ������������ � �������� ����� �����. �� ����� ������ ��������� psql � ������ -E ���, ����� ��� ��������� �������� �������, ������� ��� ���������� ��� ���������� �������� ���� ������. PostgreSQL ����� ������������� 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;

4.4) ������ ������������ ������� ��� ����� � �������, ������ � ���� ������?

���������� ��������� �����������:

������������ ������ ����? ����������� (���������� ���� �� 32 TB)
������������ ������ �������? 32 TB
������������ ������ ������? 1.6 TB
������������ ������ ����? 1 GB
������������ ���������� ����� � �������? ������������
������������ ���������� ������� � �������? 250-1600 � ����������� �� ����
������������ ���������� �������� � �������? ������������

����������, ������� "������������" �� ����� ���� �������������� ��������� �������� �������������� � ��������� ������/���������. ����� �������� ������������� ���� ����������� �������, ����� ���������� ������������������.

������������ ������ ������� � 32 TB �� ������� ����� ������������ ������� ������������ ����� ������� ��������. ������� ������� �������� ��� ��������� ������ �������� � 1 GB, ��� ��� �����������, ������� ����������� �������� ������� �� �����.

������������ ������ ������� � ������������ ���������� ������� ����� ���� ��������� � ������ ����, ���� ������ ����� �� ��������� ����� �������� �� 32k.

���������� �����������, �� �������� ������� �� ����� ����������� ��� ������� ������� ��� 2,000 ��������. � ������� ����� ������� ���� �� ������������� ����-�� �����. ������������ ������������� �������� �������, � ������� ��������������� ������� �� ���� MD5 ������� �������, � �������������� �������������� ��������� ������ ����� ������ �������.

4.5) ��� ����� ��������� ������������ � ���� ������ ����� ��� ���������� ������ �� �������� ���������� �����?

���� PostgreSQL ����� ������������� ��������� ������������ �� 5 ��� ������ ��� ���������� ������ �� �������� ���������� �����.

� �������� �������, ���������� ���� � 100,000 ����� � ������, �� ������� ����� ����� � ��������� ��������. ��� ���� ����� ������, � �������, ���������� 20 ����. ������ �������� ����� �������� 2.8 MB. ������ ���� PostgreSQL, ���������� ��� �� ������ �������� �������������� 6.4 MB �� �������:

    28 ����: �� ������ ��������� ������ � ������� (��������������)
  + 24 �����: ���� ���� � ������������� ����� � ���� ��������� ����
  +  4 �����: ��������� �� �������� ��� ���� ��������� ������
   ----------------------------------------
    56 ���� �� ������ � �������

   ������ �������� ������ � PostgreSQL ���������� 8192 ���� (8 KB), ��� ���:

   8192 ���� �� ��������
   ---------------------   =  146 ����� � ������� �� �������� �� (�����̣���)
     56 ���� �� ������ � �������

     100000 ����� ������
   ----------------------- =  685 ������� � �� (�����̣���)
   146 ����� � ������� �� ��������

   685 ������� �� * 8192 ���� �� �������� = 5,611,520 ���� (5.6 MB)

������� �� ������� ��� �����, �� ��������� ��� ��������� ��� �������� ���������� ������, ��� ����� ����� ���� ������.

�������� NULL �������� ��� ������� ����� � ������� ��� �������� ����� ���� �����.

4.6) ������ ��� ������� �������� �������? ������ ��� �� ���������� ��� �������?

������� �� ������������ ��� ������� �������. ��� ������������ ������ ���� ������� ������ ������������ ������� � ������ �������� ������ ��������� ������� ����� � �������. ��� ��������, ������ ��� ������ � ����� � ����������� ������������ ��� ������������ �������� ����� ���� ���������, ��� ������� ������ ������� ��� �� ���������������� ������������.

����� ���������� ������������� ������������� ������� ��� �����-���� �������, PostgreSQL ������ ����� ���������� �� ���� �������. ��� ���������� ���������� ��� ������������� VACUUM ANALYZE ��� ������ ANALYZE. ��������� ����������, ����������� ������ � ��� ��� ����� ����� � ������� � ���� �� ������ ������������ �������, �� �� ����� ��������� ������ �������. ���������� ����� ������ �� ����������� ������������ ������� ���������� � ������ ����������. ��� ��������� ����������� ������� ������ ������������ ���������� ���� ����������.

������ ������� �� ������������ ��� ORDER BY ��� ��� ���������� ����������. ���������������� ������� ��������� �� ����� ����������� ������ �������, ��� ����� �� �������� � ������� �������. ������, ORDER BY ����� ������������� � LIMIT � � ���� ������ ������ ����� ��������������, ��������� ��� ���������� ����� ������������ ��������� ����� �������. ���������� MAX() � MIN() �� ���������� �������, �� ������ ������������ ��� ���������� �������� � ORDER BYLIMIT:

    SELECT col
    FROM tab
    ORDER BY col [ DESC ]
    LIMIT 1;

���� ��� �������, ��� ����������� ����������� �������� ���������������� �������, ����������� SET enable_seqscan TO 'off' � ��������� ������ �����, ����� �������, ������������� �� ������������ �������� �������.

����� ������������ �������� � ���������, �������� LIKE ��� ~, ������� ����� ���� ������������ � ��������� �������:

� �������� �� ������ 8.0, ������� ����� ������ ���� ������������, ���� ���� ������ ����� �� ��������� � ���������� ������ �������. ��� �������� �������� int2, int8 � numeric �������� �������.

4.7) ��� ���������� �� ��, ��� ����������� ��������� ��� ������?

�������� �������� ����������� ����������� EXPLAIN.

4.8) ��� ��� ��������� ����� ����������� ��������� � ����� ����������� �� �������� ���� ����� ����������� ���������? ��� ��� ������������ ������ ��� ������ ������������ �� �������� ����?

�������� ~ ���������� ����� ����������� ���������, � �������� ~* ���������� ����������� �� �������� ���� ����� ����������� ���������. ����������� �� �������� ������� LIKE ���������� ILIKE.

����������� �� �������� ��������� ������ ���������� ���:

    SELECT *
    FROM tab
    WHERE lower(col) = 'abc';
��� ����������� �� ����� ������������ ����������� ������. ������, ���� �� ��������� ������ ���������, �� ����� �����������:
    CREATE INDEX tabindex ON tab (lower(col));

���� ������������� ������ ��������� ��� UNIQUE, �� �������, ��� ������� �� ��������� ����� ������� ������� � � �������, � � ������ ��������, ����� �� ����� ����� ���������� ��������, ������� ���������� ������ ���������. ����� � ������� ����� ���� ������� ������� ������ � ������̣���� ��������, ����������� ����������� CHECK ��� �������� ����� �������.

4.9) ��� ��� ����������, ��� �������� ���� ����� NULL � �����-���� �������? ���� � ������������� ���� NULL ��� ���?

�� ������ ����������� �������� � IS NULLIS NOT NULL, ��� �����:

   SELECT *
   FROM tab
   WHERE col IS NULL;

����� ������������� ������ �� �������� ����������� ������������ IS NULLIS NOT NULL � ��������� ORDER BY. ����� ��� ����� ������������ �������� ������, �� ��� ���������� ��� ����� ����, ��� �������� ����, ��� ��� ������ � NULL ����� � ��������������� ������ ������:

   SELECT *
   FROM tab
   ORDER BY (col IS NOT NULL);

4.10) ������ ������� ����� ������� ����������� ������?

��� ���������� ��� ���������
VARCHAR(n) varchar ������ ������ ������������ �����, ��� ����������
CHAR(n) bpchar ����������� �������� �� ������������� �����
TEXT text ��� ����������� �������� ����������� ��� �����
BYTEA bytea ������ ���� ���������� ����� (����� ������������ null-���� ��� ������)
"char" char ���� ������

���������� ��� �� ������ �������, ����� �������� ��������� �������� � � ��������� ���������� �� �������.

������ ������ ���� �������� "varlena" ������ (�.�., ������ ������ ����� �� ����� �������� �������, �� ������� ������� ������). ����� �������, ���������� ������������ ������������ ������, ��� ������������ ������. ������, ������� �������� ����� ���������, ��� ��� ���������� �������� ������������ ����� ����� ���� � ������, ��� ���������.

VARCHAR(n) - ��� ������ �������, ����� ����� ������� ������ ���������� �����, �� ����������� ������������� �������. TEXT - ��� ������ ������� ��� ����� �������������� �����, � ����������� ���������� ������ � 1 ��������.

CHAR(n) - ��� ������ ������� ��� �������� �����, ������� ������ ����� ���������� �����. CHAR(n) ����������� �������� �� �������� �����, � �� ����� ��� VARCHAR(n) ������ ������ �������, �� ������� ������� ������. BYTEA ������������ ��� �������� �������� ������, �������� ������� ����� �������� NULL �����. ��� ���� ��������� �����, ����� ������� �������������� ������������������.

4.11.1) ��� ��� ������� ���� serial/�-����-�����������?

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) ��� ��� �������� �������� ��� ������� SERIAL?

���� �� �������� ������� � ��������� ���������� �������� SERIAL �� ������� sequence � ������� ������� nextval() ����� �������� � ����� ��������� ��� �������� ����. ����������� �������-������ � 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, ��� tableserialcolumn �������� �������������� ������� ����� ������� � ����� ������� SERIAL.

� �������� ������������, �� ������ �������� ����������� �������� SERIAL � ������� ������� currval() ����� ���������� ������� �������� �������, ��������

    execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
    new_id = execute("SELECT currval('person_id_seq')");

4.11.3) �� ����� �� ���������� ���, ��� ������������� currval()nextval() �������� � �������������� � ������� ��������������?

���. currval() ���������� ������� ��������, ����������� ����� �������, � �� ������� ��������.

4.11.4) ������ ����� �� ���� ������������������ �� ������������ ����� ��� ������ ����������? ������ ��������� ������� ��� ��������� � �������, ��� � ��������� ������������������/SERIAL?

��� ���������� �������������, �������� �������������������, ��� ������������� �������� �� ����� ������� ���������� � �� ����������� �� ������� ���������� ����������. ��� ����� �������� ������� � ��������� ��� ������ ����������.

4.12) ��� ����� OID? ��� ����� CTID?

������, ����������� � PostgreSQL ��������� ������, �������� ���������� �������������� OID �� ����������� ������ ����� �������������� WITHOUT OIDS. OID - ��� ������������� ����������� ���������� 4-� �������� ����� �����. ������, ����� ���� ��� ��� �������� �������� 4 ���������, �������� OID �������� �������������. PostgreSQL ���������� OID ��� ���������� ����� ���������� ������.

��� ���������� �������� � �������� ������� ������������, ������ �������� �������� ������������� SERIAL ������ OID, ������ ��� ������������������ SERIAL ��������� ������ ������ ������� � ����� ������� ������ ���������� ������������. ��� �������� �������� 8-�� ������� ������������������ �������� ��� SERIAL8.

CTID ������������ ��� ������������� ����������� ���������� ������� � �������� � offset ����������. CTID ���������� ����� ���� ��� ������ � ������� ���� �������� ��� �����������.

TID ������������ ���������� �������� � �������� ��������� �� ���������� ������.

4.13) ������ � ������� ������ "ERROR: Memory exhausted in AllocSetAlloc()"?

���������������� � ��� ����������� ����������� ������ ��� ��� ���� ���� ����� ��������� ����� �� ������������ �������. ����������� ����� �������� postmaster ��������� ��������� �������:

    ulimit -d 262144
    limit datasize 256m
� ����������� �� ���������� �������������� shell, ������ ���� �� ������ ������ ���������� �������, �� ��� �������� ��� ���������� ������� ������� ������ �������� � �������� ����� ��������. ��� ������� �������� ��������� �������� �������� � ���� ��� ��������, ��������� ����� ţ �������. ���� � ��� �������� �������� � SQL ��������, ������ ��� backend ���������� ������� ������� ����� ������, ����������� ��������� ��� ������� ����� �������� �������.

4.14) ��� ��� ������, ����� ������ PostgreSQL ��������?

�� psql, �������� SELECT version();

4.15) ��� ��� ������� ������� ������� �� ��������� ����� ��������� ������� �����?

����������� CURRENT_TIMESTAMP:

CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

4.16) ��� ��� ��������� ������� ����������?

PostgreSQL ������������ ������� ����������, ��������� ����������� ��������� SQL. ��� ��� �������:

    SELECT *
    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
���
    SELECT *
    FROM t1 LEFT OUTER JOIN t2 USING (col);

��� ���������� ������� ���������� t1.col � t2.col, ����� ���������� ����� ����������� ������ � t1 (������� �� ��������� � t2). RIGHT ���������� ������ �������� ����������� ������ t2. FULL ���������� ������ ���������� ��������� ������ ���� ��� ����������� ������ �� t1 � t2. ����� OUTER �������� �������������� � ����������� � LEFT, RIGHTFULL �����������. ������� ���������� ���������� INNER ����������.

4.17) ��� ��������� �������, ������������ ��������� ��� ������?

�� ���������� ������� ������� ������ � ����� ������ �������� �� �������. ��������� PostgreSQL ��������� ��������� �������� ����������� ��� ���� ������, ��������� ����, ��� ������ ���� ����� ����� ���������� ������.

contrib/dblink ��������� ������� ����� ������, ��������� ������ �������. ����������, ������ ����� ������������ ����� ������������� ����������� � ���������� ������ ������ � ����� ������� ���������� ���������� �� ���.

4.18) ��� ��� ������� �� ������� ��������� ����� �������?

�� ������ ����� ������������ �������, ������������ ������, http://techdocs.postgresql.org/guides/SetReturningFunctions.

4.19) ������ � ������� ������ "relation with OID #### �� ����������", ����� ���������� � ��������� �������� � �������� PL/PgSQL?

PL/PgSQL �������� �������� ������� � ���� �� ���������� �������� ����� ������� � ���, ��� ���� ������� PL/PgSQL ���������� � ��������� ������� � ��� ������� ������� ��������� � �������������, � ������� ����� ���������� �����, �� �� ����� �������� � ������, ������ ��� ������������� ���������� ������� �������� ��������� �� ������ ��������� �������. ����� ������ ��� ��������, ����������� EXECUTE ��� ������� � ��������� �������� � PL/PgSQL. ������������� ����� ��������� �������� ������ ������������������ ������ ���.

4.20) ����� ���� ������� ��� ����������?

���� "����������" -- ��� ������ ������, ���� ��������� ������ ���������� ��� ���������� ���������� � ������� ������������� ��� ������.

���������� Master/slave ��������� ����� ���� ������� (master) ������ ��� ���������� �������� ������/������, � �� ����� ��� ��������� (slave) ������� ����� ����������� ������ ������� ������/SELECT. �������� ���������� �������� ��� ���������� master-slave � PostgreSQL �������� Slony-I.

���������� Multi-master ��������� ��������� ������� ������/������ �� ����������, ������������� ���� � ������ �����������. ��� ����������� ����� �������� � ������ ������������������, ������ ��� ���������� ������������� ��������� ����� ����������� ���������. �������� ���������� �������� ��� ����� ���������� � PostgreSQL �������� Pgcluster.

4.21) ������ ����� ������� � ������� �� ������������ � � �ϣ� �������?

�������� ����� ��� ���������� ��-�� ������������� ������� ������� � ����� ������� ��� ������� ��� �������� �������. ��� ������������� ������� �������, ��� ������� � ������� (������� �������� ����������������) ����������� � ��������-��������� ����; ��� ��������, ��� �� ������ ������������ ������� �������, ����� ���������� ��� ����� � �������. ��������� ����������, ����� ��� pgAdmin, �� ����� �������� ������� ��������� ������� ������� �������������. ����� �������, ����� �������������� �������������� �� ������ ��������� ������ �� ��������� ������: