Новых возможностей в PostgreSQL 7.2.3 не появилось, зато исправлено несколько очень серьезных ошибок в коде, приводящих, при определенных обстоятельствах, к потере данных в рамках транзакции. Разработчики советуют как можно скорее провести апгрейд, если у Вас используется 7.2.x версия PostgreSQL, тем более что dump/restore базы не требуется. Кратко список исправлений:[[END]]<li>Ошибки в VACUUM коде, если VACUUM выполняется не под суперпользователем, то по ошибке могут быть удалены файлы где хранится лог текущих транзакций (pg_clog файлы);
<li>Поддержка дат до 1970 года при работе с новыми версиями glibc;
<li>Исправлена ошибка при shutdown'е приводящая к некорректному завершению;
<li>Ошибки приводящие к падению на SMP PPC машинах;
<li>pg_dump научился делать дампы "FULL JOIN USING".
URL: http://www.postgresql.org
Новость: http://www.opennet.me/opennews/art.shtml?num=1608
Интересно почему в PostgreSQL постоянно возникают deadlock. Причем для простейших таблиц (5 int полей с int ключем, 60 записей) с достаточно интенсивным UPDATE (примерно от 5 раз в минуту до 3 раз в сек.)- dead lock выскакивают регулярно, несмотря на ежедневный VACUUM ANALYZE и еженедельный VACUUM FULL базы. Запросы простейшие, даже транзакций нет. Просто постоянные SELECT и UPDATE, гораздо реже INSERT.Раньше грешил на транзакции, dead lock вываливались на совершенно других базах, порядок следования доступа к таблицам был одинаковым.
Какая у вас версия PostgreSQL? У нас в промышленной эксплуатации 7.0.3, потом перешли на 7.1 - все в полном порядке. Что касается deadlock: 1. Попробуйте PostgreSQL на классическом Linux-e (известно, что под FreeBSD он не очень хорошо себя показал, а под модифицированными ядрами Linux-a возможны проблемы). Итог - Slackware 8.1 + PostgreSQL 7.2.3 (собирать из исходников, все собирать с установками по-умолчанию). После такой кратко описанной установки надеюсь у вас заработает.
>Какая у вас версия PostgreSQL?7.2.1
> У нас в промышленной эксплуатации 7.0.3, потом
> перешли на 7.1 - все в полном порядке.В том-то и дело, что при 7.0 и 7.1 проблем тоже небыло, хотя нагрузка на базу была намного меньше текущей.
>1. Попробуйте PostgreSQL на классическом Linux-e (известно, что под FreeBSD он
У меня на SMP системе под FreeBSD, очень вероятно, что именно SMP и приводит к проблемам, так как на старом однопроцессорном сервере я deadlock'ов тоже не помню.
Скорее всего у Вас алгоритм работы программы не
проработан. У меня десятки таблиц с кучей ФК и апдейтов несколько (~ 2 - 10) раз в секунду, без проблем. Вообще,если начинать работать с БД, то лучше PostgreSQL, в перспективе, нет.
>Скорее всего у Вас алгоритм работы программы не
>проработан.Я тоже так думал, пока deadlock не стали вылазить на ровном месте и на самой простейшей таблице при апдейте без транзакции. Есть скрпипт который выполняет SELECT/UPDATE||INSERT, скрипт запускается хаотично, вполне вероятна ситуация одновременного запуска. Но по идее PostgreSQL отлично справляется с этой ситауцией, мне кажется , что из-за SMP два управляющих фронтэнда PostgreSQL (при запуске на 2-процессорной системе) не разбирают ситуацию блокировки при одновременном запросе к обоим фронтэндам.
Про порядок следования операций с таблицами в пределах транзакции я в курсе, про тонкости описанные в LOCK-мануале тоже.
>2 - 10) раз в секунду, без проблем. Вообще,если начинать работать
>с БД, то лучше PostgreSQL, в перспективе, нет.Согласен, но начинать мне поздно, я с PostgreSQL года с 1997 не расстаюсь, проблемы появились только на SMP машине.
Кстати у нас PostgreSQL на Linux-e 2.4 Slackware 7.1 с SMP (2xP3-1000).
У меня FreeBSD 4.x и PostgerSQL 7.2.x работают
несколько месяцев.
Автоматическая заливка статистики с маршрутизаторов
CISCO (IP Accouning, Netflow).
Система в постоянной работе. Очень активной.
И все пучком... никаких проблем вообще не наблюдалось...
На сегодняшний день pgsql 7.2.3 на FreeBSD 4.7 P4-2000
У меня - тоже. Free + PostgreSQL. На одном процессоре. А на SMP в реальной работе эту связку кто использует, а? Какие результаты?
>У меня - тоже. Free + PostgreSQL. На одном процессоре. А на
>SMP в реальной работе эту связку кто использует, а? Какие результаты?Пользуемся, почти все нормально. FreeBSD, PostgreSQL 7.2.2. Объем - ~800000 записей.
Из проблем - периодически (от 0 до 5-7 раз в день) падает одно из соединений, предположительно, из-за ошибок в протоколе. В результате чего сервер сразу отключает всех остальных клиентов. Сделали автоматический reconnect при потере соединения у клиента.