aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/FAQ/FAQ_russian.html511
1 files changed, 214 insertions, 297 deletions
diff --git a/doc/src/FAQ/FAQ_russian.html b/doc/src/FAQ/FAQ_russian.html
index 768271eb848..a4fd9ffb4c2 100644
--- a/doc/src/FAQ/FAQ_russian.html
+++ b/doc/src/FAQ/FAQ_russian.html
@@ -12,12 +12,12 @@
<BODY bgcolor="#ffffff" text="#000000" link="#ff0000" vlink="#a00000" alink="#0000ff">
<H1>Ответы на часто задаваемые вопросы по PostgreSQL</H1>
- <P>Дата последнего обновления: Понедельник 14 февраля 23:35:09 EST 2005</P>
+ <P>Дата последнего обновления: Понедельник 30 мая 09:11:03 EDT 2005</P>
<P>Английский вариант сопровождает: Брюс Момьян (Bruce Momjian) (<A href=
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
</P>
- <P>Перевел на русский: Виктор Вислобоков (<A href=
+ <P>Перевёл на русский: Виктор Вислобоков (<A href=
"mailto:corochoone@perm.ru">corochoone@perm.ru</A>)<BR>
</P>
@@ -43,6 +43,7 @@
<A href="#1.11">1.11</A>) Как присоединится к команде разработчиков?<BR>
<A href="#1.12">1.12</A>) Как сравнивать PostgreSQL с другими
<SMALL>СУБД</SMALL>?<BR>
+ <A href="#1.13">1.13</A>) Кто управляет PostgreSQL?<BR>
<H2 align="center">Вопросы пользователей по клиентской части</H2>
@@ -87,8 +88,9 @@
<A href="#4.8">4.8</A>) Как мне выполнить поиск регулярного выражения
и поиск независимый от регистра букв поиск регулярного выражения?
Как мне использовать индекс для поиска независимого от регистра букв?<BR>
- <A href="#4.9">4.9</A>) Как я могу определить, что значение поля равно
- <SMALL>NULL</SMALL> в каком-либо запросе?<BR>
+ <A href="#4.9">4.9</A>) Как мне определить, что значение поля равно
+ <SMALL>NULL</SMALL> в каком-либо запросе? Могу я отсортировать поля
+ <SMALL>NULL</SMALL> или нет?<BR>
<A href="#4.10">4.10</A>) Каковы отличия между разными символьными
типами?<BR>
<A href="#4.11.1">4.11.1</A>) Как мне создать поле serial/с-авто-увеличением?<BR>
@@ -101,38 +103,26 @@
не используются снова при отмене транзакции? Почему создаются разрывы
при нумерации в колонке, где я использую последовательность/SERIAL?<BR>
<A href="#4.12">4.12</A>) Что такое <SMALL>OID</SMALL>? Что такое
- <SMALL>TID</SMALL>?<BR>
+ <SMALL>CTID</SMALL>?<BR>
<A href="#4.13">4.13</A>) Почему я получаю ошибку <I>"ERROR: Memory
exhausted in AllocSetAlloc()"</I>?<BR>
<A href="#4.14">4.14</A>) Как мне узнать, какая версия PostgreSQL
запущена?<BR>
- <A href="#4.15">4.15</A>) Почему при работе с моим большим объектом
- я получаю ошибку <I>"invalid large obj descriptor"</I>?<BR>
- <A href="#4.16">4.16</A>) Как мне создать колонку которая по умолчанию
+ <A href="#4.15">4.15</A>) Как мне создать колонку которая по умолчанию
будет содержать текущее время?<BR>
- <A href="#4.17">4.17</A>) Как выполнить внешнее связывание?<BR>
- <A href="#4.18">4.18</A>) Как выполнять запросы, использующие несколько
+ <A href="#4.16">4.16</A>) Как выполнить внешнее связывание?<BR>
+ <A href="#4.17">4.17</A>) Как выполнять запросы, использующие несколько
баз данных?<BR>
- <A href="#4.19">4.19</A>) Как мне вернуть из функции несколько строк таблицы?<BR>
- <A href="#4.20">4.20</A>) Почему я получаю ошибку "missing oid",
- когда обращаютсь к временным таблицам в функциях PL/PgSQL?<BR>
- <A href="#4.21">4.21</A>) Какие опции шифрования существуют?<BR>
-
- <H2 align="center">Расширения PostgreSQL</H2>
- <A href="#5.1">5.1</A>) Я написал функцию определяемую пользователем.
- Когда я запускаю ее в <I>psql</I>, почему я получаю core dump?<BR>
- <A href="#5.2">5.2</A>) Как я могу внести некоторые классные новые
- типы и функции в PostgreSQL?<BR>
- <A href="#5.3">5.3</A>) Как мне написать C функцию, возвращающую
- строку таблицы?<BR>
- <A href="#5.4">5.4</A>) Я изменил исходный файл. Почему после
- перекомпиляции я не вижу изменений?<BR>
-
+ <A href="#4.18">4.18</A>) Как мне вернуть из функции несколько строк таблицы?<BR>
+ <A href="#4.19">4.19</A>) Почему я получаю ошибку "relation with OID ####
+ не существует", когда обращаютсь к временным таблицам в функциях PL/PgSQL?<BR>
+ <A href="#4.20">4.20</A>) Какие есть решения для репликации?<BR>
+
<HR>
<H2 align="center">Общие вопросы</H2>
- <H4><A name="1.1">1.1</A>) Что такое PostgreSQL? Как произносится это название?</H4>
+ <H3><A name="1.1">1.1</A>) Что такое PostgreSQL? Как произносится это название?</H3>
<P>PostgreSQL произносится <I>Post-Gres-Q-L (Пост-Грес-Кью-Эл)</I>,
также часто говорят просто <I>Postgres</I>.</P>
@@ -151,7 +141,7 @@
http://www.PostgreSQL.org/files/documentation/faqs/FAQ_DEV.html</A>
</P>
- <H4><A name="1.2">1.2</A>) Каковы авторские права на PostgreSQL?</H4>
+ <H3><A name="1.2">1.2</A>) Каковы авторские права на PostgreSQL?</H3>
<P>PostgreSQL распространяется по классической лицензии BSD. Эта
лицензия не содержит ограничений на то, как будет использоваться
@@ -163,7 +153,7 @@
<P>Система Управления Базами Данных PostgreSQL</P>
<P>Portions copyright (c) 1996-2005, PostgreSQL Global Development
- Group Portions Copyright (c) 1994-6 Regents of the University of
+ Group Portions Copyright (c) 1994-1996 Regents of the University of
California</P>
<P>Предоставляются права на использование, копирование, изменение
@@ -187,16 +177,16 @@
"КАК ЕСТЬ" И КАЛИФОРНИЙСКИЙ УНИВЕРСИТЕТ НЕ ОБЯЗАН ПРЕДОСТАВЛЯТЬ
СОПРОВОЖДЕНИЕ, ПОДДЕРЖКУ, ОБНОВЛЕНИЯ, РАСШИРЕНИЯ ИЛИ ИЗМЕНЕНИЯ.</P>
- <H4><A name="1.3">1.3</A>) На каких платформах работает PostgreSQL?</H4>
+ <H3><A name="1.3">1.3</A>) На каких платформах работает PostgreSQL?</H3>
<P>Обычно, PostgreSQL может работать на любой современной платформе
совместимой с Unix. В инструкции по установке, вы найдете список
тех платформ, на которых были проведены тестовые запуски PostgreSQL
к моменту выхода данной версии.</P>
- <P>Начиная с версии 8.0, PostgreSQL без всяких ухищрений работает на
- операционных системах Microsoft Windows, основанных на NT, таких как
- Win2000, WinXP и Win2003. Пакет инсталлятора доступен по адресу
+ <P>PostgreSQL также работает на операционных системах Microsoft
+ Windows, основанных на NT, таких как Win2000, WinXP и Win2003.
+ Пакет инсталлятора доступен по адресу
<A href="http://pgfoundry.org/projects/pginstaller">
http://pgfoundry.org/projects/pginstaller</A>. Версии Windows,
основанные на MS-DOS (Win95, Win98, WinMe) могут запускать
@@ -208,14 +198,13 @@
<A href="http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&amp;button=Search&amp;key=postgreSQL&amp;stype=all&amp;sort=type&amp;dir=%2F">
http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&amp;button=Search&amp;key=postgreSQL&amp;stype=all&amp;sort=type&amp;dir=%2F</A>.</P>
- <H4><A name="1.4">1.4</A>) Где можно взять PostgreSQL?</H4>
+ <H3><A name="1.4">1.4</A>) Где можно взять PostgreSQL?</H3>
- <P>Например, воспользовавшись анонимным доступом на ftp сайт
- PostgreSQL <A href=
- "ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A>.
- Список зеркал вы найдете на нашем основном сайте.</P>
+ <P>Через браузер, используя <a href="http://www.postgresql.org/ftp/">
+ http://www.postgresql.org/ftp/</a> и через ftp, используя
+ <A href="ftp://ftp.PostgreSQL.org/pub/">ftp://ftp.PostgreSQL.org/pub/</A>.</P>
- <H4><A name="1.5">1.5</A>) Где получить поддержку?</H4>
+ <H3><A name="1.5">1.5</A>) Где получить поддержку?</H3>
<P>Сообщество PostgreSQL предоставляет помощь множеству пользователей
через E-mail. Основной web-сайт для подписки на списки рассылки по
@@ -233,28 +222,30 @@
языках. Также существует канал по PostgreSQL на сервере EFNet.</P>
<P>Список коммерческой поддержки компаний доступен на
- <A href="http://techdocs.postgresql.org/companies.php">http://techdocs.postgresql.org/companies.php</A>.</P>
+ <A href="http://techdocs.postgresql.org/companies.php">
+ http://techdocs.postgresql.org/companies.php</A>.</P>
- <H4><A name="1.6">1.6</A>) Как мне сообщить об ошибке?</H4>
+ <H3><A name="1.6">1.6</A>) Как мне сообщить об ошибке?</H3>
<P>Посетите страничку со специальной формой отчёта об ошибке в
PostgreSQL по адресу:
- <A href="http://www.postgresql.org/support/submitbug">
+ <A HREF="http://www.postgresql.org/support/submitbug">
http://www.postgresql.org/support/submitbug</A>.</P>
<P>Также проверьте наличие более свежей версии PostgreSQL на нашем
- FTP сайте <A href="ftp://ftp.postgresql.org/pub">
- ftp://ftp.PostgreSQL.org/pub</A>.</P>
+ FTP сайте <A href="ftp://ftp.postgresql.org/pub/">
+ ftp://ftp.PostgreSQL.org/pub/</A>.
- <H4><A name="1.7">1.7</A>) Какая последняя версия?</H4>
+ <H3><A name="1.7">1.7</A>) Какая последняя версия?</H3>
- <P>Последний выпуск PostgreSQL - это версия 8.0.1</P>
+ <P>Последний выпуск PostgreSQL - это версия 8.0.2</P>
- <P>Мы планируем выпускать новые версии каждые 10-12 месяцев.</P>
+ <P>Мы планируем выпускать новые старшие версии каждый год,
+ а младшие версии каждые несколько месяцев.</P>
- <H4><A name="1.8">1.8</A>) Какая документация имеется в наличии?</H4>
+ <H3><A name="1.8">1.8</A>) Какая документация имеется в наличии?</H3>
<P>PostgreSQL содержит много документации, включая большое руководство,
страницы электронного руководства man и некоторые маленькие тестовые
@@ -264,11 +255,13 @@
<P>Существует две книги по PostgreSQL доступные по адресам <A href=
"http://www.PostgreSQL.org/docs/books/awbook.html">http://www.PostgreSQL.org/docs/books/awbook.html</A>
- и <a href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</a>.
- Список книг по PostgreSQL, которые можно купить доступен по адресу
- <a href="http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.postgresql.org/techdocs/bookreviews.php</a>.
- Кроме того, по адресу <a href="http://techdocs.postgresql.org">http://techdocs.PostgreSQL.org/</a>
- вы можете найти коллекцию технических статей посвященных PostgreSQL.</p>
+ и <a href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</a>.
+ Есть несколько книг по PostgreSQL, которые можно купить.
+ Одну из наиболее популярных написал Корри Дуглас (Korry Douglas).
+ Список обзоров по этим книгам доступен по адресу
+ <a href="http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.postgresql.org/techdocs/bookreviews.php</a>.
+ Кроме того, по адресу <a href="http://techdocs.postgresql.org">http://techdocs.PostgreSQL.org/</a>
+ вы можете найти коллекцию технических статей посвященных PostgreSQL.</P>
<P>Клиент командной строки <I>psql</I> имеет несколько команд \d для
отображения информации по типам, операторам, функциям, агрегатам и т.д. -
@@ -276,56 +269,41 @@
<P>Наш сайт содержит еще больше информации.</P>
- <H4><A name="1.9">1.9</A>) Как найти информацию об известных ошибках
- или отсутствующих возможностях?</H4>
+ <H3><A name="1.9">1.9</A>) Как найти информацию об известных ошибках
+ или отсутствующих возможностях?</H3>
<P>PostgreSQL поддерживает расширенный подкласс <SMALL>SQL</SMALL>-92.
Смотрите наш список <A href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</A>
на предмет известных ошибок, отсутствующих возможностей и будущих
планов.</P>
- <H4><A name="1.10">1.10</A>) Как мне научиться <SMALL>SQL</SMALL>?</H4>
-
- <P>Книга по PostgreSQL на <A href=
- "http://www.PostgreSQL.org/docs/books/awbook.html">http://www.PostgreSQL.org/docs/books/awbook.html</A>
- научит <SMALL>SQL</SMALL>. Существует другая книга по PostgreSQL на
- <A href="http://www.commandprompt.com/ppbook/">
- http://www.commandprompt.com/ppbook.</A>
- Есть прекрасный учебник на <A href=
- "http://www.intermedia.net/support/sql/sqltut.shtm">http://www.intermedia.net/support/sql/sqltut.shtm,</A>
- на <A href=
- "http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM">
- http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM,</A>
- и на <A href=
- "http://sqlcourse.com/">http://sqlcourse.com.</A></P>
+ <H3><A name="1.10">1.10</A>) Как мне научиться <SMALL>SQL</SMALL>?</H3>
- <P>Еще один учебник - это книга "Teach Yourself SQL in 21 Days, Second Edition"
- (Освой самостоятельно SQL за 21 день, Вторая редакция)
- на <A href=
- "http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</A></P>
-
- <P>Многим из наших пользователей нравится книга
+ <P>Во-первых, возьмите одну из книг по PostgreSQL, о которых говорилось
+ выше. Еще один учебник - это книга "Teach Yourself SQL in 21 Days,
+ Second Edition" (Освой самостоятельно SQL за 21 день, Вторая редакция)
+ на <A href="http://members.tripod.com/er4ebus/sql/index.htm">
+ http://members.tripod.com/er4ebus/sql/index.htm</A>.
+ Многим из наших пользователей нравится книга
<I>The Practical SQL Handbook</I>,
Bowman, Judith S., et al., Addison-Wesley. Другим нравится <I>The
Complete Reference SQL</I>, Groff et al., McGraw-Hill.</P>
- <H4><A name="1.11">1.11</A>) Как присоединится к команде разработчиков?</H4>
+ Есть прекрасный учебник на <A href=
+ "http://www.intermedia.net/support/sql/sqltut.shtm">http://www.intermedia.net/support/sql/sqltut.shtm,</A>
+ на <A href="http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM">
+ http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM,</A>
+ и на <A href="http://sqlcourse.com/">http://sqlcourse.com.</A></P>
+
- <P>Для начала, скачайте последнюю версию исходных текстов и прочтите
- FAQ и документацию для разработчиков PostgreSQL на нашем сайте или в
- дистрибутиве. Затем, подпишитесь на списки рассылки <I>pgsql-hackers</I> и
- <I>pgsql-patches</I>. Далее, отправляйте исправления (patches) высокого
- качества в список pgsql-patches.</P>
+ <H3><A name="1.11">1.11</A>) Как присоединится к команде разработчиков?</H3>
- <P>Существует ограниченный список людей, который имеют привелегию
- вносить изменения в <SMALL>CVS</SMALL> архив PostgreSQL. Каждый
- из этих людей в свое время отправил так много высококачественных исправлений,
- что их было невозможно оставить без внимания и они были удостоены
- превилегии вносить изменения, и мы уверены, что те исправления, которые
- они внесут будут высокого качества.</P>
+ <P>Смотрите <a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html">
+ FAQ для разработчиков</A>.</P>
- <H4><A name="1.12">1.12</A>) Как сравнивать PostgreSQL с другими
- <SMALL>СУБД</SMALL>?</H4>
+
+ <H3><A name="1.12">1.12</A>) Как сравнивать PostgreSQL с другими
+ <SMALL>СУБД</SMALL>?</H3>
<P>
Существует несколько методов сравнения программного обеспечения:
@@ -348,14 +326,8 @@
<DD>Производительность PostgreSQL сходна с другими коммерческими
СУБД и с СУБД с открытым исходным кодом. В каких-то вещах мы быстрее,
- в каких-то медленнее. В сравнении с MySQL или линейной
- СУБД, мы быстрее, когда пользователей много, а также на сложных
- запросах и при чтении/записи загрузки запроса. MySQL быстрее для простых
- SELECT запросов, выполняемых небольшим количеством пользователей.
- И разумеется, MySQL не имеет каких-либо возможностей из
- перечисленых выше, в секции <I>Возможности</I>.
- Мы делаем упор на надежность и расширенные возможности, но мы также
- продолжаем увеличивать производительность с каждым выпуском. <BR>
+ в каких-то медленнее. Наша производительности обычно +/-10% по
+ сравнению с другими СУБД.
<BR>
</DD>
@@ -396,10 +368,25 @@
</DD>
</DL>
+ <H3><A name="1.13">1.13</A>) Кто управляет PostgreSQL?</H3>
+
+ <P>Если вы ищите какого-то особенного человека, центральный
+ комитет или управляющую компанию, то напрасно --- их нет.
+ У нас есть ядро комитета и разработчиков, работающих с CVS,
+ но эти группы служат больше для административных целей, чем
+ для управления. Проект напрямую функционирует с помощью
+ сообщества разработчиков и пользователей, к которому может
+ присоединится каждый. Всё что нужно -- это подписаться на
+ списки рассылки и участвовать в дискуссиях. (Подробности о
+ том как включиться в разработку PostgreSQL смотрите в
+ <a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html">
+ FAQ для разработчиков</A>.)</P>
- <H2 align="center">Вопросы пользователей по клиентской части</H2>
+ <HR>
- <H4><A name="2.1">2.1</A>) Какие интерфейсы есть для PostgreSQL?</H4>
+ <H3 align="center">Вопросы пользователей по клиентской части</H3>
+
+ <H3><A name="2.1">2.1</A>) Какие интерфейсы есть для PostgreSQL?</H3>
<P>Установка PostgreSQL включает только <small>C</small> и встроенный
(embedded) <small>C</small> интерфейсы. Все другие интерфейсы
@@ -414,8 +401,8 @@
в секции <i>Drivers/Interfaces</I>, а также через поиск в Интернет.</P>
- <H4><A name="2.2">2.2</A>) Какие инструменты существуют для использования
- PostgreSQL через Web?</H4>
+ <H3><A name="2.2">2.2</A>) Какие инструменты существуют для использования
+ PostgreSQL через Web?</H3>
<P>Прекрасное введение во взаимодействие баз данных и Web можно найти на:
<A href="http://www.webreview.com">http://www.webreview.com</A></P>
@@ -423,33 +410,26 @@
<P>Для интеграции с Web, PHP <A href="http://www.php.net">
http://www.php.net</A> является неплохим интерфейсом.</P>
- <P>В сложных случаях, многие пользуются Perl и CGI.pm или mod_perl.</P>
-
- <H4><A name="2.3">2.3</A>) Есть ли у PostgreSQL графический интерфейс
- пользователя?</H4>
-
- <P>Да, существует несколько графических интерфейсов для PostgreSQL.
- Они включают PgAdmin III (<A href="http://www.pgadmin.org/">http://www.pgadmin.org</A>),
- PgAccess (<A href="http://www.pgaccess.org/">http://www.pgaccess.org</A>),
- RHDB Admin (<A href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb/</A>),
- TORA (<A href="http://www.globecom.net/tora/">http://www.globecom.net/tora/</A>
- частично коммерческое ПО)
- и Rekall (<A href="http://www.rekallrevealed.org/">
- http://www.rekallrevealed.org/</A>). Также есть
- PhpPgAdmin (<A href="http://phppgadmin.sourceforge.net/">
- http://phppgadmin.sourceforge.net/</A>) - интерфейс к PostgreSQL,
- основанный на Web.</P>
+ <P>В сложных случаях, многие пользуются Perl и DBD::Pg с CGI.pm
+ или mod_perl.</P>
+
+ <H3><A name="2.3">2.3</A>) Есть ли у PostgreSQL графический интерфейс
+ пользователя?</H3>
+
+ <P>Да, подробности смотрите в <a href="http://techdocs.postgresql.org/guides/GUITools">
+ http://techdocs.postgresql.org/guides/GUITools</A>.</P>
+
<HR>
<H2 align="center">Вопросы администрирования</H2>
- <H4><A name="3.1">3.1</A>) Как мне установить PostgreSQL в место отличное
- от <I>/usr/local/pgsql</I>?</H4>
+ <H3><A name="3.1">3.1</A>) Как мне установить PostgreSQL в место отличное
+ от <I>/usr/local/pgsql</I>?</H3>
<P>Задайте опцию <I>--prefix</I> когда запускаете <I>configure</I>.</P>
- <H4><A name="3.2">3.2</A>) Как мне управлять соединениями с других
- компьютеров?</H4>
+ <H3><A name="3.2">3.2</A>) Как мне управлять соединениями с других
+ компьютеров?</H3>
<P>По умолчанию, PostgreSQL разрешает только соединения на локальной
машине через сокеты домена Unix или TCP/IP соединения. Для того, чтобы
@@ -458,8 +438,8 @@
host-авторизация в файле <I>$PGDATA/pg_hba.conf</I> и перестартовать
сервер.</P>
- <H4><A name="3.3">3.3</A>) Какие настройки мне нужно сделать для улучшения
- производительности?</H4>
+ <H3><A name="3.3">3.3</A>) Какие настройки мне нужно сделать для улучшения
+ производительности?</H3>
<P>Существует три главных области, которые потенциально могут
увеличить производительность:</P>
@@ -510,55 +490,17 @@
</DD>
</DL>
- <H4><A name="3.4">3.4</A>) Какие возможности для отладки есть в
- наличии?</H4>
+ <H3><A name="3.4">3.4</A>) Какие возможности для отладки есть в
+ наличии?</H3>
<P>Есть множество установок в настройках сервера, начинающихся
на <code>log_*</code>, позволяющих протоколировать запросы
и статистику работы процесса, которая очень полезна для отладки
и измерения производительности.</P>
- <P><B>Для предоставления более детальной информации разработчикам
- сервера при отладке какой-либо проблемы должны пользоваться
- следующие инструкции.</B></P>
-
- <P>Таким же образом можно производить и отладку севера, если он
- работает неправильно. Во-первых, при запуске <I>configure</I> с
- опцией --enable-cassert, многие вызовы <I>assert()</I> позволяют
- отслеживать работу backend процесса и остановку программы при
- возникновении каких-либо неожиданностей.</P>
-
- <P>Если <I>postmaster</I> не запущен, вы можете запустить
- <I>postgres</I> backend из командной строки и ввести ваш оператор
- <SMALL>SQL</SMALL> напрямую. Это рекомендуется <B>только</B> для
- целей отладки. Заметим, что в этом режиме, запрос завершается символом
- новой строки, а не точкой с запятой. Если вы производили компиляцию
- с отладочными символами, вы можете использовать любой отладчик, чтобы
- посмотреть, что случилось. Поскольку backend запускается не из
- <I>postmaster</I>, он не запускается в идентичном окружении и значит
- проблемы итераций блокировок/backend не могут быть воспроизведены.</P>
-
- <P>Если <I>postmaster</I> запущен, запустите <I>psql</I> в одном
- окне, затем найдите <SMALL>PID</SMALL> процесса <I>postgres</I>,
- используемый <I>psql</I>, используя <CODE>SELECT pg_backend_pid()</CODE>.
- Используйте отладчик для подключения к <I>postgres</I> <SMALL>PID</SMALL>.
- Вы можете установить точки прерывания в отладчике и запустить запрос
- из <I>psql</I>. Если
- вы производите отладку запуска <I>postgres</I>, вы можете установить
- PGOPTIONS="-W n", и затем запустить <I>psql</I>. Эта опция приводит
- к задержке процесса запуска на <I>n</I> секунд, в течение которых
- вы можете подключить к процессу отладчик, установить любые точки
- прерывания и продолжить запуск.</P>
-
- <P>Вы также можете скомпилировать PostgreSQL с профилированием для
- того, чтобы увидеть какие функции сколько времени выполняются.
- Файлы профилирования backend'а находятся в каталоге
- <I>pgsql/data/base/dbname</I>. Файл профилирования клиента
- будет помещен в текущий каталог клиента. В Linux для выполнения
- профилирования требуется компиляции с <I>-DLINUX_PROFILE</I>.</P>
-
- <H4><A name="3.5">3.5</A>) Почему я получаю сообщение <I>"Sorry, too
- many clients"</I> когда пытаюсь подключиться к базе?</H4>
+
+ <H3><A name="3.5">3.5</A>) Почему я получаю сообщение <I>"Sorry, too
+ many clients"</I> когда пытаюсь подключиться к базе?</H3>
<P>Вы достигли установленного по умолчанию ограничения на 100 сессий
подключения к базе данных. Вам необходимо увеличить для
@@ -567,11 +509,11 @@
и перестартовать <I>postmaster</I>.</P>
- <H4><A name="3.6">3.6</A>) Почему необходимо делать dump и restore при
- обновлении выпусков PostgreSQL?</H4>
+ <H3><A name="3.6">3.6</A>) Почему необходимо делать dump и restore при
+ обновлении выпусков PostgreSQL?</H3>
<P>Разработчики PostgreSQL делают только небольшие изменения между
- подвыпусками. Таким образом обновление с версии 7.4 до 7.4.1 не требует
+ подвыпусками. Таким образом обновление с версии 7.4.0 до 7.4.1 не требует
выполнения dump и restore. Однако при выходе очередного выпуска
(т.е. при обновлении например, с 7.3 на 7.4) часто меняется внутренний
формат системных таблиц и файлов данных. Эти изменения часто носят
@@ -585,8 +527,10 @@
использования dump/restore. Комментарии к выпуску говорит когда можно
использовать <i>pg_upgrade</i> для этого выпуска.</P>
- <H4><A name="3.7">3.7</A>) Какое компьютерное "железо" я должен
- использовать?</H4>
+
+ <H3><A name="3.7">3.7</A>) Какое компьютерное "железо" я должен
+ использовать?</H3>
+
<P>Поскольку "железо" персональных компьютеров является наиболее
совместимым, люди склонны верить, что такое "железо" имеет одинаковое
качество. Это не так. Память ECC, SCSI и качественные материнские платы
@@ -600,26 +544,27 @@
<H2 align="center">Вопросы эксплуатации</H2>
- <H4><A name="4.1">4.1</A>) Как выполнить <SMALL>SELECT</SMALL> только
- для нескольких первых строчек запроса? Произвольной строки?</H4>
+ <H3><A name="4.1">4.1</A>) Как выполнить <SMALL>SELECT</SMALL> только
+ для нескольких первых строчек запроса? Произвольной строки?</H3>
<P>Для получения только нескольких строк, если вы знаете их количество
- на момент выполнения <SMALL>SELECT</SMALL> используйте <SMALL>LIMIT</SMALL>.
+ на момент выполнения <SMALL>SELECT</SMALL> используйте <SMALL>LIMIT</SMALL>.</P>
Если есть какой-либо индекс, который совпадает с <SMALL>ORDER BY</SMALL>,
то возможно, что весь запрос выполнен и не будет. Если вы не знаете
количества необходимых строк на момент выполнения <SMALL>SELECT</SMALL>,
используйте курсор и <SMALL>FETCH</SMALL>.</P>
- <p>To <small>SELECT</small> a random row, use:</p>
-<pre> SELECT col
+ <P>To <small>SELECT</small> a random row, use:</P>
+<PRE> SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
-</pre>
+</PRE>
- <H4><A name="4.2">4.2</A>) Как мне найти какие таблицы, индексы,
+
+ <H3><A name="4.2">4.2</A>) Как мне найти какие таблицы, индексы,
базы данных и пользователи существуют? Как мне увидеть запросы,
- которые использует <I>psql</I> для получения этой информации?</H4>
+ которые использует <I>psql</I> для получения этой информации?</H3>
<P>Чтобы просматривать таблицы в <I>psql</I>, используйте команду \dt.
Полный список команд в <I>psql</I> вы можете получить, используя \?.
@@ -642,7 +587,7 @@
для получения информации из системных таблиц базы данных.</P>
- <H4><A name="4.3">4.3</A>) Как изменить тип данных колонки?</H4>
+ <H3><A name="4.3">4.3</A>) Как изменить тип данных колонки?</H3>
<P>В 8.0 и более поздних версиях, изменение типа колонки выполняется
очень легко через <SMALL>ALTER TABLE ALTER COLUMN TYPE</SMALL>.</P>
@@ -656,13 +601,12 @@
COMMIT;
</PRE>
- <H4><A name="4.4">4.4</A>) Каковы максимальные размеры для строк в таблице,
- таблиц и базы данных?</H4>
+ <H3><A name="4.4">4.4</A>) Каковы максимальные размеры для строк в таблице,
+ таблиц и базы данных?</H3>
<P>Существуют следующие ограничения:</P>
<BLOCKQUOTE>
<TABLE>
-<TBODY>
<TR>
<TD>Максимальный размер базы?</TD>
<TD>неограничен (существуют базы на 32 TB)</TD>
@@ -691,7 +635,6 @@
<TD>Максимальное количество индексов в таблице?</TD>
<TD>неограничено</TD>
</TR>
-</TBODY>
</TABLE>
</BLOCKQUOTE>
<BR>
@@ -709,8 +652,8 @@
могут быть увеличены в четыре раза, если размер блока по умолчанию будет
увеличен до 32k.</P>
- <H4><A name="4.5">4.5</A>) Как много дискового пространства в базе данных
- нужно для сохранения данных из обычного текстового файла?</H4>
+ <H3><A name="4.5">4.5</A>) Как много дискового пространства в базе данных
+ нужно для сохранения данных из обычного текстового файла?</H3>
<P>СУБД PostgreSQL может потребоваться дискового пространства до 5 раз
больше для сохранения данных из простого текстового файла.</P>
@@ -747,10 +690,10 @@
занимают очень мало места.
</P>
- <H4><A name="4.6">4.6</A>) Почему мои запросы работают медлено? Почему
- они не используют мои индексы?</H4>
+ <H3><A name="4.6">4.6</A>) Почему мои запросы работают медлено? Почему
+ они не используют мои индексы?</H3>
- <P>Индексы не используются для каждого запроса автоматически. Они
+ <P>Индексы не используются для каждого запроса. Они
используются только если таблица больше минимального размера и запрос
выбирает только маленький процент строк в таблице. Так устроено,
потому что доступ к диску с применением рандомизации при сканировании
@@ -774,17 +717,18 @@
и в этом случае индекс будет использоваться, поскольку при выполнении
будет возвращаться небольшая часть таблицы. Фактически MAX() и MIN() не
используют индексы, но индекс используется при построении запросов с
- <SMALL>ORDER BY</SMALL> и <SMALL>LIMIT</SMALL>:</P>
-<pre>
+ <SMALL>ORDER BY</SMALL> и <SMALL>LIMIT</SMALL>:
+<PRE>
SELECT col
FROM tab
ORDER BY col [ DESC ]
LIMIT 1;
-</pre>
+</PRE>
<P>Если вам кажется, что оптимизатор некорректно выбирает последовательный
перебор, используйте <CODE>SET enable_seqscan TO 'off'</CODE> и
- запустите тесты, чтобы увидеть, не стало-ли сканирование индексов быстрее.
+ запустите запрос снова, чтобы увидеть, действительно ли сканирование
+ индексов быстрее.
</P>
<P>Когда используются операции с шаблонами, например <SMALL>LIKE</SMALL>
@@ -810,15 +754,15 @@
если типы данных точно не совпадали с индексными типами колонок. Это
особенно касалось int2, int8 и numeric индексов колонок.</P>
- <H4><A name="4.7">4.7</A>) Как посмотреть на то, как оптимизатор выполняет
- мой запрос?</H4>
+ <H3><A name="4.7">4.7</A>) Как посмотреть на то, как оптимизатор выполняет
+ мой запрос?</H3>
<P>Смотрите страницу руководства посвященную <SMALL>EXPLAIN</SMALL>.</P>
- <H4><A name="4.8">4.8</A>) Как мне выполнить поиск регулярного выражения
+ <H3><A name="4.8">4.8</A>) Как мне выполнить поиск регулярного выражения
и поиск независимый от регистра букв поиск регулярного выражения?
- Как мне использовать индекс для поиска независимого от регистра букв?</H4>
+ Как мне использовать индекс для поиска независимого от регистра букв?</H3>
<P>Оператор <I>~</I> производит поиск регулярного выражения, а оператор
<I>~*</I> производит независимый от регистра букв поиск регулярного
@@ -832,23 +776,40 @@
WHERE lower(col) = 'abc';
</PRE>
-<P> Эта конструкция не будет использовать стандартный индекс. Однако, если
- вы создадите индекс выражения, он будет использован:</P>
+ Эта конструкция не будет использовать стандартный индекс. Однако, если
+ вы создадите индекс выражения, он будет использован:
<PRE>
CREATE INDEX tabindex ON tab (lower(col));
</PRE>
- <H4><A name="4.9">4.9</A>) Как я могу определить, что значение поля
- равно <SMALL>NULL</SMALL> в каком-либо запросе?</H4>
+ <H3><A name="4.9">4.9</A>) Как мне определить, что значение поля равно
+ <SMALL>NULL</SMALL> в каком-либо запросе? Могу я отсортировать поля
+ <SMALL>NULL</SMALL> или нет?</H3>
<P>Вы просто сравниваете значение с <SMALL>IS NULL</SMALL> и
- <SMALL>IS NOT NULL</SMALL>.</P>
+ <SMALL>IS NOT NULL</SMALL>, как здесь:</P>
+<PRE>
+ SELECT *
+ FROM tab
+ WHERE col IS NULL;
+</PRE>
+
+ <P>Чтобы отсортировать данные по значению <NULL> используйте модификаторы
+ <SMALL>IS NULL</SMALL> и <SMALL>IS NOT NULL</SMALL> в выражении
+ <SMALL>ORDER BY</SMALL>. Когда они будут генерировать значения
+ <I>истина</I>, то при сортировке они будут выше, чем значения
+ <I>ложь</I>, так что записи с NULL будут в отсортированном списке сверху:</P>
- <H4><A name="4.10">4.10</A>) Каковы отличия между разными символьными
- типами?</H4>
+<PRE>
+ SELECT *
+ FROM tab
+ ORDER BY (col IS NOT NULL);
+</PRE>
+
+ <H3><A name="4.10">4.10</A>) Каковы отличия между разными символьными
+ типами?</H3>
<BLOCKQUOTE>
<TABLE>
-<TBODY>
<TR>
<TH>Тип</TH>
<TH>Внутреннее имя</TH>
@@ -879,7 +840,6 @@
<TD>char</TD>
<TD>один символ</TD>
</TR>
-</TBODY>
</TABLE>
</BLOCKQUOTE>
@@ -889,8 +849,7 @@
<P>Первые четыре типа являются "varlena" типами (т.е., первые
четыре байта на диске являются длинной, за которой следуют данные).
Таким образом, фактически используемое пространство больше, чем
- обозначенный размер. Однако, эти типы данных также поддаются сжатию
- или могут быть сохранены не в строком виде через <SMALL>TOAST</SMALL>,
+ обозначенный размер. Однако, длинные значения также сжимаются,
так что занимаемое дисковое пространство может также быть и меньше,
чем ожидалось.</P>
@@ -906,8 +865,8 @@
которых могут включать <SMALL>NULL</SMALL> байты. Все типы описанные
здесь, имеют сходные характеристики производительности.</P>
- <H4><A name="4.11.1">4.11.1</A>) Как мне создать поле
- serial/с-авто-увеличением?</H4>
+ <H3><A name="4.11.1">4.11.1</A>) Как мне создать поле
+ serial/с-авто-увеличением?</H3>
<P>PostgreSQL поддерживает тип данных <SMALL>SERIAL</SMALL>. Он
автоматически создает последовательность. Например:</P>
@@ -918,7 +877,7 @@
);
</PRE>
-<P> автоматически транслируется в: </P>
+ автоматически транслируется в:
<PRE>
CREATE SEQUENCE person_id_seq;
CREATE TABLE person (
@@ -930,8 +889,8 @@
Смотрите подробности о последовательностях на странице руководства
посвященной <I>create_sequence</I>.
- <H4><A name="4.11.2">4.11.2</A>) Как мне получить значение при вставке
- <SMALL>SERIAL</SMALL>?</H4>
+ <H3><A name="4.11.2">4.11.2</A>) Как мне получить значение при вставке
+ <SMALL>SERIAL</SMALL>?</H3>
<P>Один из способов состоит в получении следующего значения
<SMALL>SERIAL</SMALL> из объекта sequence с помощью функции
@@ -960,16 +919,16 @@
</PRE>
- <H4><A name="4.11.3">4.11.3</A>) Не может ли получиться так, что
+ <H3><A name="4.11.3">4.11.3</A>) Не может ли получиться так, что
использование <I>currval()</I> и <I>nextval()</I> приведет к
- зациклированию с другими пользователями?</H4>
+ зациклированию с другими пользователями?</H3>
<P>Нет. <i>currval()</i> возвращает текущее значение, назначенное вашей
сессией, а не другими сессиями.</P>
- <H4><A name="4.11.4">4.11.4</A>) Почему числа из моей последовательности
+ <H3><A name="4.11.4">4.11.4</A>) Почему числа из моей последовательности
не используются снова при отмене транзакции? Почему создаются разрывы
- при нумерации в колонке, где я использую последовательность/SERIAL?</H4>
+ при нумерации в колонке, где я использую последовательность/SERIAL?</H3>
<P>Для реализации конкуретности, значения последовательностей, при
необходимости выдаются во время запуска транзакций и не блокируются
@@ -977,8 +936,8 @@
нумерации при отмене транзакций.</P>
- <H4><A name="4.12">4.12</A>) Что такое <SMALL>OID</SMALL>? Что такое
- <SMALL>TID</SMALL>?</H4>
+ <H3><A name="4.12">4.12</A>) Что такое <SMALL>OID</SMALL>? Что такое
+ <SMALL>CTID</SMALL>?</H3>
<P>Каждая, создаваемая в PostgreSQL табличная строка, получает уникальный
индентификатор <SMALL>OID</SMALL> за исключением случая когда
@@ -993,17 +952,17 @@
O<SMALL>ID</SMALL>, потому что последовательности <SMALL>SERIAL</SMALL>
уникальны только внутри таблицы и таким образом меньше подвержены
переполнению. Для хранения значений 8-ми байтной последовательности
- доступен тип <SMALL>SERIAL8</SMALL>.</P>
+ доступен тип <SMALL>SERIAL8</SMALL>.
- <P>T<SMALL>ID</SMALL> используется для идентификации специальных
- физических записей с блочными и offset значениями. T<SMALL>ID</SMALL>
+ <P>C<SMALL>TID</SMALL> используется для идентификации специальных
+ физических записей с блочными и offset значениями. C<SMALL>TID</SMALL>
изменяется после того как строки в таблице были изменены или перегружены.
- T<SMALL>ID</SMALL> используется индексными записями в качестве
+ <P>T<SMALL>ID</SMALL> используется индексными записями в качестве
указателя на физические записи.</P>
- <H4><A name="4.13">4.13</A>) Почему я получаю ошибку <I>"ERROR: Memory
- exhausted in AllocSetAlloc()"</I>?</H4>
+ <H3><A name="4.13">4.13</A>) Почему я получаю ошибку <I>"ERROR: Memory
+ exhausted in AllocSetAlloc()"</I>?</H3>
<P>Предположительно у вас закончилась виртуальная память
или что ваше ядро имеет маленький лимит на определенные ресурсы.
@@ -1022,38 +981,21 @@
клиентом, потому что backend возвращает слишком большой объем данных,
попытайтесь выполнить эту команду перед запуском клиента.
- <H4><A name="4.14">4.14</A>) Как мне узнать, какая версия PostgreSQL
- запущена?</H4>
+ <H3><A name="4.14">4.14</A>) Как мне узнать, какая версия PostgreSQL
+ запущена?</H3>
<P>Из <I>psql</I>, наберите <CODE>SELECT version();</CODE></P>
- <H4><A name="4.15">4.15</A>) Почему при работе с моим большим объектом
- я получаю ошибку <I>"invalid large obj descriptor"</I>?</H4>
-
- <P>Вам нужно при использовании большого объекта поместить в начале
- <CODE>BEGIN WORK</CODE> и в конце <CODE>COMMIT</CODE>, а внутри
- получившегося блока <CODE>lo_open</CODE> ... <CODE>lo_close.</CODE></P>
- <P>В настоящий момент PostgreSQL требует, чтобы при закрытии большого
- объекта происходило выполнение транзакции. Таким образом, первая же
- попытка сделать что-либо с большим объектом, не соблюдая данного правила
- приведет к сообщению <I>invalid large obj descriptor</I>, так как
- код выполняющий работу над большим объектом (по крайней мере в
- настоящий момент) будет генерировать сообщение об ошибке если вы не
- используете транзакцию.</P>
-
- <P>Если вы используете такой интерфейс клиента как <SMALL>ODBC</SMALL>,
- вам возможно понадобится установить <CODE>auto-commit off.</CODE></P>
-
- <H4><A name="4.16">4.16</A>) Как мне создать колонку которая по умолчанию
- будет содержать текущее время?</H4>
+ <H3><A name="4.15">4.15</A>) Как мне создать колонку которая по умолчанию
+ будет содержать текущее время?</H3>
<P>Используйте <I>CURRENT_TIMESTAMP</I>:</P>
<PRE>
CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
</PRE>
- <H4><A name="4.17">4.17</A>) Как мне выполнить внешнее связывание?</H4>
+ <H3><A name="4.16">4.16</A>) Как мне выполнить внешнее связывание?</H3>
<P>PostgreSQL поддерживает внешнее связывание,
используя стандартный синтаксис SQL. Вот два примера:</P>
@@ -1077,8 +1019,8 @@ CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
<SMALL>RIGHT</SMALL> и <SMALL>FULL</SMALL> связываниях. Обычные
связывания называются <SMALL>INNER</SMALL> связывания.</P>
- <H4><A name="4.18">4.18</A>) Как выполнять запросы, использующие несколько
- баз данных?</H4>
+ <H3><A name="4.17">4.17</A>) Как выполнять запросы, использующие несколько
+ баз данных?</H3>
<P>Не существует способа создать запрос к базам данных отличным от текущей.
Поскольку PostgreSQL загружает системные каталоги специфичные для базы
@@ -1089,14 +1031,16 @@ CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
соедиенения с различными базами данных и таких образом объединять
информацию из них.</P>
- <H4><A name="4.19">4.19</A>) Как мне вернуть из функции несколько строк таблицы?</H4>
+ <H3><A name="4.18">4.18</A>) Как мне вернуть из функции несколько строк таблицы?</H3>
<P>Вы можете легко использовать функции, возвращающие список,
<A href="http://techdocs.postgresql.org/guides/SetReturningFunctions">
http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.</P>
- <H4><A name="4.20">4.20</A>) Почему я получаю ошибку "missing oid",
- когда обращаютсь к временным таблицам в функциях PL/PgSQL?</H4>
+
+ <H3><A name="4.19">4.19</A>) Почему я получаю ошибку "relation with OID ####
+ не существует", когда обращаютсь к временным таблицам в функциях PL/PgSQL?</H3>
+
<P>PL/PgSQL кэширует сценарии функции и один из негативных эффектов этого
состоит в том, что если функция PL/PgSQL обращается к временной таблице
и эта таблица позднее удаляется и пересоздается, а функция затем вызывается
@@ -1106,53 +1050,26 @@ CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
таблицам в PL/PgSQL. Использование этого оператора заставит запрос
перегенерироваться каждый раз.</P>
- <h4><a name="4.21">4.21</a>) Какие опции шифрования существуют?
- </h4>
- <ul>
- <li><i>contrib/pgcrypto</i> содержит много функций шифрования для
- использования в <small>SQL</small> запросах.</li>
- <li>Для шифрования передаваемых данных от клиента к серверу, на сервере
- в файле <i>postgresql.conf</i>, опция <i>ssl</i> должна быть установлена
- в <i>true</i>, в файле <i>pg_hba.conf</i> должна быть соответствующая
- запись <i>host</i> или <i>hostssl</i> и на стороне клиента <i>sslmode</i>
- не должен быть запрещён через <i>disable</i>. (Заметим, что также
- возможно использование независимых внешних шифрующих транспортов, таких
- как stunnel или ssh, вместо собственных SSL соединений PostgreSQL).</li>
- <li>Пароли пользователей к базе данных автоматически шифруются, при
- сохранении в системных таблицах.</li>
- <li>Сервер можно запустить, используя шифрованную файловую систему.</li>
- </ul>
- <HR>
-
- <H2 align="center">Расширения PostgreSQL</H2>
-
- <H4><A name="5.1">5.1</A>) Я написал функцию определяемую пользователем.
- Когда я запускаю ее в <I>psql</I>, почему я получаю core dump?</H4>
-
- <P>Проблема может заключаться в нескольких вещах. Попытайтесь сперва
- протестировать вашу функцию в отдельной самостоятельной программе.</P>
-
- <H4><A name="5.2">5.2</A>) Как я могу внести некоторые классные новые
- типы и функции в PostgreSQL?</H4>
- <P>Отправьте ваши расширения в список рассылки <I>pgsql-hackers</I>
- и они по возможности будут помещены в подкаталог <I>contrib/</I>.</P>
+ <H3><A name="4.20">4.20</a>) Какие есть решения для репликации?</H3>
- <H4><A name="5.3">5.3</A>) Как мне написать C функцию, возвращающую
- строку таблицы?</H4>
-
- <P>В версиях PostgreSQL, начиная с 7.3, функции, возвращающие таблицы
- полностью поддерживаются в C, PL/PgSQL и SQL. Подробности смотрите в
- Руководстве Программиста. Пример возвращающей таблицу функции,
- написанной на C, можно найти в <i>contrib/tablefunc</i>.</P>
-
- <H4><A name="5.4">5.4</A>) Я изменил исходный файл. Почему после
- перекомпиляции я не вижу изменений?</H4>
-
- <P>Файлы <I>Makefile</I> не имеют правильных зависимостей для include
- файлов. Вы должны выполнить <I>make clean</I> и затем <I>make</I>.
- Если вы используете <SMALL>GCC</SMALL> вы можете использовать опцию
- <I>--enable-depend</I> в <I>configure</I> чтобы поручить компилятору
- автоматически отслеживать зависимости.</P>
+ <P>Хотя "репликация" -- это единый термин, есть несколько разных технологий
+ для выполнения репликаций с разными особенностями для каждой.</P>
+
+ <P>Репликация Master/slave позволяет иметь один главный (master) сервер
+ для выполнения запросов чтения/записи, в то время как подчинённые
+ (slave) сервера могут производить только запросы
+ чтения/<SMALL>SELECT</SMALL>. Наиболее популярным решением для репликации
+ master-slave в PostgreSQL является
+ <A href="http://gborg.postgresql.org/project/slony1/projdisplay.php">
+ Slony-I</A>.</P>
+
+ <P>Репликация Multi-master позволяет выполнять запросы чтения/записи
+ на нескольких, реплицируемых друг с другом компьюетрах. Эта особенность
+ также приводит к потере производительности, потому что необходима
+ синхронизация изменений между несколькими серверами. Наиболее
+ популярным решением для такой репликации в PostgreSQL является
+ <A href="http://pgfoundry.org/projects/pgcluster/">Pgcluster</A>.
+
</BODY>
</HTML>