Добавить в избранное   Сделать стартовой   Главная   E-mail   Форум   Мой блог 
   
Cертификации

Errors

ETL

FAQ (по темам)

GIS

Web

wiki

Администрирование

Безопасность

Книги
Oracle, ...

Новости

ОС

Программирование

Проектирование БД

Производительность

Скачать

Советы

Тестирование

Установка

FAQ - по базам данных
FAQ - по базам данных
Установка СУБД
Oracle
Sybase
MySQL
PostgreSQL
MS SQL Server
Interbase, Firebird
Другие DB
Администрирование
Oracle
MySQL
Sybase
PostgreSQL
MS SQL Server
Interbase, Firebird
IBM DB2
Другие DB
Проектирование БД
Статьи
ETL
Теория БД
ErWin
Designer 2000
PowerDesigner
Хранилища данных
CASE средства
OLAP
Бизнес - анализ (BI)
Производительность
Oracle
MSSQL
Interbase, Firebird
IBM DB2
MySQL
PostgreSQL
SYBASE
Безопасность БД
Oracle
MS SQL Server
Инъекция SQL
Программирование
Transact-SQL
PL/SQL
C++
XML
SQL
PostgreSQL
MDX
Java
VBA Excel
Книги по базам
Oracle
Заказ книг
ОС
Установка и настройка
UBUNTU
ОС
Установка и настройка
UBUNTU
FAQ
FAQ - по базам данных
Главная arrow FAQ - по базам данных arrow Ответы на часто задаваемые вопросы по PostgreSQL

Ответы на часто задаваемые вопросы по PostgreSQL

Печать E-mail
Оглавление
Ответы на часто задаваемые вопросы по PostgreSQL
Страница 2
Страница 3
 

 Общие вопросы

1.1) Что такое PostgreSQL? Как произносится это название?
1.2) Каковы авторские права на PostgreSQL?
1.3) На каких платформах работает PostgreSQL?
1.4) Где можно взять PostgreSQL?
1.5) Где получить поддержку?
1.6) Как мне сообщить об ошибке?
1.7) Какая версия последняя?
1.8) Какая документация имеется в наличии?
1.9) Как найти информацию об известных ошибках или отсутствующих возможностях?
1.10) Как научиться SQL?
1.11) Как присоединится к команде разработчиков?
1.12) Как сравнивать PostgreSQL с другими СУБД?

Вопросы пользователей по клиентской части

2.1) Какие интерфейсы есть для PostgreSQL?
2.2) Какие инструменты существуют для использования PostgreSQL через Web?
2.3) Есть ли у PostgreSQL графический интерфейс пользователя?

Вопросы администрирования

3.1) Как мне установить PostgreSQL в место отличное от /usr/local/pgsql?
3.2) Как мне управлять соединениями с других компьютеров?
3.3) Какие настройки мне нужно сделать для улучшения производительности?
3.4) Какие возможности для отладки есть в наличии?
3.5) Почему я получаю сообщение "Sorry, too many clients" когда пытаюсь подключиться к базе?
3.6) Почему необходимо делать dump и restore при обновлении выпусков PostgreSQL?
3.7) Какое компьютерное "железо" я должен использовать?

Вопросы эксплуатации

