This version has been synchonized with English version at Mar 03.

With best wishes,Victor Vislobokov
Perm, Russia
This commit is contained in:
Bruce Momjian 2002-03-05 06:20:51 +00:00
parent 7bf7b0bd75
commit 590102c20b
2 changed files with 37 additions and 1170 deletions

File diff suppressed because it is too large Load Diff

View File

@ -14,7 +14,7 @@
alink="#0000ff">
<H1>Ответы на часто задаваемые вопросы по PostgreSQL</H1>
<P>Дата последнего обновления: Четверг 18 Февраля 17:56:04 EST 2002</P>
<P>Дата последнего обновления: Воскресенье 3 Марта 13:35:39 EST 2002</P>
<P>Английский вариант сопровождает: Брюс Момьян (Bruce Momjian) (<A href=
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
@ -929,34 +929,36 @@
<H4><A name="4.8">4.8</A>) У меня медленно работают запросы или не
происходит использования индексов. Почему?</H4>
<P>PostgreSQL не управляет статистикой автоматически. Для обновления
статистики должен быть запущен оператор V<SMALL>ACUUM</SMALL>.
После того, как статистика обновилась, оптимизатор узнает о том как
много записей в таблице и если он должен использовать индексы, то
он может принимать лучшие решения. Заметим, что оптимизатор не использует
индексы в случае, когда таблица маленькая, потому что простой
последовательный перебор будет быстрее.</P>
<P>Для специфической статистики по колонкам, используйте <SMALL>VACUUM
ANALYZE.</SMALL> V<SMALL>ACUUM ANALYZE</SMALL> является важным для
комплексных запросов множественного связывания, так как оптимизатор
может оценить количество записей, возвращаемых от каждой таблицы и
выбрать правильный порядок связывания. Backend не осуществляет
для себя отслеживание статистики по колонкам, так что для сбора
статистики нужно периодически запускать <SMALL>VACUUM ANALYZE</SMALL>.</P>
<P>Обычно индексы не используются для <SMALL>ORDER BY</SMALL> или
связываний. Последовательный перебор через явную сортировку будет
быстрее, чем поиск по индексам всех записей в большой таблице,
потому что доступ к диску с использованием рандомизации очень
медленен.</P>
<P>Индексы не используются для каждого запроса автоматически. Они
используются только если таблица больше минимального размера и запрос
выбирает только маленький процент записей в таблице. Так устроено,
потому что доступ к диску с применением рандомизации при сканировании
индексов иногда медленнее, чем простое чтение таблицы или ее
последовательное сканирование.</P>
<P>Чтобы определить необходимость использования индекса для какой-либо
таблицы, PostgreSQL должен иметь статистику по этой таблице. Эта
статистика собирается при использовании <SMALL>VACUUM ANALYZE</SMALL>
или просто <SMALL>ANALYZE</SMALL>. Используя статистику, оптимизатор
узнает о том как много записей в таблице и если он должен использовать
индексы, то он может принимать лучшие решения. Статистика также
влияет на определение оптимального порядка связывания и метода связывания.
Сбор статистики должен периодически выполнятся при изменении содержимого
таблицы.</P>
<P>Обычно индексы не используются для <SMALL>ORDER BY</SMALL> или для
выполнения связываний. Последовательный перебор следующий за явной
сортировкой обычно быстрее, чем поиск по индексам в большой таблице.
Однако, <SMALL>ORDER BY</SMALL> часто комбинируется с <SMALL>LIMIT</SMALL>
и в этом случае индекс будет использоваться, поскольку при выполнении
будет возвращаться небольшая часть таблицы.</P>
<P>Когда используются операции с шаблонами, например <SMALL>LIKE</SMALL>
или <I>~</I>, индексы могут быть использованы только если начало
строки-шаблона для поиска, соответствует началу искомой строки.
Так что для того, чтобы использовать индексы, строка шаблона в
<SMALL>LIKE</SMALL> не должна начинаться на <I>%</I>, а в <I>~</I>
(поиск регулярного выражения) должна начинаться с <I>^</I>.</P>
Следовательно, для того, чтобы использовать индексы, шаблон в
<SMALL>LIKE</SMALL> не должен начинаться на <I>%</I>, а в <I>~</I>
(поиск регулярного выражения) должен начинаться на <I>^</I>.</P>
<H4><A name="4.9">4.9</A>) Как посмотреть на то, как оптимизатор выполняет
мой запрос?</H4>
@ -1135,7 +1137,7 @@ BYTEA bytea
<P>Для реализации конкуретности, значения последовательностей, при
необходимости выдаются во время запуска транзакций и не блокируются
до полного выполнения транзакций. Это может вызывать разрывы в
нумерации при отмене транзакций</P>
нумерации при отмене транзакций.</P>
<H4><A name="4.16">4.16</A>) Что такое <SMALL>OID</SMALL>? Что такое