diff options
author | Bruce Momjian <bruce@momjian.us> | 2002-08-23 02:53:20 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2002-08-23 02:53:20 +0000 |
commit | b5ccfc216aa4065c560546f425b6e9ca7343eb8e (patch) | |
tree | 0c3aa27999e234e64b9748e5c425cd89552fdeb9 /doc/src/FAQ/FAQ_russian.html | |
parent | 3d801dbb1cb71e4afb9b41331458a53770559d6c (diff) | |
download | postgresql-b5ccfc216aa4065c560546f425b6e9ca7343eb8e.tar.gz postgresql-b5ccfc216aa4065c560546f425b6e9ca7343eb8e.zip |
Update Russian FAQ.
Diffstat (limited to 'doc/src/FAQ/FAQ_russian.html')
-rw-r--r-- | doc/src/FAQ/FAQ_russian.html | 93 |
1 files changed, 73 insertions, 20 deletions
diff --git a/doc/src/FAQ/FAQ_russian.html b/doc/src/FAQ/FAQ_russian.html index de99068802b..744e522a2c4 100644 --- a/doc/src/FAQ/FAQ_russian.html +++ b/doc/src/FAQ/FAQ_russian.html @@ -14,7 +14,7 @@ alink="#0000ff"> <H1>Ответы на часто задаваемые вопросы по PostgreSQL</H1> - <P>Дата последнего обновления: Четверг 11 Июня 06:36:10 EDT 2002</P> + <P>Дата последнего обновления: Среда 22 Августа 19:20:40 EDT 2002</P> <P>Английский вариант сопровождает: Брюс Момьян (Bruce Momjian) (<A href= "mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR> @@ -82,6 +82,8 @@ clients"</I> когда пытаюсь подключиться к базе?<BR> <A href="#3.9">3.9</A>) Что это за файлы <I>pg_sorttempNNN.NN</I> в моем каталоге с базой данных?<BR> + <A href="#3.10">3.10</A>) Почему необходимо делать dump и restore при + обновлении выпусков PostgreSQL?<BR> <H2 align="center">Вопросы эксплуатации</H2> @@ -322,7 +324,7 @@ <H4><A name="1.7">1.7</A>) Какая последняя версия?</H4> - <P>Последний выпуск PostgreSQL - это версия 7.2.</P> + <P>Последний выпуск PostgreSQL - это версия 7.2.2.</P> <P>Мы планируем выпускать новые версии каждые четыре месяца.</P> @@ -502,8 +504,8 @@ некоторое количество ежемесячных и одноразовых расходов, которые требуют денег. Если вы или ваша компания имеет деньги, которые можно передать в помощь нашим усилиям, пожалуйста посетите страничку - <A href= - "http://www.pgsql.com/pg_goodies">http://www.pgsql.com/pg_goodies</A> + <A href="https://store.pgsql.com/shopping/index.php?id=1"> + https://store.pgsql.com/shopping/index.php?id=1</A> и сделайте свой вклад.</P> <P>Хотя на страничке говорится о PostgreSQL, Inc, пункт @@ -594,6 +596,9 @@ <LI>Embedded <SMALL>HTML</SMALL> (<A href= "http://www.php.net">PHP from http://www.php.net</A>)</LI> </UL> + <P>Дополнительные интерфейсы доступны по адресу <A href="http://www.postgresql.org/interfaces.html"> + http://www.postgresql.org/interfaces.html.</A> + </P> <HR> <H2 align="center">Вопросы администрирования</H2> @@ -796,6 +801,25 @@ не происходить, если backend процесс падает во время сортировки. Если у вас не запущено ни одного backend процесса, то вы можете спокойно удалить файлы pg_tempNNN.NN.</P> + + <A name="3.10">3.10</A>) Почему необходимо делать dump и restore при + обновлении выпусков PostgreSQL?<BR> + + <P>Разработчики PostgreSQL делают только небольшие изменения между + подвыпусками. Таким образом обновление с версии 7.2 до 7.2.1 не требует + выполнения dump и restore. Однако при выходе очередного выпуска часто + меняется внутренний формат системных таблиц и файлов данных. Эти + изменения часто носят комплексный характер, так что нет возможности + обеспечить обратную совместимость файлов данных. Выполение dump + позволяет получить данные в общем формате, который затем может быть + загружен при использовании нового внутреннего формата.</P> + + <P> + В тех выпусках, где формат данных на диске не меняется, для проведения + обновления может быть использован сценарий <i>pg_upgrade</i> без + использования dump/restore. Комментарии к выпуску говорит когда можно + использовать <i>pg_upgrade</i> для этого выпуска. + </P> <HR> <H2 align="center">Вопросы эксплуатации</H2> @@ -852,12 +876,13 @@ <PRE> Максимальный размер базы? неограничен (существуют базы на 60 GB) Максимальный размер таблицы? 16 TB - Максимальный размер записи? неограничен начиная с версии 7.1 - Максимальный размер поля? 1 GB начиная с версии 7.1 + Максимальный размер записи? 1.6 TB + Максимальный размер поля? 1 GB Максимальное количество записей в таблице? неограничено Максимальное количество колонок в таблице? 250-1600 в зависимости от типа Максимальное количество индексов в таблице? неограничено </PRE> + Разумеется, понятие "неограничено" на самом деле ограничивается доступным дисковым пространиством и размерами памяти/своппинга. Когда значения перечисленные выше неоправдано большие, может @@ -905,6 +930,10 @@ <P>Индексы не требуют так много, но поскольку они создаются для большого количества данных, они также могут быть велики.</P> + + <P>Значения <small>NULL</small> сохраняются в битах и поэтому они + занимают очень мало места. + </P> <H4><A name="4.7">4.7</A>) Как мне убедиться, что существуют нужные мне таблицы, индексы, базы данных и пользователи?</H4> @@ -926,7 +955,7 @@ используются только если таблица больше минимального размера и запрос выбирает только маленький процент записей в таблице. Так устроено, потому что доступ к диску с применением рандомизации при сканировании - индексов иногда медленнее, чем простое чтение таблицы или ее + индексов может быть медленнее, чем простое чтение таблицы или ее последовательное сканирование.</P> <P>Чтобы определить необходимость использования индекса для какой-либо @@ -944,14 +973,32 @@ сортировкой обычно быстрее, чем поиск по индексам в большой таблице. Однако, <SMALL>ORDER BY</SMALL> часто комбинируется с <SMALL>LIMIT</SMALL> и в этом случае индекс будет использоваться, поскольку при выполнении - будет возвращаться небольшая часть таблицы.</P> + будет возвращаться небольшая часть таблицы. Фактически MAX() и MIN() не + используют индексы, но индекс используется при построении запросов с + <SMALL>ORDER BY</SMALL> и <SMALL>LIMIT</SMALL>: +<pre> + SELECT col + FROM tab + ORDER BY col [ DESC ] + LIMIT 1 +</pre> <P>Когда используются операции с шаблонами, например <SMALL>LIKE</SMALL> - или <I>~</I>, индексы могут быть использованы только если начало - строки-шаблона для поиска, соответствует началу искомой строки. - Следовательно, для того, чтобы использовать индексы, шаблон в - <SMALL>LIKE</SMALL> не должен начинаться на <I>%</I>, а в <I>~</I> - (поиск регулярного выражения) должен начинаться на <I>^</I>.</P> + или <I>~</I>, индексы могут быть использованы в следующих случаях: + </P><UL> + <LI>Начало строки поиска должно совпадать с началом искомой строки, т.е.:</LI> + <UL> + <LI><small>LIKE</small> шаблоны не должны начинаться с <i>%.</i><LI> + <LI><i>~</i> шаблоны регулярных выражений должна начинаться на <i>^.</i><LI> + </UL> + <LI>Строка поиска не должна начинаться с символа класса, т.е. [a-e].</LI> + <LI>Не должен использоваться поиск независимый от регистра такой как + <small>ILIKE</small> и <i>~</i>. Вместо него используйте функциональные + индексы, которые описаны в этом FAQ ниже.</LI> + <LI>Во время <i>initdb</i> должна использоваться локаль по умолчанию + <i>C</i>. + </UL> + <p> <H4><A name="4.9">4.9</A>) Как посмотреть на то, как оптимизатор выполняет мой запрос?</H4> @@ -999,20 +1046,19 @@ <P>Оператор <I>~</I> производит поиск регулярного выражения, а оператор <I>~*</I> производит независимый от регистра букв поиск регулярного выражения. Независимый от регистра вариант <SMALL>LIKE</SMALL> называется - <SMALL>ILIKE</SMALL> в PostgreSQL начиная с версии 7.1.</P> + <SMALL>ILIKE</SMALL>.</P> <P>Независимое от регистра сравнение обычно выражается так:</P> <PRE> SELECT * FROM tab WHERE lower(col) = 'abc' - </PRE> + Эта конструкция не будет использовать стандартный индекс. Однако, если вы создадите функциональный индекс, он будет использован: <PRE> CREATE INDEX tabindex on tab (lower(col)); - </PRE> <H4><A name="4.13">4.13</A>) Как я могу определить, что значение поля @@ -1064,6 +1110,7 @@ BYTEA bytea массив байт переменной длины (можно использовать name TEXT ); </PRE> + автоматически транслируется в: <PRE> CREATE SEQUENCE person_id_seq; @@ -1073,6 +1120,7 @@ BYTEA bytea массив байт переменной длины (можно использовать ); CREATE UNIQUE INDEX person_id_key ON person ( id ); </PRE> + Смотрите подробности о последовательностях на странице руководства посвященной <I>create_sequence</I>. Вы также можете использовать каждое поле <I>OID</I> в записи как уникальное значение. Однако, @@ -1093,6 +1141,7 @@ BYTEA bytea массив байт переменной длины (можно использовать new_id = output of "SELECT nextval('person_id_seq')" INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal'); </PRE> + Затем вы должны также сохранить новое значение в переменной <CODE>new_id</CODE> для его использования в других запросах (например таких как внешний ключ для таблицы <CODE>person</CODE>). Заметим, @@ -1108,6 +1157,7 @@ BYTEA bytea массив байт переменной длины (можно использовать INSERT INTO person (name) VALUES ('Blaise Pascal'); new_id = output of "SELECT currval('person_id_seq')"; </PRE> + И наконец, вы можете использовать значение <A href="#4.16"><SMALL>OID</SMALL></A>, возращаемое из опертора <SMALL>INSERT</SMALL> чтобы увидеть значение по умолчанию, что @@ -1213,8 +1263,7 @@ BYTEA bytea массив байт переменной длины (можно использовать <H4><A name="4.18">4.18</A>) Почему я получаю ошибку <I>"ERROR: Memory exhausted in AllocSetAlloc()"</I>?</H4> - <P>Если у вас версия ниже 7.1, то обновление версии может решить эту - проблему. Также возможно, что у вас закончилась виртуальная память + <P>Предположительно у вас закончилась виртуальная память или что ваше ядро имеет маленький лимит на определенные ресурсы. Попытайтесь перед запуском <I>postmaster</I> выполнить следующие команды:</P> @@ -1222,6 +1271,7 @@ BYTEA bytea массив байт переменной длины (можно использовать ulimit -d 262144 limit datasize 256m </PRE> + В зависимости от командного интерпретатора shell, только одна из данных команд выполнится успешно, но она позволит вам установить больший сегмент данных процесса и возможно решит проблему. Эта команда @@ -1275,6 +1325,7 @@ BYTEA bytea массив байт переменной длины (можно использовать WHERE col1 IN (SELECT col2 FROM TAB2) </CODE> </PRE> + на: <PRE> <CODE>SELECT * @@ -1282,17 +1333,19 @@ BYTEA bytea массив байт переменной длины (можно использовать WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2) </CODE> </PRE> + Мы надеемся убрать это ограничение в будущем выпуске. <H4><A name="4.23">4.23</A>) Как мне выполнить внешнее связывание?</H4> - <P>PostgreSQL начиная с версии 7.1 поддерживает внешнее связывание, + <P>PostgreSQL поддерживает внешнее связывание, используя стандартный синтаксис SQL. Вот два примера:</P> <PRE> SELECT * FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col); </PRE> - or + + или <PRE> SELECT * FROM t1 LEFT OUTER JOIN t2 USING (col); |