4.1) Как выполнить SELECT только для нескольких первых строчек запроса? Для произвольной строки?
4.2) Как мне найти какие таблицы, индексы, базы данных и пользователи существуют? Как мне увидеть запросы, которые использует psql для получения этой информации?
4.3) Как изменить тип данных колонки?
4.4) Каковы максимальные размеры для строк в таблице, таблиц и базы данных?
4.5) Как много дискового пространства в базе данных нужно для сохранения данных из обычного текстового файла?
4.6) Почему мои запросы работают медлено? Почему они не используют мои индексы?
4.7) Как посмотреть на то, как оптимизатор выполняет мой запрос?
4.8) Как мне выполнить поиск регулярного выражения и поиск независимый от регистра букв поиск регулярного выражения? Как мне использовать индекс для поиска независимого от регистра букв?
4.9) Как я могу определить, что значение поля равно NULL в каком-либо запросе?
4.10) Каковы отличия между разными символьными типами?
4.11.1) Как мне создать поле serial/с-авто-увеличением?
4.11.2) Как мне получить значение при вставке SERIAL?
4.11.3) Не может ли получиться так, что использование currval() и nextval() приведет к зациклированию с другими пользователями?
4.11.4) Почему числа из моей последовательности не используются снова при отмене транзакции? Почему создаются разрывы при нумерации в колонке, где я использую последовательность/SERIAL?
4.12) Что такое OID? Что такое TID?
4.13) Почему я получаю ошибку "ERROR: Memory exhausted in AllocSetAlloc()"?
4.14) Как мне узнать, какая версия PostgreSQL запущена?
4.15) Почему при работе с моим большим объектом я получаю ошибку "invalid large obj descriptor"?
4.16) Как мне создать колонку которая по умолчанию будет содержать текущее время?
4.17) Как выполнить внешнее связывание?
4.18) Как выполнять запросы, использующие несколько баз данных?
4.19) Как мне вернуть из функции несколько строк таблицы?
4.20) Почему я получаю ошибку "missing oid", когда обращаютсь к временным таблицам в функциях PL/PgSQL?
4.21) Какие опции шифрования существуют?

Расширения PostgreSQL

5.1) Я написал функцию определяемую пользователем. Когда я запускаю ее в psql, почему я получаю core dump?
5.2) Как я могу внести некоторые классные новые типы и функции в PostgreSQL?
5.3) Как мне написать C функцию, возвращающую строку таблицы?
5.4) Я изменил исходный файл. Почему после перекомпиляции я не вижу изменений?

Общие вопросы

1.1) Что такое PostgreSQL? Как произносится это название?

PostgreSQL произносится Post-Gres-Q-L (Пост-Грес-Кью-Эл), также часто говорят просто Postgres.

PostgreSQL - это объектно-реляционная система управления базами данных (СУБД), которая имеет традиционные возможности коммерческих СУБД с расширениями, которые есть в СУБД нового поколения. PostgreSQL - это свободное и полностью открытое программное обеспечение.

Разработку PostgreSQL выполняет команда разработчиков, разбросанная по всему миру и связанная через Интернет. Разработка является общественным проектом и не управляется какой-либо компанией. Подробности смотрите в FAQ для разработчиков, http://www.PostgreSQL.org/files/documentation/faqs/FAQ_DEV.html

1.2) Каковы авторские права на PostgreSQL?

PostgreSQL распространяется по классической лицензии BSD. Эта лицензия не содержит ограничений на то, как будет использоваться исходный код. Нам нравится эта лицензия и у нас нет намерений её менять.

Вот эта лицензия BSD, которую мы используем:

Система Управления Базами Данных PostgreSQL

Portions copyright (c) 1996-2005, PostgreSQL Global Development Group Portions Copyright (c) 1994-6 Regents of the University of California

Предоставляются права на использование, копирование, изменение и распространение данного программного обеспечения и его документации для любых целей, бесплатно и без подписания какого-либо соглашения, при условии что для каждой копии будут предоставлены данное выше замечание об авторских правах, текущий параграф и два следующих параграфа.

КАЛИФОРНИЙСКИЙ УНИВЕРСИТЕТ НЕ НЕСЕТ НИКАКОЙ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПОВРЕЖДЕНИЯ, ВКЛЮЧАЯ ПОТЕРЮ ДОХОДА, НАНЕСЕННЫЕ ПРЯМЫМ ИЛИ НЕПРЯМЫМ, СПЕЦИАЛЬНЫМ ИЛИ СЛУЧАЙНЫМ ИСПОЛЬЗОВАНИЕМ ДАННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ЕГО ДОКУМЕНТАЦИИ, ДАЖЕ ЕСЛИ КАЛИФОРНИЙСКИЙ УНИВЕРСИТЕТ БЫЛ ИЗВЕЩЕН О ВОЗМОЖНОСТИ ТАКИХ ПОВРЕЖДЕНИЙ.

