|
14 | 14 | alink="#0000ff"> |
15 | 15 | <H1>Ответы на часто задаваемые вопросы по PostgreSQL</H1> |
16 | 16 |
|
17 | | -<P>Дата последнего обновления: Среда22 Августа 19:20:40 EDT 2002</P> |
| 17 | +<P>Дата последнего обновления: Среда9 Октября 23:14:53 EDT 2002</P> |
18 | 18 |
|
19 | 19 | <P>Английский вариант сопровождает: Брюс Момьян (Bruce Momjian) (<Ahref= |
20 | 20 | "mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR> |
|
142 | 142 | <Ahref="#4.25">4.25</A>) Как мне вернуть из функции несколько записей?<BR> |
143 | 143 | <Ahref="#4.26">4.26</A>) Почему я не могу надежно создавать/удалять |
144 | 144 | временные таблицы в функциях PL/PgSQL?<BR> |
| 145 | +<Ahref="#4.27">4.27</A>) Какие опции репликации существуют?<BR> |
145 | 146 |
|
146 | 147 | <H2align="center">Расширения PostgreSQL</H2> |
147 | 148 | <Ahref="#5.1">5.1</A>) Я написал функцию определяемую пользователем. |
|
324 | 325 |
|
325 | 326 | <H4><Aname="1.7">1.7</A>) Какая последняя версия?</H4> |
326 | 327 |
|
327 | | -<P>Последний выпуск PostgreSQL - это версия 7.2.2.</P> |
| 328 | +<P>Последний выпуск PostgreSQL - это версия 7.2.3.</P> |
328 | 329 |
|
329 | 330 | <P>Мы планируем выпускать новые версии каждые четыре месяца.</P> |
330 | 331 |
|
|
874 | 875 |
|
875 | 876 | <P>Существуют следующие ограничения:</P> |
876 | 877 | <PRE> |
877 | | - Максимальный размер базы? неограничен (существуют базы на60 GB) |
| 878 | + Максимальный размер базы? неограничен (существуют базы на1 TB) |
878 | 879 | Максимальный размер таблицы? 16 TB |
879 | 880 | Максимальный размер записи? 1.6 TB |
880 | 881 | Максимальный размер поля? 1 GB |
|
1317 | 1318 |
|
1318 | 1319 | <P>В настоящий момент, мы связываем позапросы для внешних запросов |
1319 | 1320 | через последовательный перебор результата подзапроса для каждой |
1320 | | - записи внешнего запроса. Попробуйте заменить<CODE>IN</CODE> на |
| 1321 | + записи внешнего запроса. Если подзапрос возвращает только несколько |
| 1322 | + записей и внешний запрос возвращает много записей, |
| 1323 | +<CODE><SMALL>IN</SMALL></CODE> работает наиболее быстро. Чтобы |
| 1324 | + увеличить скорость в других запросах, замените<CODE>IN</CODE> на |
1321 | 1325 | <CODE>EXISTS</CODE>:</P> |
1322 | 1326 | <PRE> |
1323 | 1327 | <CODE>SELECT * |
1324 | 1328 | FROM tab |
1325 | | - WHEREcol1 IN (SELECTcol2 FROMTAB2) |
| 1329 | + WHEREcol IN (SELECTsubcol FROMsubtab) |
1326 | 1330 | </CODE> |
1327 | 1331 | </PRE> |
1328 | 1332 |
|
1329 | 1333 | на: |
1330 | 1334 | <PRE> |
1331 | 1335 | <CODE>SELECT * |
1332 | 1336 | FROM tab |
1333 | | - WHERE EXISTS (SELECTcol2 FROMTAB2 WHEREcol1 =col2) |
| 1337 | + WHERE EXISTS (SELECTsubcol FROMsubtab WHEREsubcol =col) |
1334 | 1338 | </CODE> |
1335 | 1339 | </PRE> |
1336 | 1340 |
|
| 1341 | + Чтобы такая конструкция работала быстро, колонка<CODE>subcol</CODE> |
| 1342 | + должна быть проиндексирована. |
1337 | 1343 | Мы надеемся убрать это ограничение в будущем выпуске. |
1338 | 1344 |
|
1339 | 1345 | <H4><Aname="4.23">4.23</A>) Как мне выполнить внешнее связывание?</H4> |
|
1384 | 1390 | Поскольку PostgreSQL загружает системные каталоги специфичные для базы |
1385 | 1391 | данных, непонятно даже, как должен себя вести такой межбазовый запрос.</P> |
1386 | 1392 |
|
1387 | | -<P>Разумеется, клиент может одновременно устанавливать соедиенения с |
1388 | | - различными базами данных и таких образом объединять информацию из них.</P> |
| 1393 | +<P><I>/contrib/dblink</I> позволяет запросы между базами, используя |
| 1394 | + вызовы функций. Разумеется, клиент может одновременно устанавливать |
| 1395 | + соедиенения с различными базами данных и таких образом объединять |
| 1396 | + информацию из них.</P> |
1389 | 1397 |
|
1390 | 1398 | <H4><Aname="4.25">4.25</A>) Как мне вернуть из функции несколько записей?</H4> |
1391 | 1399 |
|
|
1397 | 1405 |
|
1398 | 1406 | <H4><Aname="4.26">4.26</A>) Почему я не могу надежно создавать/удалять |
1399 | 1407 | временные таблицы в функциях PL/PgSQL?</H4> |
1400 | | - PL/PgSQL кэширует содержимое функции и один из негативных эффектов этого |
| 1408 | +<P>PL/PgSQL кэширует содержимое функции и один из негативных эффектов этого |
1401 | 1409 | состоит в том, что если функция PL/PgSQL обращается к временной таблице |
1402 | 1410 | и эта таблица позднее удаляется и пересоздается, а функция затем вызывается |
1403 | 1411 | снова, то ее вызов приведет к ошибке, потому что скэшированное содержимое |
1404 | 1412 | функции содержит указатель на старую временную таблицу. Чтобы решить эту |
1405 | 1413 | проблему, используйте<SMALL>EXECUTE</SMALL> для доступа к временным |
1406 | 1414 | таблицам в PL/PgSQL. Использование этого оператора заставит запрос |
1407 | | - перегенерироваться каждый раз. |
1408 | | -<HR> |
| 1415 | + перегенерироваться каждый раз.</P> |
| 1416 | + |
| 1417 | +<H4><Aname="4.27">4.27</A>) Какие опции репликации существуют?</H4> |
| 1418 | + |
| 1419 | +<P>Есть несколько решений для репликации типа master/slave. Они допускают |
| 1420 | + использование только одного сервера для внесения изменений в базу данных, |
| 1421 | + а slave серверы просто позволяют читать данные из базы.</P> |
| 1422 | + |
| 1423 | +<HR> |
1409 | 1424 |
|
1410 | 1425 | <H2align="center">Расширения PostgreSQL</H2> |
1411 | 1426 |
|
|