Update Russian FAQ.
This commit is contained in:
parent
3d801dbb1c
commit
b5ccfc216a
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
Ответы на часто задаваемые вопросы по PostgreSQL
|
Ответы на часто задаваемые вопросы по PostgreSQL
|
||||||
|
|
||||||
Дата последнего обновления: Четверг 11 Июня 06:36:10 EDT 2002
|
Дата последнего обновления: Среда 22 Августа 19:20:40 EDT 2002
|
||||||
|
|
||||||
Английский вариант сопровождает: Брюс Момьян (Bruce Momjian)
|
Английский вариант сопровождает: Брюс Момьян (Bruce Momjian)
|
||||||
(pgman@candle.pha.pa.us)
|
(pgman@candle.pha.pa.us)
|
||||||
@ -61,6 +61,8 @@
|
|||||||
пытаюсь подключиться к базе?
|
пытаюсь подключиться к базе?
|
||||||
3.9) Что это за файлы pg_sorttempNNN.NN в моем каталоге с базой
|
3.9) Что это за файлы pg_sorttempNNN.NN в моем каталоге с базой
|
||||||
данных?
|
данных?
|
||||||
|
3.10) Почему необходимо делать dump и restore при обновлении выпусков
|
||||||
|
PostgreSQL?
|
||||||
|
|
||||||
Вопросы эксплуатации
|
Вопросы эксплуатации
|
||||||
|
|
||||||
@ -267,7 +269,7 @@
|
|||||||
|
|
||||||
1.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, Inc, пункт "contributions"
|
||||||
предназначен исключительно для поддержки проекта PostgreSQL и не
|
предназначен исключительно для поддержки проекта PostgreSQL и не
|
||||||
@ -478,6 +480,9 @@
|
|||||||
* TCL (libpgtcl)
|
* TCL (libpgtcl)
|
||||||
* C Easy API (libpgeasy)
|
* C Easy API (libpgeasy)
|
||||||
* Embedded HTML (PHP from http://www.php.net)
|
* Embedded HTML (PHP from http://www.php.net)
|
||||||
|
|
||||||
|
Дополнительные интерфейсы доступны по адресу
|
||||||
|
http://www.postgresql.org/interfaces.html.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
Вопросы администрирования
|
Вопросы администрирования
|
||||||
@ -660,6 +665,22 @@
|
|||||||
происходить, если backend процесс падает во время сортировки. Если у
|
происходить, если backend процесс падает во время сортировки. Если у
|
||||||
вас не запущено ни одного backend процесса, то вы можете спокойно
|
вас не запущено ни одного backend процесса, то вы можете спокойно
|
||||||
удалить файлы pg_tempNNN.NN.
|
удалить файлы 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
|
Максимальный размер базы? неограничен (существуют базы на 60 G
|
||||||
B)
|
B)
|
||||||
Максимальный размер таблицы? 16 TB
|
Максимальный размер таблицы? 16 TB
|
||||||
Максимальный размер записи? неограничен начиная с версии 7.1
|
Максимальный размер записи? 1.6 TB
|
||||||
Максимальный размер поля? 1 GB начиная с версии 7.1
|
Максимальный размер поля? 1 GB
|
||||||
Максимальное количество записей в таблице? неограничено
|
Максимальное количество записей в таблице? неограничено
|
||||||
Максимальное количество колонок в таблице? 250-1600 в зависимости от тип
|
Максимальное количество колонок в таблице? 250-1600 в зависимости от тип
|
||||||
а
|
а
|
||||||
@ -759,6 +780,9 @@ B)
|
|||||||
Индексы не требуют так много, но поскольку они создаются для большого
|
Индексы не требуют так много, но поскольку они создаются для большого
|
||||||
количества данных, они также могут быть велики.
|
количества данных, они также могут быть велики.
|
||||||
|
|
||||||
|
Значения NULL сохраняются в битах и поэтому они занимают очень мало
|
||||||
|
места.
|
||||||
|
|
||||||
4.7) Как мне убедиться, что существуют нужные мне таблицы, индексы, базы
|
4.7) Как мне убедиться, что существуют нужные мне таблицы, индексы, базы
|
||||||
данных и пользователи?
|
данных и пользователи?
|
||||||
|
|
||||||
@ -779,7 +803,7 @@ B)
|
|||||||
используются только если таблица больше минимального размера и запрос
|
используются только если таблица больше минимального размера и запрос
|
||||||
выбирает только маленький процент записей в таблице. Так устроено,
|
выбирает только маленький процент записей в таблице. Так устроено,
|
||||||
потому что доступ к диску с применением рандомизации при сканировании
|
потому что доступ к диску с применением рандомизации при сканировании
|
||||||
индексов иногда медленнее, чем простое чтение таблицы или ее
|
индексов может быть медленнее, чем простое чтение таблицы или ее
|
||||||
последовательное сканирование.
|
последовательное сканирование.
|
||||||
|
|
||||||
Чтобы определить необходимость использования индекса для какой-либо
|
Чтобы определить необходимость использования индекса для какой-либо
|
||||||
@ -796,13 +820,30 @@ B)
|
|||||||
обычно быстрее, чем поиск по индексам в большой таблице. Однако, ORDER
|
обычно быстрее, чем поиск по индексам в большой таблице. Однако, ORDER
|
||||||
BY часто комбинируется с LIMIT и в этом случае индекс будет
|
BY часто комбинируется с LIMIT и в этом случае индекс будет
|
||||||
использоваться, поскольку при выполнении будет возвращаться небольшая
|
использоваться, поскольку при выполнении будет возвращаться небольшая
|
||||||
часть таблицы.
|
часть таблицы. Фактически MAX() и MIN() не используют индексы, но
|
||||||
|
индекс используется при построении запросов с ORDER BY и LIMIT:
|
||||||
|
SELECT col
|
||||||
|
FROM tab
|
||||||
|
ORDER BY col [ DESC ]
|
||||||
|
LIMIT 1
|
||||||
|
|
||||||
Когда используются операции с шаблонами, например LIKE или ~, индексы
|
Когда используются операции с шаблонами, например LIKE или ~, индексы
|
||||||
могут быть использованы только если начало строки-шаблона для поиска,
|
могут быть использованы в следующих случаях:
|
||||||
соответствует началу искомой строки. Следовательно, для того, чтобы
|
* Начало строки поиска должно совпадать с началом искомой строки,
|
||||||
использовать индексы, шаблон в LIKE не должен начинаться на %, а в ~
|
т.е.:
|
||||||
(поиск регулярного выражения) должен начинаться на ^.
|
|
||||||
|
* LIKE шаблоны не должны начинаться с %.
|
||||||
|
*
|
||||||
|
* ~ шаблоны регулярных выражений должна начинаться на ^.
|
||||||
|
*
|
||||||
|
|
||||||
|
Строка поиска не должна начинаться с символа класса, т.е. [a-e].
|
||||||
|
|
||||||
|
Не должен использоваться поиск независимый от регистра такой как
|
||||||
|
ILIKE и ~. Вместо него используйте функциональные индексы, которые
|
||||||
|
описаны в этом FAQ ниже.
|
||||||
|
|
||||||
|
Во время initdb должна использоваться локаль по умолчанию C.
|
||||||
|
|
||||||
4.9) Как посмотреть на то, как оптимизатор выполняет мой запрос?
|
4.9) Как посмотреть на то, как оптимизатор выполняет мой запрос?
|
||||||
|
|
||||||
@ -845,8 +886,7 @@ B)
|
|||||||
|
|
||||||
Оператор ~ производит поиск регулярного выражения, а оператор ~*
|
Оператор ~ производит поиск регулярного выражения, а оператор ~*
|
||||||
производит независимый от регистра букв поиск регулярного выражения.
|
производит независимый от регистра букв поиск регулярного выражения.
|
||||||
Независимый от регистра вариант LIKE называется ILIKE в PostgreSQL
|
Независимый от регистра вариант LIKE называется ILIKE.
|
||||||
начиная с версии 7.1.
|
|
||||||
|
|
||||||
Независимое от регистра сравнение обычно выражается так:
|
Независимое от регистра сравнение обычно выражается так:
|
||||||
SELECT *
|
SELECT *
|
||||||
@ -1014,10 +1054,9 @@ BYTEA bytea
|
|||||||
|
|
||||||
4.18) Почему я получаю ошибку "ERROR: Memory exhausted in AllocSetAlloc()"?
|
4.18) Почему я получаю ошибку "ERROR: Memory exhausted in AllocSetAlloc()"?
|
||||||
|
|
||||||
Если у вас версия ниже 7.1, то обновление версии может решить эту
|
Предположительно у вас закончилась виртуальная память или что ваше
|
||||||
проблему. Также возможно, что у вас закончилась виртуальная память или
|
ядро имеет маленький лимит на определенные ресурсы. Попытайтесь перед
|
||||||
что ваше ядро имеет маленький лимит на определенные ресурсы.
|
запуском postmaster выполнить следующие команды:
|
||||||
Попытайтесь перед запуском postmaster выполнить следующие команды:
|
|
||||||
ulimit -d 262144
|
ulimit -d 262144
|
||||||
limit datasize 256m
|
limit datasize 256m
|
||||||
|
|
||||||
@ -1075,12 +1114,12 @@ SELECT *
|
|||||||
|
|
||||||
4.23) Как мне выполнить внешнее связывание?
|
4.23) Как мне выполнить внешнее связывание?
|
||||||
|
|
||||||
PostgreSQL начиная с версии 7.1 поддерживает внешнее связывание,
|
PostgreSQL поддерживает внешнее связывание, используя стандартный
|
||||||
используя стандартный синтаксис SQL. Вот два примера:
|
синтаксис SQL. Вот два примера:
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
|
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
|
||||||
|
|
||||||
or
|
или
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM t1 LEFT OUTER JOIN t2 USING (col);
|
FROM t1 LEFT OUTER JOIN t2 USING (col);
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
alink="#0000ff">
|
alink="#0000ff">
|
||||||
<H1>Ответы на часто задаваемые вопросы по PostgreSQL</H1>
|
<H1>Ответы на часто задаваемые вопросы по PostgreSQL</H1>
|
||||||
|
|
||||||
<P>Дата последнего обновления: Четверг 11 Июня 06:36:10 EDT 2002</P>
|
<P>Дата последнего обновления: Среда 22 Августа 19:20:40 EDT 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>
|
||||||
@ -82,6 +82,8 @@
|
|||||||
clients"</I> когда пытаюсь подключиться к базе?<BR>
|
clients"</I> когда пытаюсь подключиться к базе?<BR>
|
||||||
<A href="#3.9">3.9</A>) Что это за файлы <I>pg_sorttempNNN.NN</I>
|
<A href="#3.9">3.9</A>) Что это за файлы <I>pg_sorttempNNN.NN</I>
|
||||||
в моем каталоге с базой данных?<BR>
|
в моем каталоге с базой данных?<BR>
|
||||||
|
<A href="#3.10">3.10</A>) Почему необходимо делать dump и restore при
|
||||||
|
обновлении выпусков PostgreSQL?<BR>
|
||||||
|
|
||||||
|
|
||||||
<H2 align="center">Вопросы эксплуатации</H2>
|
<H2 align="center">Вопросы эксплуатации</H2>
|
||||||
@ -322,7 +324,7 @@
|
|||||||
|
|
||||||
<H4><A name="1.7">1.7</A>) Какая последняя версия?</H4>
|
<H4><A name="1.7">1.7</A>) Какая последняя версия?</H4>
|
||||||
|
|
||||||
<P>Последний выпуск PostgreSQL - это версия 7.2.</P>
|
<P>Последний выпуск PostgreSQL - это версия 7.2.2.</P>
|
||||||
|
|
||||||
<P>Мы планируем выпускать новые версии каждые четыре месяца.</P>
|
<P>Мы планируем выпускать новые версии каждые четыре месяца.</P>
|
||||||
|
|
||||||
@ -502,8 +504,8 @@
|
|||||||
некоторое количество ежемесячных и одноразовых расходов, которые
|
некоторое количество ежемесячных и одноразовых расходов, которые
|
||||||
требуют денег. Если вы или ваша компания имеет деньги, которые
|
требуют денег. Если вы или ваша компания имеет деньги, которые
|
||||||
можно передать в помощь нашим усилиям, пожалуйста посетите страничку
|
можно передать в помощь нашим усилиям, пожалуйста посетите страничку
|
||||||
<A href=
|
<A href="https://store.pgsql.com/shopping/index.php?id=1">
|
||||||
"http://www.pgsql.com/pg_goodies">http://www.pgsql.com/pg_goodies</A>
|
https://store.pgsql.com/shopping/index.php?id=1</A>
|
||||||
и сделайте свой вклад.</P>
|
и сделайте свой вклад.</P>
|
||||||
|
|
||||||
<P>Хотя на страничке говорится о PostgreSQL, Inc, пункт
|
<P>Хотя на страничке говорится о PostgreSQL, Inc, пункт
|
||||||
@ -594,6 +596,9 @@
|
|||||||
<LI>Embedded <SMALL>HTML</SMALL> (<A href=
|
<LI>Embedded <SMALL>HTML</SMALL> (<A href=
|
||||||
"http://www.php.net">PHP from http://www.php.net</A>)</LI>
|
"http://www.php.net">PHP from http://www.php.net</A>)</LI>
|
||||||
</UL>
|
</UL>
|
||||||
|
<P>Дополнительные интерфейсы доступны по адресу <A href="http://www.postgresql.org/interfaces.html">
|
||||||
|
http://www.postgresql.org/interfaces.html.</A>
|
||||||
|
</P>
|
||||||
<HR>
|
<HR>
|
||||||
|
|
||||||
<H2 align="center">Вопросы администрирования</H2>
|
<H2 align="center">Вопросы администрирования</H2>
|
||||||
@ -796,6 +801,25 @@
|
|||||||
не происходить, если backend процесс падает во время сортировки.
|
не происходить, если backend процесс падает во время сортировки.
|
||||||
Если у вас не запущено ни одного backend процесса, то вы можете
|
Если у вас не запущено ни одного backend процесса, то вы можете
|
||||||
спокойно удалить файлы pg_tempNNN.NN.</P>
|
спокойно удалить файлы 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>
|
<HR>
|
||||||
|
|
||||||
<H2 align="center">Вопросы эксплуатации</H2>
|
<H2 align="center">Вопросы эксплуатации</H2>
|
||||||
@ -852,12 +876,13 @@
|
|||||||
<PRE>
|
<PRE>
|
||||||
Максимальный размер базы? неограничен (существуют базы на 60 GB)
|
Максимальный размер базы? неограничен (существуют базы на 60 GB)
|
||||||
Максимальный размер таблицы? 16 TB
|
Максимальный размер таблицы? 16 TB
|
||||||
Максимальный размер записи? неограничен начиная с версии 7.1
|
Максимальный размер записи? 1.6 TB
|
||||||
Максимальный размер поля? 1 GB начиная с версии 7.1
|
Максимальный размер поля? 1 GB
|
||||||
Максимальное количество записей в таблице? неограничено
|
Максимальное количество записей в таблице? неограничено
|
||||||
Максимальное количество колонок в таблице? 250-1600 в зависимости от типа
|
Максимальное количество колонок в таблице? 250-1600 в зависимости от типа
|
||||||
Максимальное количество индексов в таблице? неограничено
|
Максимальное количество индексов в таблице? неограничено
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
Разумеется, понятие "неограничено" на самом деле ограничивается
|
Разумеется, понятие "неограничено" на самом деле ограничивается
|
||||||
доступным дисковым пространиством и размерами памяти/своппинга.
|
доступным дисковым пространиством и размерами памяти/своппинга.
|
||||||
Когда значения перечисленные выше неоправдано большие, может
|
Когда значения перечисленные выше неоправдано большие, может
|
||||||
@ -905,6 +930,10 @@
|
|||||||
|
|
||||||
<P>Индексы не требуют так много, но поскольку они создаются для
|
<P>Индексы не требуют так много, но поскольку они создаются для
|
||||||
большого количества данных, они также могут быть велики.</P>
|
большого количества данных, они также могут быть велики.</P>
|
||||||
|
|
||||||
|
<P>Значения <small>NULL</small> сохраняются в битах и поэтому они
|
||||||
|
занимают очень мало места.
|
||||||
|
</P>
|
||||||
|
|
||||||
<H4><A name="4.7">4.7</A>) Как мне убедиться, что существуют нужные мне
|
<H4><A name="4.7">4.7</A>) Как мне убедиться, что существуют нужные мне
|
||||||
таблицы, индексы, базы данных и пользователи?</H4>
|
таблицы, индексы, базы данных и пользователи?</H4>
|
||||||
@ -926,7 +955,7 @@
|
|||||||
используются только если таблица больше минимального размера и запрос
|
используются только если таблица больше минимального размера и запрос
|
||||||
выбирает только маленький процент записей в таблице. Так устроено,
|
выбирает только маленький процент записей в таблице. Так устроено,
|
||||||
потому что доступ к диску с применением рандомизации при сканировании
|
потому что доступ к диску с применением рандомизации при сканировании
|
||||||
индексов иногда медленнее, чем простое чтение таблицы или ее
|
индексов может быть медленнее, чем простое чтение таблицы или ее
|
||||||
последовательное сканирование.</P>
|
последовательное сканирование.</P>
|
||||||
|
|
||||||
<P>Чтобы определить необходимость использования индекса для какой-либо
|
<P>Чтобы определить необходимость использования индекса для какой-либо
|
||||||
@ -944,14 +973,32 @@
|
|||||||
сортировкой обычно быстрее, чем поиск по индексам в большой таблице.
|
сортировкой обычно быстрее, чем поиск по индексам в большой таблице.
|
||||||
Однако, <SMALL>ORDER BY</SMALL> часто комбинируется с <SMALL>LIMIT</SMALL>
|
Однако, <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>
|
<P>Когда используются операции с шаблонами, например <SMALL>LIKE</SMALL>
|
||||||
или <I>~</I>, индексы могут быть использованы только если начало
|
или <I>~</I>, индексы могут быть использованы в следующих случаях:
|
||||||
строки-шаблона для поиска, соответствует началу искомой строки.
|
</P><UL>
|
||||||
Следовательно, для того, чтобы использовать индексы, шаблон в
|
<LI>Начало строки поиска должно совпадать с началом искомой строки, т.е.:</LI>
|
||||||
<SMALL>LIKE</SMALL> не должен начинаться на <I>%</I>, а в <I>~</I>
|
<UL>
|
||||||
(поиск регулярного выражения) должен начинаться на <I>^</I>.</P>
|
<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><A name="4.9">4.9</A>) Как посмотреть на то, как оптимизатор выполняет
|
||||||
мой запрос?</H4>
|
мой запрос?</H4>
|
||||||
@ -999,20 +1046,19 @@
|
|||||||
<P>Оператор <I>~</I> производит поиск регулярного выражения, а оператор
|
<P>Оператор <I>~</I> производит поиск регулярного выражения, а оператор
|
||||||
<I>~*</I> производит независимый от регистра букв поиск регулярного
|
<I>~*</I> производит независимый от регистра букв поиск регулярного
|
||||||
выражения. Независимый от регистра вариант <SMALL>LIKE</SMALL> называется
|
выражения. Независимый от регистра вариант <SMALL>LIKE</SMALL> называется
|
||||||
<SMALL>ILIKE</SMALL> в PostgreSQL начиная с версии 7.1.</P>
|
<SMALL>ILIKE</SMALL>.</P>
|
||||||
|
|
||||||
<P>Независимое от регистра сравнение обычно выражается так:</P>
|
<P>Независимое от регистра сравнение обычно выражается так:</P>
|
||||||
<PRE>
|
<PRE>
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM tab
|
FROM tab
|
||||||
WHERE lower(col) = 'abc'
|
WHERE lower(col) = 'abc'
|
||||||
|
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
Эта конструкция не будет использовать стандартный индекс. Однако, если
|
Эта конструкция не будет использовать стандартный индекс. Однако, если
|
||||||
вы создадите функциональный индекс, он будет использован:
|
вы создадите функциональный индекс, он будет использован:
|
||||||
<PRE>
|
<PRE>
|
||||||
CREATE INDEX tabindex on tab (lower(col));
|
CREATE INDEX tabindex on tab (lower(col));
|
||||||
|
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
<H4><A name="4.13">4.13</A>) Как я могу определить, что значение поля
|
<H4><A name="4.13">4.13</A>) Как я могу определить, что значение поля
|
||||||
@ -1064,6 +1110,7 @@ BYTEA bytea
|
|||||||
name TEXT
|
name TEXT
|
||||||
);
|
);
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
автоматически транслируется в:
|
автоматически транслируется в:
|
||||||
<PRE>
|
<PRE>
|
||||||
CREATE SEQUENCE person_id_seq;
|
CREATE SEQUENCE person_id_seq;
|
||||||
@ -1073,6 +1120,7 @@ BYTEA bytea
|
|||||||
);
|
);
|
||||||
CREATE UNIQUE INDEX person_id_key ON person ( id );
|
CREATE UNIQUE INDEX person_id_key ON person ( id );
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
Смотрите подробности о последовательностях на странице руководства
|
Смотрите подробности о последовательностях на странице руководства
|
||||||
посвященной <I>create_sequence</I>. Вы также можете использовать
|
посвященной <I>create_sequence</I>. Вы также можете использовать
|
||||||
каждое поле <I>OID</I> в записи как уникальное значение. Однако,
|
каждое поле <I>OID</I> в записи как уникальное значение. Однако,
|
||||||
@ -1093,6 +1141,7 @@ BYTEA bytea
|
|||||||
new_id = output of "SELECT nextval('person_id_seq')"
|
new_id = output of "SELECT nextval('person_id_seq')"
|
||||||
INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal');
|
INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal');
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
Затем вы должны также сохранить новое значение в переменной
|
Затем вы должны также сохранить новое значение в переменной
|
||||||
<CODE>new_id</CODE> для его использования в других запросах (например
|
<CODE>new_id</CODE> для его использования в других запросах (например
|
||||||
таких как внешний ключ для таблицы <CODE>person</CODE>). Заметим,
|
таких как внешний ключ для таблицы <CODE>person</CODE>). Заметим,
|
||||||
@ -1108,6 +1157,7 @@ BYTEA bytea
|
|||||||
INSERT INTO person (name) VALUES ('Blaise Pascal');
|
INSERT INTO person (name) VALUES ('Blaise Pascal');
|
||||||
new_id = output of "SELECT currval('person_id_seq')";
|
new_id = output of "SELECT currval('person_id_seq')";
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
И наконец, вы можете использовать значение
|
И наконец, вы можете использовать значение
|
||||||
<A href="#4.16"><SMALL>OID</SMALL></A>, возращаемое из опертора
|
<A href="#4.16"><SMALL>OID</SMALL></A>, возращаемое из опертора
|
||||||
<SMALL>INSERT</SMALL> чтобы увидеть значение по умолчанию, что
|
<SMALL>INSERT</SMALL> чтобы увидеть значение по умолчанию, что
|
||||||
@ -1213,8 +1263,7 @@ BYTEA bytea
|
|||||||
<H4><A name="4.18">4.18</A>) Почему я получаю ошибку <I>"ERROR: Memory
|
<H4><A name="4.18">4.18</A>) Почему я получаю ошибку <I>"ERROR: Memory
|
||||||
exhausted in AllocSetAlloc()"</I>?</H4>
|
exhausted in AllocSetAlloc()"</I>?</H4>
|
||||||
|
|
||||||
<P>Если у вас версия ниже 7.1, то обновление версии может решить эту
|
<P>Предположительно у вас закончилась виртуальная память
|
||||||
проблему. Также возможно, что у вас закончилась виртуальная память
|
|
||||||
или что ваше ядро имеет маленький лимит на определенные ресурсы.
|
или что ваше ядро имеет маленький лимит на определенные ресурсы.
|
||||||
Попытайтесь перед запуском <I>postmaster</I> выполнить следующие
|
Попытайтесь перед запуском <I>postmaster</I> выполнить следующие
|
||||||
команды:</P>
|
команды:</P>
|
||||||
@ -1222,6 +1271,7 @@ BYTEA bytea
|
|||||||
ulimit -d 262144
|
ulimit -d 262144
|
||||||
limit datasize 256m
|
limit datasize 256m
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
В зависимости от командного интерпретатора shell, только одна из данных
|
В зависимости от командного интерпретатора shell, только одна из данных
|
||||||
команд выполнится успешно, но она позволит вам установить больший
|
команд выполнится успешно, но она позволит вам установить больший
|
||||||
сегмент данных процесса и возможно решит проблему. Эта команда
|
сегмент данных процесса и возможно решит проблему. Эта команда
|
||||||
@ -1275,6 +1325,7 @@ BYTEA bytea
|
|||||||
WHERE col1 IN (SELECT col2 FROM TAB2)
|
WHERE col1 IN (SELECT col2 FROM TAB2)
|
||||||
</CODE>
|
</CODE>
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
на:
|
на:
|
||||||
<PRE>
|
<PRE>
|
||||||
<CODE>SELECT *
|
<CODE>SELECT *
|
||||||
@ -1282,17 +1333,19 @@ BYTEA bytea
|
|||||||
WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
|
WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
|
||||||
</CODE>
|
</CODE>
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
Мы надеемся убрать это ограничение в будущем выпуске.
|
Мы надеемся убрать это ограничение в будущем выпуске.
|
||||||
|
|
||||||
<H4><A name="4.23">4.23</A>) Как мне выполнить внешнее связывание?</H4>
|
<H4><A name="4.23">4.23</A>) Как мне выполнить внешнее связывание?</H4>
|
||||||
|
|
||||||
<P>PostgreSQL начиная с версии 7.1 поддерживает внешнее связывание,
|
<P>PostgreSQL поддерживает внешнее связывание,
|
||||||
используя стандартный синтаксис SQL. Вот два примера:</P>
|
используя стандартный синтаксис SQL. Вот два примера:</P>
|
||||||
<PRE>
|
<PRE>
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
|
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
|
||||||
</PRE>
|
</PRE>
|
||||||
or
|
|
||||||
|
или
|
||||||
<PRE>
|
<PRE>
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM t1 LEFT OUTER JOIN t2 USING (col);
|
FROM t1 LEFT OUTER JOIN t2 USING (col);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user