КАЛИФОРНИЙСКИЙ УНИВЕРСИТЕТ СПЕЦИАЛЬНО ОТКАЗЫВАЗЫВАЕТСЯ ПРЕДОСТАВЛЯТЬ ЛЮБЫЕ ГАРАНТИИ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ТОЛЬКО ЭТИМИ ГАРАНТИЯМИ: НЕЯВНЫЕ ГАРАНТИИ ПРИГОДНОСТИ ТОВАРА ИЛИ ПРИГОДНОСТИ ДЛЯ ОТДЕЛЬНОЙ ЦЕЛИ. ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ НА ОСНОВЕ ПРИЦИПА "КАК ЕСТЬ" И КАЛИФОРНИЙСКИЙ УНИВЕРСИТЕТ НЕ ОБЯЗАН ПРЕДОСТАВЛЯТЬ СОПРОВОЖДЕНИЕ, ПОДДЕРЖКУ, ОБНОВЛЕНИЯ, РАСШИРЕНИЯ ИЛИ ИЗМЕНЕНИЯ.

1.3) На каких платформах работает PostgreSQL?

Обычно, PostgreSQL может работать на любой современной платформе совместимой с Unix. В инструкции по установке, вы найдете список тех платформ, на которых были проведены тестовые запуски PostgreSQL к моменту выхода данной версии.

Начиная с версии 8.0, PostgreSQL без всяких ухищрений работает на операционных системах Microsoft Windows, основанных на NT, таких как Win2000, WinXP и Win2003. Пакет инсталлятора доступен по адресу http://pgfoundry.org/projects/pginstaller. Версии Windows, основанные на MS-DOS (Win95, Win98, WinMe) могут запускать PostgreSQL с помощью Cygwin.

Также существует версия спортированная под Novell Netware 6 на http://forge.novell.com, и версия для OS/2 (eComStation)

1.4) Где можно взять PostgreSQL?

Например, воспользовавшись анонимным доступом на ftp сайт PostgreSQL ftp://ftp.PostgreSQL.org/pub. Список зеркал вы найдете на нашем основном сайте.

1.5) Где получить поддержку?

Сообщество PostgreSQL предоставляет помощь множеству пользователей через E-mail. Основной web-сайт для подписки на списки рассылки по E-mail это: http://www.postgresql.org/community/lists/. Хорошим местом для того, чтобы начать задавать вопросы являются списки general (общие вопросы) или bugs (ошибки).

Главным IRC каналом является #postgreql, расположенный на сервере Freenode (irc.freenode.net). Чтобы подключиться, вы можете использовать в Unix вызов программы irc -c '#postgresql' "$USER" irc.freenode.net или любой другой IRC клиент. На этом же сервере существуют каналы на испанском (#postgresql-es) и французском (#postgresqlfr) языках. Также существует канал по PostgreSQL на сервере EFNet.

Список коммерческой поддержки компаний доступен на http://techdocs.postgresql.org/companies.php.

1.6) Как мне сообщить об ошибке?

Посетите страничку со специальной формой отчёта об ошибке в PostgreSQL по адресу: http://www.postgresql.org/support/submitbug.

Также проверьте наличие более свежей версии PostgreSQL на нашем FTP сайте ftp://ftp.PostgreSQL.org/pub.

1.7) Какая последняя версия?

Последний выпуск PostgreSQL - это версия 8.0.1

Мы планируем выпускать новые версии каждые 10-12 месяцев.

1.8) Какая документация имеется в наличии?

PostgreSQL содержит много документации, включая большое руководство, страницы электронного руководства man и некоторые маленькие тестовые примеры. Смотрите в каталог /doc. Вы также можете просматривать документацию в Интернет по адресу http://www.PostgreSQL.org/docs.

