|
|
|
@ -12,13 +12,13 @@ |
|
|
|
|
<BODY bgcolor="#ffffff" text="#000000" link="#ff0000" vlink="#a00000" alink="#0000ff"> |
|
|
|
|
<H1>Ответы на часто задаваемые вопросы по PostgreSQL</H1> |
|
|
|
|
|
|
|
|
|
<P>Дата последнего обновления: Понедельник 30 мая 09:11:03 EDT 2005</P> |
|
|
|
|
<P>Дата последнего обновления: Пятница 16 сентября 14:07:22 EDT 2005</P> |
|
|
|
|
|
|
|
|
|
<P>Английский вариант сопровождает: Брюс Момьян (Bruce Momjian) (<A href= |
|
|
|
|
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR> |
|
|
|
|
</P> |
|
|
|
|
<P>Перевёл на русский: Виктор Вислобоков (<A href= |
|
|
|
|
"mailto:corochoone@perm.ru">corochoone@perm.ru</A>)<BR> |
|
|
|
|
"mailto:admin@linuxshare.ru">admin@linuxshare.ru</A>)<BR> |
|
|
|
|
</P> |
|
|
|
|
|
|
|
|
|
<P>Самую свежую английскую версию документа можно найти на |
|
|
|
@ -117,6 +117,8 @@ |
|
|
|
|
<A href="#4.19">4.19</A>) Почему я получаю ошибку "relation with OID #### |
|
|
|
|
не существует", когда обращаютсь к временным таблицам в функциях PL/PgSQL?<BR> |
|
|
|
|
<A href="#4.20">4.20</A>) Какие есть решения для репликации?<BR> |
|
|
|
|
<A href="#4.21">4.21</A>) Почему имена таблицы и колонок не |
|
|
|
|
распознаются в в моём запросе?<BR> |
|
|
|
|
|
|
|
|
|
<HR> |
|
|
|
|
|
|
|
|
@ -125,7 +127,10 @@ |
|
|
|
|
<H3><A name="1.1">1.1</A>) Что такое PostgreSQL? Как произносится это название?</H3> |
|
|
|
|
|
|
|
|
|
<P>PostgreSQL произносится <I>Post-Gres-Q-L (Пост-Грес-Кью-Эл)</I>, |
|
|
|
|
также часто говорят просто <I>Postgres</I>.</P> |
|
|
|
|
также иногда говорят просто <I>Postgres</I>. Вы можете услышать как |
|
|
|
|
это произносится с помощью аудиофайла, который доступен в |
|
|
|
|
<A href="http://www.postgresql.org/files/postgresql.mp3">формате MP3</A>. |
|
|
|
|
</P> |
|
|
|
|
|
|
|
|
|
<P>PostgreSQL - это объектно-реляционная система управления базами |
|
|
|
|
данных (СУБД), которая имеет традиционные возможности коммерческих |
|
|
|
@ -240,7 +245,7 @@ |
|
|
|
|
|
|
|
|
|
<H3><A name="1.7">1.7</A>) Какая последняя версия?</H3> |
|
|
|
|
|
|
|
|
|
<P>Последний выпуск PostgreSQL - это версия 8.0.2</P> |
|
|
|
|
<P>Последний выпуск PostgreSQL - это версия 8.0.3</P> |
|
|
|
|
|
|
|
|
|
<P>Мы планируем выпускать новые старшие версии каждый год, |
|
|
|
|
а младшие версии каждые несколько месяцев.</P> |
|
|
|
@ -651,6 +656,12 @@ |
|
|
|
|
<P>Максимальный размер таблицы и максимальное количество колонок |
|
|
|
|
могут быть увеличены в четыре раза, если размер блока по умолчанию будет |
|
|
|
|
увеличен до 32k.</P> |
|
|
|
|
|
|
|
|
|
<P>Существует ограничение, по которому индексы не могут создаваться для |
|
|
|
|
колонок длиннее чем 2,000 символов. К счастью такие индексы вряд ли |
|
|
|
|
действительно кому-то нужны. Уникальность гарантируется наилучим образом, |
|
|
|
|
с помощью функционального индекса из хэша MD5 длинной колонки, а |
|
|
|
|
полнотекстовое индексирование позволяет искать слова внутри колонки.</P> |
|
|
|
|
|
|
|
|
|
<H3><A name="4.5">4.5</A>) Как много дискового пространства в базе данных |
|
|
|
|
нужно для сохранения данных из обычного текстового файла?</H3> |
|
|
|
@ -664,23 +675,23 @@ |
|
|
|
|
Размер базы PostgreSQL, содержащей эти же данные составит приблизительно |
|
|
|
|
6.4 MB из которых:</P> |
|
|
|
|
<PRE> |
|
|
|
|
32 байт: на каждый заголовок строки в таблице (приблизительно) |
|
|
|
|
28 байт: на каждый заголовок строки в таблице (приблизительно) |
|
|
|
|
+ 24 байта: одно поле с целочисленным типом и одно текстовое поле |
|
|
|
|
+ 4 байта: указатель на странице для всей табличной строки |
|
|
|
|
---------------------------------------- |
|
|
|
|
60 байт на строку в таблице |
|
|
|
|
56 байт на строку в таблице |
|
|
|
|
|
|
|
|
|
Размер страницы данных в PostgreSQL составляет 8192 байт (8 KB), так что: |
|
|
|
|
|
|
|
|
|
8192 байт на страницу |
|
|
|
|
--------------------- = 136 строк в таблице на страницу БД (округлённо) |
|
|
|
|
60 байт на строку в таблице |
|
|
|
|
--------------------- = 146 строк в таблице на страницу БД (округлённо) |
|
|
|
|
56 байт на строку в таблице |
|
|
|
|
|
|
|
|
|
100000 строк данных |
|
|
|
|
----------------------- = 735 страниц в БД (округлённо) |
|
|
|
|
128 строк в таблице на страницу |
|
|
|
|
----------------------- = 685 страниц в БД (округлённо) |
|
|
|
|
146 строк в таблице на страницу |
|
|
|
|
|
|
|
|
|
735 страниц БД * 8192 байт на страницу = 6,021,120 байт (6 MB) |
|
|
|
|
685 страниц БД * 8192 байт на страницу = 5,611,520 байт (5.6 MB) |
|
|
|
|
</PRE> |
|
|
|
|
|
|
|
|
|
<P>Индексы не требуют так много, но поскольку они создаются для |
|
|
|
@ -781,6 +792,12 @@ |
|
|
|
|
<PRE> |
|
|
|
|
CREATE INDEX tabindex ON tab (lower(col)); |
|
|
|
|
</PRE> |
|
|
|
|
<P>Если вышеуказанный индекс создаётся как <SMALL>UNIQUE</SMALL>, то |
|
|
|
|
колонка, для которой он создаётся может хранить символы и в верхнем, |
|
|
|
|
и в нижнем регистре, индес не может иметь идентичных значений, которые |
|
|
|
|
отличаются только регистром. Чтобы в колонке можно было хранить символы |
|
|
|
|
только в определённом регистре, используйте ограничение |
|
|
|
|
<SMALL>CHECK</SMALL> или проверку через триггер.</P> |
|
|
|
|
|
|
|
|
|
<H3><A name="4.9">4.9</A>) Как мне определить, что значение поля равно |
|
|
|
|
<SMALL>NULL</SMALL> в каком-либо запросе? Могу я отсортировать поля |
|
|
|
@ -1071,5 +1088,23 @@ CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); |
|
|
|
|
популярным решением для такой репликации в PostgreSQL является |
|
|
|
|
<A href="http://pgfoundry.org/projects/pgcluster/">Pgcluster</A>. |
|
|
|
|
|
|
|
|
|
<H3><A name="4.21">4.21</A>) Почему имена таблицы и колонок не |
|
|
|
|
распознаются в в моём запросе?</H3> |
|
|
|
|
|
|
|
|
|
<P>Наиболее часто это происходит из-за использования двойных кавычек в |
|
|
|
|
имени таблицы или колонки при создании таблицы. При использовании двойных |
|
|
|
|
кавычек, имя таблицы и колонки (которые называют идентификаторами) |
|
|
|
|
сохраняются в <A href="http://www.postgresql.org/docs/8.0/static/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS"> |
|
|
|
|
регистро-зависимом виде</A>; это означает, что вы должны использовать |
|
|
|
|
двойные кавычки, когда указываете эти имена в запросе. Некоторые |
|
|
|
|
интерфейсы, такие как pgAdmin, во время создания таблицы добавляют |
|
|
|
|
двойные кавычки автоматически. Таким образом, чтобы идентификаторы |
|
|
|
|
распознавались вы должны следовать одному из следующих правил: |
|
|
|
|
<UL> |
|
|
|
|
<LI>Избегать использования двойных кавычек при создании таблиц</LI> |
|
|
|
|
<LI>Использовать в идентификаторах только символы нижнего регистра</LI> |
|
|
|
|
<LI>Использовать двойные кавычки для идентификаторов в запросах</LI> |
|
|
|
|
</UL> |
|
|
|
|
|
|
|
|
|
</BODY> |
|
|
|
|
</HTML> |
|
|
|
|