aboutsummaryrefslogtreecommitdiff
path: root/doc/src/FAQ/FAQ_russian.html
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2002-08-23 02:53:20 +0000
committerBruce Momjian <bruce@momjian.us>2002-08-23 02:53:20 +0000
commitb5ccfc216aa4065c560546f425b6e9ca7343eb8e (patch)
tree0c3aa27999e234e64b9748e5c425cd89552fdeb9 /doc/src/FAQ/FAQ_russian.html
parent3d801dbb1cb71e4afb9b41331458a53770559d6c (diff)
downloadpostgresql-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.html93
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);