|
|
|
|
@ -14,7 +14,7 @@ |
|
|
|
|
alink="#0000ff"> |
|
|
|
|
<H1>Ответы на часто задаваемые вопросы по PostgreSQL</H1> |
|
|
|
|
|
|
|
|
|
<P>Дата последнего обновления: Среда 22 Августа 19:20:40 EDT 2002</P> |
|
|
|
|
<P>Дата последнего обновления: Среда 9 Октября 23:14:53 EDT 2002</P> |
|
|
|
|
|
|
|
|
|
<P>Английский вариант сопровождает: Брюс Момьян (Bruce Momjian) (<A href= |
|
|
|
|
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR> |
|
|
|
|
@ -142,6 +142,7 @@ |
|
|
|
|
<A href="#4.25">4.25</A>) Как мне вернуть из функции несколько записей?<BR> |
|
|
|
|
<A href="#4.26">4.26</A>) Почему я не могу надежно создавать/удалять |
|
|
|
|
временные таблицы в функциях PL/PgSQL?<BR> |
|
|
|
|
<A href="#4.27">4.27</A>) Какие опции репликации существуют?<BR> |
|
|
|
|
|
|
|
|
|
<H2 align="center">Расширения PostgreSQL</H2> |
|
|
|
|
<A href="#5.1">5.1</A>) Я написал функцию определяемую пользователем. |
|
|
|
|
@ -324,7 +325,7 @@ |
|
|
|
|
|
|
|
|
|
<H4><A name="1.7">1.7</A>) Какая последняя версия?</H4> |
|
|
|
|
|
|
|
|
|
<P>Последний выпуск PostgreSQL - это версия 7.2.2.</P> |
|
|
|
|
<P>Последний выпуск PostgreSQL - это версия 7.2.3.</P> |
|
|
|
|
|
|
|
|
|
<P>Мы планируем выпускать новые версии каждые четыре месяца.</P> |
|
|
|
|
|
|
|
|
|
@ -874,7 +875,7 @@ |
|
|
|
|
|
|
|
|
|
<P>Существуют следующие ограничения:</P> |
|
|
|
|
<PRE> |
|
|
|
|
Максимальный размер базы? неограничен (существуют базы на 60 GB) |
|
|
|
|
Максимальный размер базы? неограничен (существуют базы на 1 TB) |
|
|
|
|
Максимальный размер таблицы? 16 TB |
|
|
|
|
Максимальный размер записи? 1.6 TB |
|
|
|
|
Максимальный размер поля? 1 GB |
|
|
|
|
@ -1317,12 +1318,15 @@ BYTEA bytea |
|
|
|
|
|
|
|
|
|
<P>В настоящий момент, мы связываем позапросы для внешних запросов |
|
|
|
|
через последовательный перебор результата подзапроса для каждой |
|
|
|
|
записи внешнего запроса. Попробуйте заменить <CODE>IN</CODE> на |
|
|
|
|
записи внешнего запроса. Если подзапрос возвращает только несколько |
|
|
|
|
записей и внешний запрос возвращает много записей, |
|
|
|
|
<CODE><SMALL>IN</SMALL></CODE> работает наиболее быстро. Чтобы |
|
|
|
|
увеличить скорость в других запросах, замените <CODE>IN</CODE> на |
|
|
|
|
<CODE>EXISTS</CODE>:</P> |
|
|
|
|
<PRE> |
|
|
|
|
<CODE>SELECT * |
|
|
|
|
FROM tab |
|
|
|
|
WHERE col1 IN (SELECT col2 FROM TAB2) |
|
|
|
|
WHERE col IN (SELECT subcol FROM subtab) |
|
|
|
|
</CODE> |
|
|
|
|
</PRE> |
|
|
|
|
|
|
|
|
|
@ -1330,10 +1334,12 @@ BYTEA bytea |
|
|
|
|
<PRE> |
|
|
|
|
<CODE>SELECT * |
|
|
|
|
FROM tab |
|
|
|
|
WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2) |
|
|
|
|
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col) |
|
|
|
|
</CODE> |
|
|
|
|
</PRE> |
|
|
|
|
|
|
|
|
|
Чтобы такая конструкция работала быстро, колонка <CODE>subcol</CODE> |
|
|
|
|
должна быть проиндексирована. |
|
|
|
|
Мы надеемся убрать это ограничение в будущем выпуске. |
|
|
|
|
|
|
|
|
|
<H4><A name="4.23">4.23</A>) Как мне выполнить внешнее связывание?</H4> |
|
|
|
|
@ -1384,8 +1390,10 @@ BYTEA bytea |
|
|
|
|
Поскольку PostgreSQL загружает системные каталоги специфичные для базы |
|
|
|
|
данных, непонятно даже, как должен себя вести такой межбазовый запрос.</P> |
|
|
|
|
|
|
|
|
|
<P>Разумеется, клиент может одновременно устанавливать соедиенения с |
|
|
|
|
различными базами данных и таких образом объединять информацию из них.</P> |
|
|
|
|
<P><I>/contrib/dblink</I> позволяет запросы между базами, используя |
|
|
|
|
вызовы функций. Разумеется, клиент может одновременно устанавливать |
|
|
|
|
соедиенения с различными базами данных и таких образом объединять |
|
|
|
|
информацию из них.</P> |
|
|
|
|
|
|
|
|
|
<H4><A name="4.25">4.25</A>) Как мне вернуть из функции несколько записей?</H4> |
|
|
|
|
|
|
|
|
|
@ -1397,15 +1405,22 @@ BYTEA bytea |
|
|
|
|
|
|
|
|
|
<H4><A name="4.26">4.26</A>) Почему я не могу надежно создавать/удалять |
|
|
|
|
временные таблицы в функциях PL/PgSQL?</H4> |
|
|
|
|
PL/PgSQL кэширует содержимое функции и один из негативных эффектов этого |
|
|
|
|
<P>PL/PgSQL кэширует содержимое функции и один из негативных эффектов этого |
|
|
|
|
состоит в том, что если функция PL/PgSQL обращается к временной таблице |
|
|
|
|
и эта таблица позднее удаляется и пересоздается, а функция затем вызывается |
|
|
|
|
снова, то ее вызов приведет к ошибке, потому что скэшированное содержимое |
|
|
|
|
функции содержит указатель на старую временную таблицу. Чтобы решить эту |
|
|
|
|
проблему, используйте <SMALL>EXECUTE</SMALL> для доступа к временным |
|
|
|
|
таблицам в PL/PgSQL. Использование этого оператора заставит запрос |
|
|
|
|
перегенерироваться каждый раз. |
|
|
|
|
<HR> |
|
|
|
|
перегенерироваться каждый раз.</P> |
|
|
|
|
|
|
|
|
|
<H4><A name="4.27">4.27</A>) Какие опции репликации существуют?</H4> |
|
|
|
|
|
|
|
|
|
<P>Есть несколько решений для репликации типа master/slave. Они допускают |
|
|
|
|
использование только одного сервера для внесения изменений в базу данных, |
|
|
|
|
а slave серверы просто позволяют читать данные из базы.</P> |
|
|
|
|
|
|
|
|
|
<HR> |
|
|
|
|
|
|
|
|
|
<H2 align="center">Расширения PostgreSQL</H2> |
|
|
|
|
|
|
|
|
|
|