Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
Добрый день! Последние полгода активно изучаю/исследую PostgreSQL и пытаюсь применить его в одном из серьезных продуктов. Первое впечатление было очень хорошим: стройность архитектуры, богатство возможностей, удовлетворительная производительность. Однако, приступив к более тщательному тестированию реальной БД (достаточно большой), с прискорбием обнаружил много неприятных неожиданностей. Первое, что бросилось в глаза - весьма и весьма далекий от совершенства планировщик запросов. Сравниваю с тем, что выдает SQLServer2005 и то, что вижу, совсем не радует. (Предупреждая возможные замечания, отмечу, что прочитал достаточно всяких наставлений по настройке и оптимизации PG. Кое-что помогло). Те доработки, которые были сделаны PG Development Team за это время, хотя и улучшили ситуацию, но общее ощущение ненадежности, непредсказуемости все равно никуда не делось. На прошлой неделе поставил последний релиз 8.2.1. В postgresql.conf изменил только один параметр: constraint_exclusion = on (нужно для партиционирования). Позавчера сервер в первый раз "неожиданно" упал во время запроса COPY... FROM. Смотрю в лог: 2007-01-12 17:23:16 PANIC: could not open control file "global/pg_control": Permission denied С тех пор возникают случаи, когда при попытке выполнить какой-нибудь SELECT, можно время от времени получить ошибку сервера a-la: ERROR: ...................: Permission denied. Причины столь странного поведения совсем непонятны. Есть подозрение, что дело в fsync (раньше я его всегда отключал). Хотелось бы услышать мнение более опытных коллег об их видении PostgreSQL в свете всего выше сказанного. А именно, насколько надежной системой представлется PG? Данный пост, ни в коем случае не провокационный ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 16:25 |
|
||
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
А с правами на эти файлы действительно всё в порядке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 16:28 |
|
||
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
Так в общем и целом все вроде работает. А вот иногда: "Ну не ДАЕТ!!!" ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 16:48 |
|
||
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
на 8.1.х было такое? на какой операционке работаете? по поводу permission denied нашел только в одном из аннонсов: автор Make the bgwriter's error recovery path do smgrcloseall(). On Windows this should allow delete-pending files to actually go away, and thereby work around the various complaints we've seen about 'permission denied' errors in such cases. Should be reasonably harmless in any case... но было это 3го декабря 2006 и относится ли к вашей проблеме, не знаю ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 17:02 |
|
||
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
Только что обнаружил интересный пост: pgsql-hackers-owner@postgresql.org; Tom Lane [tgl@sss.pgh.pa.us] [HACKERS] Idea for fixing the Windows fsync problem I just had a thought about fixing those Windows "permission denied" problems. The case that we believe we understand is where the bgwriter is trying to execute a previously-logged fsync request against a table file that is pending delete --- that is, actually has been unlink()'d, but some other process is holding an open file reference to it. The problem is only for fsync, not for write(), because the table drop sequence always invalidates every shared buffer for the table before trying to unlink it. So: maybe the solution is to add a step to the drop sequence, namely revoking any pending fsync request, before unlink. This would not only clean up the Windows issue, it'd also let us remove the current hack in md.c to not complain about an ENOENT failure (which is really hardly any safer than ignoring EACCES would be, if you want to be honest about it). The problem is that the ForwardFsyncRequest() mechanism is asynchronous: currently, a backend could see pending fsync requests that are still in the shared-memory queue, but there's no way to tell whether the bgwriter has already absorbed some requests into its private memory. How can a backend tell the bgwriter to forget about it, and then delay until it can be sure that the bgwriter won't try it later? We could have backends put "revoke fsync" requests into the shared queue and then sleep until they see the queue has been drained ... but there's not a convenient way to implement that delay, and I hardly want to just "sleep and retry" during every table drop. It'd probably take at least one more LWLock, and noticeably more complicated ForwardFsyncRequest() logic, to make this work. Thoughts? Is this a reasonable solution path, or is it likely to be a waste of time? We know that there are causes of "permission denied" that are not explained by the pending-delete problem. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 17:04 |
|
||
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
zsm Однако, приступив к более тщательному тестированию реальной БД (достаточно большой), с прискорбием обнаружил много неприятных неожиданностей. Первое, что бросилось в глаза - весьма и весьма далекий от совершенства планировщик запросов. Сравниваю с тем, что выдает SQLServer2005 и то, что вижу, совсем не радует. (Предупреждая возможные замечания, отмечу, что прочитал достаточно всяких наставлений по настройке и оптимизации PG. Кое-что помогло). Ну, это разные СУБД, так что и планы выполнения запросов могут быть разные. Я давеча с Ораклом сравнивал, в некоторых местах далеко не в пользу последнего, а в некоторых не в пользу Постгреса - могло бы и лучше раздуплиться. Если есть конкретные предъявы - можно обсуждать, если нет - то наверно и обсуждать нечего. zsm Позавчера сервер в первый раз "неожиданно" упал во время запроса COPY... FROM. Смотрю в лог: 2007-01-12 17:23:16 PANIC: could not open control file "global/pg_control": Permission denied С тех пор возникают случаи, когда при попытке выполнить какой-нибудь SELECT, можно время от времени получить ошибку сервера a-la: ERROR: ...................: Permission denied. Причины столь странного поведения совсем непонятны. Есть подозрение, что дело в fsync (раньше я его всегда отключал). А какая ОС? Я никогда fsync не отключал, никогда таких проблем не имел. zsm Хотелось бы услышать мнение более опытных коллег об их видении PostgreSQL в свете всего выше сказанного. А именно, насколько надежной системой представлется PG? У меня ПГ упал на памяти три раза. 1-й БедБДлок на винте, умерла таблица, 2-й умудрились поставить его на FAT32 и что-то случилось с БД, 3-й каким-то загадочным неизвестным науке способом доочищались места на винте до того, что удалили часть фалов PG. Есть информация о серьезным применении еще 7.4 версии в учетных системах. zsm Данный пост, ни в коем случае не провокационный ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 17:08 |
|
||
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
У меня на PG8.1.4 работает учетная система трафика, к базе имеет доступ достаточно много пользователей (2-3 запроса есть постоянно, вообще клиентов около 1000). Работает уже около полугода на этой версии и еще полгода на более старой. Работает стабильно. Одно падение было, но это по моей вине, сделал fsck на работающей системе, восстановил потом из дампа и заодно версию обновил :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 18:00 |
|
||
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron Ну, это разные СУБД, так что и планы выполнения запросов могут быть разные. Я давеча с Ораклом сравнивал, в некоторых местах далеко не в пользу последнего, а в некоторых не в пользу Постгреса - могло бы и лучше раздуплиться. Если есть конкретные предъявы - можно обсуждать, если нет - то наверно и обсуждать нечего. Да, предъявы имеются. Можно и обсудить. Хотя, наверное, это надо напрямую девелоперам жалиться. В сравнении с SQLServer2005, PG стабильно проигрывает приблизительно в 2 раза. С Ораклом не сранивал. Зато сравнивал SQLServer2005 c SQLServer2000 и надо честно признаться, чувствуется, что интеллектуальность планировщика на порядок стала лучше. Но это к слову... Andrey DaeronА какая ОС? WinXP Pro SP2 (English) Andrey DaeronУ меня ПГ упал на памяти три раза. 1-й БедБДлок на винте, умерла таблица, 2-й умудрились поставить его на FAT32 и что-то случилось с БД, 3-й каким-то загадочным неизвестным науке способом доочищались места на винте до того, что удалили часть фалов PG. Есть информация о серьезным применении еще 7.4 версии в учетных системах. Продолжаю читать pg-рассылку. Все больше прихожу к выводу, что какой-то косяк ребята привнесли в один из последних релизов. Ну не может быть чтобы "друг, оказался вдруг...". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 18:07 |
|
||
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
SQLServer2005 у вас работал как блочник или версионник? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 18:18 |
|
||
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
SQLServer2005 у вас работал как блочник или версионник? Как блочник. Однако, и в версионном режиме аналогичные результаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 19:35 |
|
||
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
> WinXP Pro SP2 (English) Нормальную операционную систему использовать не пробовали? Для PostgreSQL форточки - необязательная фича. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 20:05 |
|
||
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
Версия PostgreSQL для Win - реально только для разработки, т.к. вся функциональность есть, а производительность раза в 3-4 меньше чем на Unix-платформе. В частности из-за плохого кэширования/использования памяти виндой и таким же дерьмовым планировщиком процессов/коннектов. В реально нагруженных проектах не рекомендую использовать. Что же касается бага с правами, то он, скорее всего происходит из-за какого-то конфликта одновременного доступа к файлам разных серверных процессов, который винда почему-то не разруливает, вероятно, из-за недостатков по скорости обработки таких ситуаций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 20:31 |
|
||
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
alex_v13Версия PostgreSQL для Win - реально только для разработки, т.к. вся функциональность есть, а производительность раза в 3-4 меньше чем на Unix-платформе. В частности из-за плохого кэширования/использования памяти виндой и таким же дерьмовым планировщиком процессов/коннектов. В реально нагруженных проектах не рекомендую использовать. Че за бред? Нормально под виндой работает, появляющиеся баги - фиксятся, равно как и под юнихом. Ессно в "серьезно нагруженных" проектах, да еще и 24x7 в принципе винда не рекомендуется. Ессно исторически unix-like версия стабильнее и надежнее, ей банально и лет больше и внедрений. Но про 3-4 раза падения производительности - это неправда, так же как и про "ненадежность" решения под винду. Есть например замечательная СУБД Оракл. Есть проект который под ней живет. За последние полгода под Юнихом накопилось около 2000 падений, под виндой около 1000. Про множественные internal error я уже молчу. При этом на надежность - вроде никто не жалуется :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2007, 11:19 |
|
||
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
каким именно юнихом, патченый оракл или нет? :) В пг решили особо не заморачиваться и реализовали пг под вин примерно также как пг под *nix (1 конект - 1 процес), в оракле используются потоки. Насколько мне известно, создание и поддержка процесса под win несколько дороже чем аналогичная операция для *nix-like систем. Так что, имхо, для пг win платформа не совсем естественная среда обитания :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2007, 11:36 |
|
||
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
st_sergкаким именно юнихом, патченый оракл или нет? :) FC4, 10GR2 не в этом дело. Факт етсь факт. И там тоже есть куча недофискенных багов. st_serg В пг решили особо не заморачиваться и реализовали пг под вин примерно также как пг под *nix (1 конект - 1 процес), в оракле используются потоки. Насколько мне известно, создание и поддержка процесса под win несколько дороже чем аналогичная операция для *nix-like систем. Так что, имхо, для пг win платформа не совсем естественная среда обитания :) Ну пусть даже и будет дороже. На сколько? На 1%? На 2%? Это ж не разы и легко компенсируется чуть более шустрым процессором+немного памяти. Может для сотен подключений (может конечно и для меньшего числа) это и будет в конечном итоге цифра о которой стоит говорить. Те вещи, которые я гонял показывают, что по большому счету все находится в пределах статистической погрешности. Т.е. если есть выбор между тем куда ставить ПГ на винду или юних - однозначно юних, если выбора нет - то это в достаточно большом количестве слуачев - не смертельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2007, 12:33 |
|
||
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron Че за бред? Нормально под виндой работает, появляющиеся баги - фиксятся, равно как и под юнихом. Ессно в "серьезно нагруженных" проектах, да еще и 24x7 в принципе винда не рекомендуется. Ессно исторически unix-like версия стабильнее и надежнее, ей банально и лет больше и внедрений. Но про 3-4 раза падения производительности - это неправда, так же как и про "ненадежность" решения под винду. Есть например замечательная СУБД Оракл. Есть проект который под ней живет. За последние полгода под Юнихом накопилось около 2000 падений, под виндой около 1000. Про множественные internal error я уже молчу. При этом на надежность - вроде никто не жалуется :) Это получается по 5/10 падений в день - проект в разработке? И вообще, как можно столько раз уронить базу ? Я Погресс использую еще с 7.2.1 и на никсе и на винде (cygwin/native). И тесты делал многократно, просто по факту переноса баз на фронтал, т.к. разработку удобнее вести на винде, а вот фрон серваки все униксовые. Так вот, в разработке все нормально, и в не нагруженных пректах нет проблем, а вот чуть-чуть больше нагрузки и все - падение скорости раза в 3-4. Это я про винду. Пример был совсем не давно. Умер коннект к обеим фронтальным серверам БД и временно работа всего сервиса, который я сейчас веду под Постгресом, была переведена на разработческую версию под виндой (юниксовая тоже отвалилась). Сервис стал сразу тормозить раза в 2-3. Full Vacuum Analyze был сделан. Так что винда явно не лучшая платформа для Постгреса, как раз из-за плохго управления память и процессам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2007, 13:19 |
|
||
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
alex_v13 Это получается по 5/10 падений в день - проект в разработке? И вообще, как можно столько раз уронить базу ? ХЗ. Заметили по тому, что он в какой-то каталог складывал файлики с описанием AV. Да, продукт в разработке. alex_v13 Я Погресс использую еще с 7.2.1 и на никсе и на винде (cygwin/native). И тесты делал многократно, просто по факту переноса баз на фронтал, т.к. разработку удобнее вести на винде, а вот фрон серваки все униксовые. Так вот, в разработке все нормально, и в не нагруженных пректах нет проблем, а вот чуть-чуть больше нагрузки и все - падение скорости раза в 3-4. Это я про винду. Пример был совсем не давно. Умер коннект к обеим фронтальным серверам БД и временно работа всего сервиса, который я сейчас веду под Постгресом, была переведена на разработческую версию под виндой (юниксовая тоже отвалилась). Сервис стал сразу тормозить раза в 2-3. Full Vacuum Analyze был сделан. Так что винда явно не лучшая платформа для Постгреса, как раз из-за плохго управления память и процессам. А можно в этом месте поподробнее? Сколько клиентов, какая нагрузка? На каком моменте умерла? Чего с дисковой? Ну и т.д. Может скази решение с IDE сравнивается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2007, 14:36 |
|
||
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron Да не, база не умерла, сдох один из сетевых каналов до серверной. Сравнивается действительно SCSI с IDE, но на железке с 4GB памяти я думаю, это не настолько существенно. Тем более, что на тестовом сервере fsync=off. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2007, 15:17 |
|
||
|
PGSQL. Разочарование близко.
|
|||
|---|---|---|---|
|
#18+
alex_v13 Да не, база не умерла, сдох один из сетевых каналов до серверной. Да не, я про виндовую БД. На каком этапе умерла, и что стало причиной торомзов. Т.е. это вполне могла быть дисковая. alex_v13 Сравнивается действительно SCSI с IDE, но на железке с 4GB памяти я думаю, это не настолько существенно. Тем более, что на тестовом сервере fsync=off. 4GB - это к сожалению не панайцея. На IDE тупорылое копирование 3-х фильмов с раздела на раздел роняет в даун дисковую подсистему :( Ну, не удивительно. Я как бы не специалист, но скази существенно обгоняет IDE решение при множественных выборках с винта и записях на винт. Т.е. собсно чем скази лучше - когда много народу что-то с БД делает, приросты могут быть в эти самые разы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2007, 16:24 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34259955&tid=2005797]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 373ms |

| 0 / 0 |