Существует две книги по PostgreSQL доступные по адресам http://www.PostgreSQL.org/docs/books/awbook.html и http://www.commandprompt.com/ppbook/. Список книг по PostgreSQL, которые можно купить доступен по адресу http://techdocs.postgresql.org/techdocs/bookreviews.php. Кроме того, по адресу http://techdocs.PostgreSQL.org/ вы можете найти коллекцию технических статей посвященных PostgreSQL.

Клиент командной строки psql имеет несколько команд \d для отображения информации по типам, операторам, функциям, агрегатам и т.д. - используйте \? для получения списка доступных команд.

Наш сайт содержит еще больше информации.

1.9) Как найти информацию об известных ошибках или отсутствующих возможностях?

PostgreSQL поддерживает расширенный подкласс SQL-92. Смотрите наш список TODO на предмет известных ошибок, отсутствующих возможностей и будущих планов.

1.10) Как мне научиться SQL?

Книга по PostgreSQL на http://www.PostgreSQL.org/docs/books/awbook.html научит SQL. Существует другая книга по PostgreSQL на http://www.commandprompt.com/ppbook. Есть прекрасный учебник на http://www.intermedia.net/support/sql/sqltut.shtm, на http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM, и на http://sqlcourse.com.

Еще один учебник - это книга "Teach Yourself SQL in 21 Days, Second Edition" (Освой самостоятельно SQL за 21 день, Вторая редакция) на http://members.tripod.com/er4ebus/sql/index.htm

Многим из наших пользователей нравится книга The Practical SQL Handbook, Bowman, Judith S., et al., Addison-Wesley. Другим нравится The Complete Reference SQL, Groff et al., McGraw-Hill.

1.11) Как присоединится к команде разработчиков?

Для начала, скачайте последнюю версию исходных текстов и прочтите FAQ и документацию для разработчиков PostgreSQL на нашем сайте или в дистрибутиве. Затем, подпишитесь на списки рассылки pgsql-hackers и pgsql-patches. Далее, отправляйте исправления (patches) высокого качества в список pgsql-patches.

Существует ограниченный список людей, который имеют привелегию вносить изменения в CVS архив PostgreSQL. Каждый из этих людей в свое время отправил так много высококачественных исправлений, что их было невозможно оставить без внимания и они были удостоены превилегии вносить изменения, и мы уверены, что те исправления, которые они внесут будут высокого качества.

1.12) Как сравнивать PostgreSQL с другими СУБД?

Существует несколько методов сравнения программного обеспечения: возможности, производительность, надежность, поддержка и цена.

Возможности
PostgreSQL имеет большинство возможностей представленных в больших коммерческих СУБД, такие как: транзакции, подзапросы, триггеры, представления, ссылочной целостности вторичного ключа и разные блокировки. У нас есть некоторые возможности, которых нет у них: типы, определяемые пользователем, механизм наследования, правила и конкуретное многоверсионное управление для работы с содержимым блокировок.

Производительность
Производительность PostgreSQL сходна с другими коммерческими СУБД и с СУБД с открытым исходным кодом. В каких-то вещах мы быстрее, в каких-то медленнее. В сравнении с MySQL или линейной СУБД, мы быстрее, когда пользователей много, а также на сложных запросах и при чтении/записи загрузки запроса. MySQL быстрее для простых SELECT запросов, выполняемых небольшим количеством пользователей. И разумеется, MySQL не имеет каких-либо возможностей из перечисленых выше, в секции Возможности. Мы делаем упор на надежность и расширенные возможности, но мы также продолжаем увеличивать производительность с каждым выпуском.

Надежность
Мы понимали, что наша СУБД должна быть надежной или она ничего не будет стоить. Мы стараемся выпускать хорошо проверенный, стабильный код, который содержит минимум ошибок. Каждый выпуск проходит стадию бета-тестирования по крайней мере в течении одного месяца и наша история выпусков показывает что мы можем предоставлять стабильные, монолитные выпуски, которые готовы к продуктивному использованию. Мы верим, что мы производим проверку не хуже, чем у других СУБД.

