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