From b5ccfc216aa4065c560546f425b6e9ca7343eb8e Mon Sep 17 00:00:00 2001
From: Bruce Momjian
Date: Fri, 23 Aug 2002 02:53:20 +0000
Subject: [PATCH] Update Russian FAQ.
---
doc/FAQ_russian | 81 +++++++++++++++++++++++--------
doc/src/FAQ/FAQ_russian.html | 93 ++++++++++++++++++++++++++++--------
2 files changed, 133 insertions(+), 41 deletions(-)
diff --git a/doc/FAQ_russian b/doc/FAQ_russian
index 45d2ea6025..8273e70945 100644
--- a/doc/FAQ_russian
+++ b/doc/FAQ_russian
@@ -1,7 +1,7 @@
Ответы на часто задаваемые вопросы по PostgreSQL
- Дата последнего обновления: Четверг 11 Июня 06:36:10 EDT 2002
+ Дата последнего обновления: Среда 22 Августа 19:20:40 EDT 2002
Английский вариант сопровождает: Брюс Момьян (Bruce Momjian)
(pgman@candle.pha.pa.us)
@@ -61,6 +61,8 @@
пытаюсь подключиться к базе?
3.9) Что это за файлы pg_sorttempNNN.NN в моем каталоге с базой
данных?
+ 3.10) Почему необходимо делать dump и restore при обновлении выпусков
+ PostgreSQL?
Вопросы эксплуатации
@@ -267,7 +269,7 @@
1.7) Какая последняя версия?
- Последний выпуск PostgreSQL - это версия 7.2.
+ Последний выпуск PostgreSQL - это версия 7.2.2.
Мы планируем выпускать новые версии каждые четыре месяца.
@@ -414,7 +416,7 @@
некоторое количество ежемесячных и одноразовых расходов, которые
требуют денег. Если вы или ваша компания имеет деньги, которые можно
передать в помощь нашим усилиям, пожалуйста посетите страничку
- http://www.pgsql.com/pg_goodies и сделайте свой вклад.
+ https://store.pgsql.com/shopping/index.php?id=1 и сделайте свой вклад.
Хотя на страничке говорится о PostgreSQL, Inc, пункт "contributions"
предназначен исключительно для поддержки проекта PostgreSQL и не
@@ -478,6 +480,9 @@
* TCL (libpgtcl)
* C Easy API (libpgeasy)
* Embedded HTML (PHP from http://www.php.net)
+
+ Дополнительные интерфейсы доступны по адресу
+ http://www.postgresql.org/interfaces.html.
_________________________________________________________________
Вопросы администрирования
@@ -660,6 +665,22 @@
происходить, если backend процесс падает во время сортировки. Если у
вас не запущено ни одного backend процесса, то вы можете спокойно
удалить файлы pg_tempNNN.NN.
+ 3.10) Почему необходимо делать dump и restore при обновлении выпусков
+ PostgreSQL?
+
+ Разработчики PostgreSQL делают только небольшие изменения между
+ подвыпусками. Таким образом обновление с версии 7.2 до 7.2.1 не
+ требует выполнения dump и restore. Однако при выходе очередного
+ выпуска часто меняется внутренний формат системных таблиц и файлов
+ данных. Эти изменения часто носят комплексный характер, так что нет
+ возможности обеспечить обратную совместимость файлов данных. Выполение
+ dump позволяет получить данные в общем формате, который затем может
+ быть загружен при использовании нового внутреннего формата.
+
+ В тех выпусках, где формат данных на диске не меняется, для проведения
+ обновления может быть использован сценарий pg_upgrade без
+ использования dump/restore. Комментарии к выпуску говорит когда можно
+ использовать pg_upgrade для этого выпуска.
_________________________________________________________________
Вопросы эксплуатации
@@ -707,8 +728,8 @@
Максимальный размер базы? неограничен (существуют базы на 60 G
B)
Максимальный размер таблицы? 16 TB
- Максимальный размер записи? неограничен начиная с версии 7.1
- Максимальный размер поля? 1 GB начиная с версии 7.1
+ Максимальный размер записи? 1.6 TB
+ Максимальный размер поля? 1 GB
Максимальное количество записей в таблице? неограничено
Максимальное количество колонок в таблице? 250-1600 в зависимости от тип
а
@@ -759,6 +780,9 @@ B)
Индексы не требуют так много, но поскольку они создаются для большого
количества данных, они также могут быть велики.
+ Значения NULL сохраняются в битах и поэтому они занимают очень мало
+ места.
+
4.7) Как мне убедиться, что существуют нужные мне таблицы, индексы, базы
данных и пользователи?
@@ -779,7 +803,7 @@ B)
используются только если таблица больше минимального размера и запрос
выбирает только маленький процент записей в таблице. Так устроено,
потому что доступ к диску с применением рандомизации при сканировании
- индексов иногда медленнее, чем простое чтение таблицы или ее
+ индексов может быть медленнее, чем простое чтение таблицы или ее
последовательное сканирование.
Чтобы определить необходимость использования индекса для какой-либо
@@ -796,13 +820,30 @@ B)
обычно быстрее, чем поиск по индексам в большой таблице. Однако, ORDER
BY часто комбинируется с LIMIT и в этом случае индекс будет
использоваться, поскольку при выполнении будет возвращаться небольшая
- часть таблицы.
-
+ часть таблицы. Фактически MAX() и MIN() не используют индексы, но
+ индекс используется при построении запросов с ORDER BY и LIMIT:
+ SELECT col
+ FROM tab
+ ORDER BY col [ DESC ]
+ LIMIT 1
+
Когда используются операции с шаблонами, например LIKE или ~, индексы
- могут быть использованы только если начало строки-шаблона для поиска,
- соответствует началу искомой строки. Следовательно, для того, чтобы
- использовать индексы, шаблон в LIKE не должен начинаться на %, а в ~
- (поиск регулярного выражения) должен начинаться на ^.
+ могут быть использованы в следующих случаях:
+ * Начало строки поиска должно совпадать с началом искомой строки,
+ т.е.:
+
+ * LIKE шаблоны не должны начинаться с %.
+ *
+ * ~ шаблоны регулярных выражений должна начинаться на ^.
+ *
+
+ Строка поиска не должна начинаться с символа класса, т.е. [a-e].
+
+ Не должен использоваться поиск независимый от регистра такой как
+ ILIKE и ~. Вместо него используйте функциональные индексы, которые
+ описаны в этом FAQ ниже.
+
+ Во время initdb должна использоваться локаль по умолчанию C.
4.9) Как посмотреть на то, как оптимизатор выполняет мой запрос?
@@ -845,8 +886,7 @@ B)
Оператор ~ производит поиск регулярного выражения, а оператор ~*
производит независимый от регистра букв поиск регулярного выражения.
- Независимый от регистра вариант LIKE называется ILIKE в PostgreSQL
- начиная с версии 7.1.
+ Независимый от регистра вариант LIKE называется ILIKE.
Независимое от регистра сравнение обычно выражается так:
SELECT *
@@ -1014,10 +1054,9 @@ BYTEA bytea
4.18) Почему я получаю ошибку "ERROR: Memory exhausted in AllocSetAlloc()"?
- Если у вас версия ниже 7.1, то обновление версии может решить эту
- проблему. Также возможно, что у вас закончилась виртуальная память или
- что ваше ядро имеет маленький лимит на определенные ресурсы.
- Попытайтесь перед запуском postmaster выполнить следующие команды:
+ Предположительно у вас закончилась виртуальная память или что ваше
+ ядро имеет маленький лимит на определенные ресурсы. Попытайтесь перед
+ запуском postmaster выполнить следующие команды:
ulimit -d 262144
limit datasize 256m
@@ -1075,12 +1114,12 @@ SELECT *
4.23) Как мне выполнить внешнее связывание?
- PostgreSQL начиная с версии 7.1 поддерживает внешнее связывание,
- используя стандартный синтаксис SQL. Вот два примера:
+ PostgreSQL поддерживает внешнее связывание, используя стандартный
+ синтаксис SQL. Вот два примера:
SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
- or
+ или
SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col);
diff --git a/doc/src/FAQ/FAQ_russian.html b/doc/src/FAQ/FAQ_russian.html
index de99068802..744e522a2c 100644
--- a/doc/src/FAQ/FAQ_russian.html
+++ b/doc/src/FAQ/FAQ_russian.html
@@ -14,7 +14,7 @@
alink="#0000ff">
Ответы на часто задаваемые вопросы по PostgreSQL
- Дата последнего обновления: Четверг 11 Июня 06:36:10 EDT 2002
+ Дата последнего обновления: Среда 22 Августа 19:20:40 EDT 2002
Английский вариант сопровождает: Брюс Момьян (Bruce Momjian) (pgman@candle.pha.pa.us)
@@ -82,6 +82,8 @@
clients" когда пытаюсь подключиться к базе?
3.9) Что это за файлы pg_sorttempNNN.NN
в моем каталоге с базой данных?
+ 3.10) Почему необходимо делать dump и restore при
+ обновлении выпусков PostgreSQL?
Вопросы эксплуатации
@@ -322,7 +324,7 @@
1.7) Какая последняя версия?
- Последний выпуск PostgreSQL - это версия 7.2.
+ Последний выпуск PostgreSQL - это версия 7.2.2.
Мы планируем выпускать новые версии каждые четыре месяца.
@@ -502,8 +504,8 @@
некоторое количество ежемесячных и одноразовых расходов, которые
требуют денег. Если вы или ваша компания имеет деньги, которые
можно передать в помощь нашим усилиям, пожалуйста посетите страничку
- http://www.pgsql.com/pg_goodies
+
+ https://store.pgsql.com/shopping/index.php?id=1
и сделайте свой вклад.
Хотя на страничке говорится о PostgreSQL, Inc, пункт
@@ -594,6 +596,9 @@
Embedded HTML (PHP from http://www.php.net)
+ Дополнительные интерфейсы доступны по адресу
+ http://www.postgresql.org/interfaces.html.
+
Вопросы администрирования
@@ -796,6 +801,25 @@
не происходить, если backend процесс падает во время сортировки.
Если у вас не запущено ни одного backend процесса, то вы можете
спокойно удалить файлы pg_tempNNN.NN.
+
+ 3.10) Почему необходимо делать dump и restore при
+ обновлении выпусков PostgreSQL?
+
+ Разработчики PostgreSQL делают только небольшие изменения между
+ подвыпусками. Таким образом обновление с версии 7.2 до 7.2.1 не требует
+ выполнения dump и restore. Однако при выходе очередного выпуска часто
+ меняется внутренний формат системных таблиц и файлов данных. Эти
+ изменения часто носят комплексный характер, так что нет возможности
+ обеспечить обратную совместимость файлов данных. Выполение dump
+ позволяет получить данные в общем формате, который затем может быть
+ загружен при использовании нового внутреннего формата.
+
+
+ В тех выпусках, где формат данных на диске не меняется, для проведения
+ обновления может быть использован сценарий pg_upgrade без
+ использования dump/restore. Комментарии к выпуску говорит когда можно
+ использовать pg_upgrade для этого выпуска.
+
Вопросы эксплуатации
@@ -852,12 +876,13 @@
Максимальный размер базы? неограничен (существуют базы на 60 GB)
Максимальный размер таблицы? 16 TB
- Максимальный размер записи? неограничен начиная с версии 7.1
- Максимальный размер поля? 1 GB начиная с версии 7.1
+ Максимальный размер записи? 1.6 TB
+ Максимальный размер поля? 1 GB
Максимальное количество записей в таблице? неограничено
Максимальное количество колонок в таблице? 250-1600 в зависимости от типа
Максимальное количество индексов в таблице? неограничено
+
Разумеется, понятие "неограничено" на самом деле ограничивается
доступным дисковым пространиством и размерами памяти/своппинга.
Когда значения перечисленные выше неоправдано большие, может
@@ -905,6 +930,10 @@
Индексы не требуют так много, но поскольку они создаются для
большого количества данных, они также могут быть велики.
+
+ Значения NULL сохраняются в битах и поэтому они
+ занимают очень мало места.
+
4.7) Как мне убедиться, что существуют нужные мне
таблицы, индексы, базы данных и пользователи?
@@ -926,7 +955,7 @@
используются только если таблица больше минимального размера и запрос
выбирает только маленький процент записей в таблице. Так устроено,
потому что доступ к диску с применением рандомизации при сканировании
- индексов иногда медленнее, чем простое чтение таблицы или ее
+ индексов может быть медленнее, чем простое чтение таблицы или ее
последовательное сканирование.
Чтобы определить необходимость использования индекса для какой-либо
@@ -944,14 +973,32 @@
сортировкой обычно быстрее, чем поиск по индексам в большой таблице.
Однако, ORDER BY часто комбинируется с LIMIT
и в этом случае индекс будет использоваться, поскольку при выполнении
- будет возвращаться небольшая часть таблицы.
+ будет возвращаться небольшая часть таблицы. Фактически MAX() и MIN() не
+ используют индексы, но индекс используется при построении запросов с
+ ORDER BY и LIMIT:
+
+ SELECT col
+ FROM tab
+ ORDER BY col [ DESC ]
+ LIMIT 1
+
Когда используются операции с шаблонами, например LIKE
- или ~, индексы могут быть использованы только если начало
- строки-шаблона для поиска, соответствует началу искомой строки.
- Следовательно, для того, чтобы использовать индексы, шаблон в
- LIKE не должен начинаться на %, а в ~
- (поиск регулярного выражения) должен начинаться на ^.
+ или ~, индексы могут быть использованы в следующих случаях:
+
+ - Начало строки поиска должно совпадать с началом искомой строки, т.е.:
+
+ - LIKE шаблоны не должны начинаться с %.
-
+
- ~ шаблоны регулярных выражений должна начинаться на ^.
-
+
+ - Строка поиска не должна начинаться с символа класса, т.е. [a-e].
+ - Не должен использоваться поиск независимый от регистра такой как
+ ILIKE и ~. Вместо него используйте функциональные
+ индексы, которые описаны в этом FAQ ниже.
+ - Во время initdb должна использоваться локаль по умолчанию
+ C.
+
+
4.9) Как посмотреть на то, как оптимизатор выполняет
мой запрос?
@@ -999,20 +1046,19 @@
Оператор ~ производит поиск регулярного выражения, а оператор
~* производит независимый от регистра букв поиск регулярного
выражения. Независимый от регистра вариант LIKE называется
- ILIKE в PostgreSQL начиная с версии 7.1.
+ ILIKE.
Независимое от регистра сравнение обычно выражается так:
SELECT *
FROM tab
WHERE lower(col) = 'abc'
-
+
Эта конструкция не будет использовать стандартный индекс. Однако, если
вы создадите функциональный индекс, он будет использован:
CREATE INDEX tabindex on tab (lower(col));
-
4.13) Как я могу определить, что значение поля
@@ -1064,6 +1110,7 @@ BYTEA bytea
name TEXT
);
+
автоматически транслируется в:
CREATE SEQUENCE person_id_seq;
@@ -1073,6 +1120,7 @@ BYTEA bytea
);
CREATE UNIQUE INDEX person_id_key ON person ( id );
+
Смотрите подробности о последовательностях на странице руководства
посвященной create_sequence. Вы также можете использовать
каждое поле OID в записи как уникальное значение. Однако,
@@ -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');
+
Затем вы должны также сохранить новое значение в переменной
new_id
для его использования в других запросах (например
таких как внешний ключ для таблицы person
). Заметим,
@@ -1108,6 +1157,7 @@ BYTEA bytea
INSERT INTO person (name) VALUES ('Blaise Pascal');
new_id = output of "SELECT currval('person_id_seq')";
+
И наконец, вы можете использовать значение
OID, возращаемое из опертора
INSERT чтобы увидеть значение по умолчанию, что
@@ -1213,8 +1263,7 @@ BYTEA bytea
4.18) Почему я получаю ошибку "ERROR: Memory
exhausted in AllocSetAlloc()"?
-
Если у вас версия ниже 7.1, то обновление версии может решить эту
- проблему. Также возможно, что у вас закончилась виртуальная память
+
Предположительно у вас закончилась виртуальная память
или что ваше ядро имеет маленький лимит на определенные ресурсы.
Попытайтесь перед запуском postmaster выполнить следующие
команды:
@@ -1222,6 +1271,7 @@ BYTEA bytea
ulimit -d 262144
limit datasize 256m
+
В зависимости от командного интерпретатора shell, только одна из данных
команд выполнится успешно, но она позволит вам установить больший
сегмент данных процесса и возможно решит проблему. Эта команда
@@ -1275,6 +1325,7 @@ BYTEA bytea
WHERE col1 IN (SELECT col2 FROM TAB2)
+
на:
SELECT *
@@ -1282,17 +1333,19 @@ BYTEA bytea
WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
+
Мы надеемся убрать это ограничение в будущем выпуске.
4.23) Как мне выполнить внешнее связывание?
- PostgreSQL начиная с версии 7.1 поддерживает внешнее связывание,
+
PostgreSQL поддерживает внешнее связывание,
используя стандартный синтаксис SQL. Вот два примера:
SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
- or
+
+ или
SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col);