Поддержка
Наш список рассылки предоставляет возможможность общения с большой группой разработчиков и пользователей, которые могут помочь решить любые возникшие проблемы. В то же время, мы не гарантируем какие-либо исправления, но и разработчики коммерческих СУБД не всегда делают исправления. Прямой доступ к разработчикам, сообществу пользователей, руководствам и исходным текстам часто делают поддержку PostgreSQL превосходящей другие СУБД. Существует коммерческая поддержка по результам возникших инцидентов, которая доступна для тех кому она нужна. (Смотрите Секцию 1.5.)

Цена
Наш продукт бесплатен как для коммерческого так, и не для коммерческого использования. Вы можете добавлять свой код в наш продукт без ограничений, за исключением тех, что описываются в нашей лицензии стиля BSD, которая приведена выше.

Вопросы пользователей по клиентской части

2.1) Какие интерфейсы есть для PostgreSQL?

Установка PostgreSQL включает только C и встроенный (embedded) C интерфейсы. Все другие интерфейсы являются независимыми проектами и загружаются отдельно; самостоятельность проектов позволяет им организовать собственное расписание выпусков новых версий и иметь собственную команду разработчиков.

Некоторые языки программирования, такие как PHP включают в себя интерфейс к PostgreSQL. Интерфейсы для таких языков как Perl, TCL, Python и многих других, доступны на http://gborg.postgresql.org в секции Drivers/Interfaces, а также через поиск в Интернет.

2.2) Какие инструменты существуют для использования PostgreSQL через Web?

Прекрасное введение во взаимодействие баз данных и Web можно найти на: http://www.webreview.com

Для интеграции с Web, PHP http://www.php.net является неплохим интерфейсом.

В сложных случаях, многие пользуются Perl и CGI.pm или mod_perl.

2.3) Есть ли у PostgreSQL графический интерфейс пользователя?

Да, существует несколько графических интерфейсов для PostgreSQL. Они включают PgAdmin III (http://www.pgadmin.org), PgAccess (http://www.pgaccess.org), RHDB Admin (http://sources.redhat.com/rhdb/), TORA (http://www.globecom.net/tora/ частично коммерческое ПО) и Rekall ( http://www.rekallrevealed.org/). Также есть PhpPgAdmin ( http://phppgadmin.sourceforge.net/) - интерфейс к PostgreSQL, основанный на Web.


Вопросы администрирования

3.1) Как мне установить PostgreSQL в место отличное от /usr/local/pgsql?

Задайте опцию --prefix когда запускаете configure.

3.2) Как мне управлять соединениями с других компьютеров?

По умолчанию, PostgreSQL разрешает только соединения на локальной машине через сокеты домена Unix или TCP/IP соединения. Для того, чтобы другие машины смогли подключиться к базе вы должны изменить listen_addresses в postgresql.conf, разрешить host-авторизация в файле $PGDATA/pg_hba.conf и перестартовать сервер.

3.3) Какие настройки мне нужно сделать для улучшения производительности?

Существует три главных области, которые потенциально могут увеличить производительность:

Изменение запроса
Это означает модификацию запросов для получения лучшей производительности:
  • Создание индексов, включая индексы выражений и частичные индексы
  • Использование COPY вместо множества INSERT
  • Группировка нескольких операторов в единую транзакцию для уменьшения нагрузки при выполнении завершения транзакции
  • Использование CLUSTER, когда из индекса берётся множество строк
  • Использование LIMIT для того, чтобы возвращалась только часть вывода от запроса
  • Использование Подготовленных (Prepared) запросов
  • Использование ANALYZE для обслуживания статистики оптимизатора
  • Регулярное использование VACUUM или pg_autovacuum
  • Удаление индексов во время больших изменений данных


