У меня есть два идентичных сервера (с точки зрения аппаратного обеспечения), они оба являются стандартными установками Windows Server 2008 r2, с минимальным количеством установленного программного обеспечения (в основном мой код и необходимые вещи, такие как jvm и т. Д.).
На одном сервере я запускаю sql server 2005, на втором сервере postgresql 9.1. Разница в производительности между этими двумя серверами ошеломляет, это настолько плохо на postgresql, что я сожалею о своей первоначальной речи «давайте использовать postgresql вместо того, чтобы платить за лицензию sql server» моему боссу. Мы говорим о разнице в 30 секунд и 15 минут для одной и той же команды, и это не просто одна команда, это любой запрос или команда, которую я бросаю на нее. Они оба имеют практически одинаковые данные (записи были вставлены в разном порядке), и обе базы данных имеют одинаковую структуру / индексы и т. Д.
Но я надеюсь, что это просто вопрос настройки производительности. Дело в том, что сервер sql в значительной степени использует все 32 гигабайта оперативной памяти на сервере, в то время как postgresl ничего не использует, определенно меньше, чем концерт, хотя на самом деле я не разобрался в деталях.
Как мне заставить postgresql использовать более 20 гигабайт оперативной памяти? Эти серверы были созданы специально для этой базы данных, поэтому, по моему мнению, все оперативные памяти, не используемые базой данных и вспомогательными процессами, теряются.
SET effective_cache_size=18G;
(настройка по умолчанию очень низкая) Кстати: если предположить, что это 64-битный компьютер (без PTE)