Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
Вопрос к гуру Postgres - есть ли принципиальная разница между Linux и Windows версией (Postgres 8.3.5)? Заранее скажу - персональный Postgres для Windows нужен для разработки, так как это удобно. Тестирование и продакш будет под Линуксом конечно. Проблема заключается в том, что запрос на одной и той же БД под управлением одной и той же версии Postgres в Linux и Windows выполняется с разницей во времени исполнения в 2000 раз (40 секунд против 50 мс) - имеем БД GeoNames (http://www.geonames.org/), две таблицы, "все-в-одном" - нормализация отсутствует. - таблица geoname - 3 миллиона записей - таблица alternatename - 1.5 миллиона записей - имеем следующий запрос (выборка всех стран) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. В итоге: версия под Linux работает как и должна (50мс), а вот под Windows планировщик решает перебрать все записи Seq Scan в таблице alternatename, а там их полтора миллиона (40-60 сек). Я понимаю почему планировщик иногда включает Seq Scan - когда он решает, что ему нужны все (или почти все) записи - но почему поведение так отличается от Linux-версии? Версия под Linux настройке почти не подвергалась, товарищ только размеры shared_buffers и temp_buffers увеличил, правда железо там помощнее, но зато там же еще Oracle под разработку крутится. База одна и та же, индексы одни и те же (backup -> restore). Если добавить ничего незначащее условие Код: plaintext 1. то Windows-версия работает также замечательно, хотя план все равно немного другой. Также помогает полное запрещение сканирования "SET enable_seqscan=false" но все это меня мало устраивает, очень хочется, чтобы поведение на обоих платформах хотя бы немного сходилось. Хочу понять как мне действовать дальше. Порулил немного параметрами postgresql.conf - пока результатов нет. Я понимаю, что Windows - не продакшн платформа для Postgres. Я бы смирился с потерей производительности в 10 раз - но тут прямо фейсом об тейбл сразу. Не припомню чтобы Firebird или Oracle так себя вели под Windows. Просто скажите, кто работал с Postgres под обеими платформами - они ведут себя идентично, особенностей нет? Если нет, буду дальше крутить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2008, 20:07 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
Nick Mazurkin пишет: > Вопрос к гуру Postgres - есть ли принципиальная разница между Linux и > Windows версией (Postgres 8.3.5)? Заранее скажу - персональный Postgres Большой принципиальной разницы нет. Один сервак просто у тебя настроен, другой - нет. скорее всего. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2008, 20:21 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
Я бы сказал, что они оба не настроены. Наверное Лайнуксу просто повезло немного больше :) Буду крутить дальше, спасибо. На всякий случай приведу планы. "Хороший" запрос на сервере под Лайнуксом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. "Плохой" запрос на сервере под Windows: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Запрос под Windows с дополнительным условием (см. первый пост): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Я пока только учусь и не силен, но то, что стоимость реального запроса отличается от предполагаемой стоимости - говорит ли о том, что планировщик не совсем понимает, что делает? (Про меня - не вопрос - я пока точно не понимаю :) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2008, 20:45 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
после restore необходимо делать analyze чтобы собрать статистику распределения данных, необходимую планировщику для правильного планирования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2008, 21:03 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
К сожалению ни VACUUM FULL ANALYSE ни просто ANALYSE на ситуацию не влияют ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2008, 21:34 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
Nick Mazurkin, мне кажется надо начать со сравнения настроек планировщика, что-то вроде Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2008, 21:48 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
Проверил - одинаково. Вообще оба сервера "из коробки". На линуксовом только увеличены shared_buffers и temp_buffers. Попытки увеличить эти же буферы на Windows на результат не влияют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2008, 22:11 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
авторЗаранее скажу - персональный Postgres для Windows нужен для разработки, так как это удобно. простите за офтоп-чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 06:51 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
Я сижу на работе под Windows - а иметь персональный сервер для разработки рекомендуется всеми советчиками по правильным методологиям. Кроме того я работаю и дома, а там вообще только одна машина (под Windows). Переезд под Linux - не вариант. Кроме того в данный момент мне просто интересно, почему планировщик Postgres под Windows из всех вариантов выбирает самый чудовищный и где я ему помог в этом :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 08:58 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
Nick MazurkinКроме того я работаю и дома, а там вообще только одна машина (под Windows). Поставьте на Windows VMWare, а на него - тот же самый Linux, что Production. Я в свое время долго не мог поверить в то, что такая комбинация даст какую-то пользу, кроме сексуального удовлетворения, но оказывается это достаточно стабильно и быстро, по крайней мере на 2.8GHz 2GB RAM. Очень рекомендую. Nick MazurkinКроме того в данный момент мне просто интересно, почему планировщик Postgres под Windows из всех вариантов выбирает самый чудовищный и где я ему помог в этом :) Тут под одним и тем же сервером на Linux порой всю плешь исскоблишь, почему он этакие планы откаблучивает, а Вы под Windows. Не плодите себе проблем. Они постоянно, в каждом релизе в планировщике чего-то подкручивают, вот и разница. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 10:12 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
Nick MazurkinПроверил - одинаково. Вообще оба сервера "из коробки". На линуксовом только увеличены shared_buffers и temp_buffers. Попытки увеличить эти же буферы на Windows на результат не влияют.точно одинаковые postgresql.conf ? сравните их diff'ом. посмотрите, одинаковый ли effective_cache_size. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 10:23 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
Nick Mazurkin"Хороший" запрос на сервере под Лайнуксом: Код: plaintext 1. "Плохой" запрос на сервере под Windows: Код: plaintext 1. set default_statistics_target to 1000; analyze geoname; analyze alternatename; explain analyze select ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 11:34 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
Cane Cat FisherПоставьте на Windows VMWare, а на него - тот же самый Linux, что Production. Я в свое время долго не мог поверить в то, что такая комбинация даст какую-то пользу, кроме сексуального удовлетворения, но оказывается это достаточно стабильно и быстро, по крайней мере на 2.8GHz 2GB RAM. Очень рекомендую. Да, собственно к этому варианту и склоняюсь сейчас, просто ситуация застала меня в расплох - до этого работал только с Firebird, MySQL, Oracle - да и уже любопытно на самом деле. С виртуальными машинами действительно удобно, правда вот Oracle@CentOs5 у меня нещадно тормозил под VMWare, но Postgres более поджарый, да и рабочий комп буду апгрейдить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 11:45 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
Ёшсравните их diff'ом. посмотрите, одинаковый ли effective_cache_size. В данный момент под Windows и под CenOs в дефолтных конфигах изменены только shared_buffers (256MB) и temp_buffers (128MB) - одинаково. Параметр effective_cache_size не задан. Вернее сказать я устанавливал effective_cache_size в 1/4..1/2 оперативки (2GB) под Windows и перезапускал сервис сервера - без эффекта. Сейчас закомментировал обратно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 12:03 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat[quot Nick Mazurkin] на линуксе планировщик ошибается в оценке кол-ва строк на два порядка в меньшую сторону, на виндах - на три порядка в большую. это серьезные ошибки. соберите самую подробную статистику по таблицам, потом покажите explain analyze. set default_statistics_target to 1000; Вы вероятно провидец?! Ваш волшебный параметр заставил сервер под Windows работать идентично - план получился такой же и время работы идентично! Ушел читать доки. Но если вам не трудно будет - опишите в двух строчках что произошло? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 12:07 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
P.S. Как я и говорил - конфиги на обоих платформах почти не трогались, этот параметр был закомментирован и там и там. Поставил значение в 1000 - буду надеяться, что больше фокусов не будет - а то придется из разработчика переквалифицировать в администратора БД :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 12:11 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
Nick Mazurkinплан получился такой же и время работы идентично Но если вам не трудно будет - опишите в двух строчках что произошло?план все-таки покажите пожалуйста. в двух словах - на выбор плана влияет в частности статистика распределения значений в полях таблиц. так как планировщик ошибся в оценке кол-ва строк удовлетворяющих условию fcode='PCLI', то сбор подробной статистики может помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 12:12 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatэто серьезные ошибки. соберите самую подробную статистику по таблицам, потом покажите explain analyze. А, да. Вдруг вам любопытно - вот план выполнения под Windows - практически полностью идентичен Линуксовому только на 30% медленнее. Но там и серверная машина гораздо мощнее чем мой рабочий компьютер. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 12:16 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
P.S. И насколько я понимаю из вашего замечания, планировщик под Windows теперь ошибается всего в три раза в большую сторону - уже без "порядков"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 12:22 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
Nick MazurkinА, да. Вдруг вам любопытно - вот план выполнения под Windows Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 12:24 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
Ради науки поставили под Линуксом default_statistics_target=1000, план скорректировался к аналогичному Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 13:01 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
Уменьшил параметр до сотни - все работает хорошо default_statistics_target=100 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 13:20 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
А ещё стоит учитывать, что unix оптимальнее работает на процессах а маздай - на потоках. В отличие от Оракла, под маздай PostgreSQL не переделывали, насколько я знаю, он и там работает на процессах. Поэтому он там должен работать медленнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 17:01 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
Cane Cat Fisher Поставьте на Windows VMWare, а на него - тот же самый Linux, что Production. Я в свое время долго не мог поверить в то, что такая комбинация даст какую-то пользу, кроме сексуального удовлетворения, но оказывается это достаточно стабильно и быстро, по крайней мере на 2.8GHz 2GB RAM. Очень рекомендую. Намного лучше и быстрее будет Virtualbox. У меня, правда, ситуация обратная - под линуксом запускать виндоус (и, разумеется, другие линуксы, штуки три одновременно, притом на ноуте), однако все виндузятники, кому рекомендовал вышеназванный виртуализатор, им довольны. P.S. А виндоус на виртуалке быстрее нативного :-) Причин тому несколько - хостовый линукс эффективно кэширует ФС и за счет уменьшения кол-ва подключенного оборудования задействовано меньше прерываний в винде (интересно, мелкомягкие это когда-нибудь перепишут? про висту ничего не могу сказать, но вряд ли оно сделано). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2008, 23:58 |
|
||
|
Linux vs. Windows
|
|||
|---|---|---|---|
|
#18+
Должен сказать, что у меня был несколько отрицательный опыт использования как VirtualBox так и MS Virtual PC - я никак не мог установить Oracle 11g на CentOS - инсталляция вылетала с непонятной ошибкой на обоих эмулятор. Под VMWare все прошло замечательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2008, 14:51 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=35733631&tid=2003746]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
240ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 593ms |

| 0 / 0 |