Настройка сервера
Некоторые установки в postgresql.conf влияют на производительность. Подробный полный список установок см. в Administration Guide/Server Run-time Environment/Run-time Configuration, а комментарии см. в http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html и http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.

Выбор "железа" - аппаратного обеспечения
Влияние "железа" на производительность подробно описано в http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html и http://www.powerpostgresql.com/PerfList/.

3.4) Какие возможности для отладки есть в наличии?

Есть множество установок в настройках сервера, начинающихся на log_*, позволяющих протоколировать запросы и статистику работы процесса, которая очень полезна для отладки и измерения производительности.

Для предоставления более детальной информации разработчикам сервера при отладке какой-либо проблемы должны пользоваться следующие инструкции.

Таким же образом можно производить и отладку севера, если он работает неправильно. Во-первых, при запуске configure с опцией --enable-cassert, многие вызовы assert() позволяют отслеживать работу backend процесса и остановку программы при возникновении каких-либо неожиданностей.

Если postmaster не запущен, вы можете запустить postgres backend из командной строки и ввести ваш оператор SQL напрямую. Это рекомендуется только для целей отладки. Заметим, что в этом режиме, запрос завершается символом новой строки, а не точкой с запятой. Если вы производили компиляцию с отладочными символами, вы можете использовать любой отладчик, чтобы посмотреть, что случилось. Поскольку backend запускается не из postmaster, он не запускается в идентичном окружении и значит проблемы итераций блокировок/backend не могут быть воспроизведены.

Если postmaster запущен, запустите psql в одном окне, затем найдите PID процесса postgres, используемый psql, используя SELECT pg_backend_pid(). Используйте отладчик для подключения к postgres PID. Вы можете установить точки прерывания в отладчике и запустить запрос из psql. Если вы производите отладку запуска postgres, вы можете установить PGOPTIONS="-W n", и затем запустить psql. Эта опция приводит к задержке процесса запуска на n секунд, в течение которых вы можете подключить к процессу отладчик, установить любые точки прерывания и продолжить запуск.

Вы также можете скомпилировать PostgreSQL с профилированием для того, чтобы увидеть какие функции сколько времени выполняются. Файлы профилирования backend'а находятся в каталоге pgsql/data/base/dbname. Файл профилирования клиента будет помещен в текущий каталог клиента. В Linux для выполнения профилирования требуется компиляции с -DLINUX_PROFILE.

3.5) Почему я получаю сообщение "Sorry, too many clients" когда пытаюсь подключиться к базе?

Вы достигли установленного по умолчанию ограничения на 100 сессий подключения к базе данных. Вам необходимо увеличить для postmaster лимит на количество конкурентных backend процессов, изменив значение max_connections в файле postgresql.conf и перестартовать postmaster.

3.6) Почему необходимо делать dump и restore при обновлении выпусков PostgreSQL?

Разработчики PostgreSQL делают только небольшие изменения между подвыпусками. Таким образом обновление с версии 7.4 до 7.4.1 не требует выполнения dump и restore. Однако при выходе очередного выпуска (т.е. при обновлении например, с 7.3 на 7.4) часто меняется внутренний формат системных таблиц и файлов данных. Эти изменения часто носят комплексный характер, так что нет возможности обеспечить обратную совместимость файлов данных. Выполение dump позволяет получить данные в общем формате, который затем может быть загружен при использовании нового внутреннего формата.


 
 
« Пред.   След. »
Взаимосвязанные статьи
     

Последние добавленные статьи
Поиск
Ссылки
Главная
Скачать
Курсы
Роль АБД (SYSDBA)
Карта сайта
Автостекла
Контакты
Войти на сайт
Популярные статьи
Online - тесты
1Z0-042
Rambler's Top100 МЕТА - Украина. Рейтинг сайтов хостинг от freehost.com.ua

Все права защищены.SYSDBA 2010 | Если у Вас есть хороший материал пришлите его нам.