У мене є два однакові сервери (з точки зору апаратури), вони обидва стандартні установки Windows Server 2008 r2, з встановленим мінімальним програмним забезпеченням (в основному мій код та потрібні речі, такі як jvm тощо).
На одному сервері я запускаю сервер sql 2005, на другому сервері postgresql 9.1. Різниця в продуктивності б / п цих двох серверів приголомшлива, на postgresql це так погано, що я шкодую про свою первинну промову "давайте використовувати postgresql замість того, щоб платити за ліцензію сервера sql" моєму начальнику. Ми говоримо про різниці 30 секунд проти 15 хвилин для однієї команди, і це не лише ця одна команда, це будь-який запит чи команда, яку я кидаю на неї. Вони обидва мають однакові дані (записи були вставлені в різному порядку), і обидві бази даних мають абсолютно однакову структуру / індекси тощо.
Але я сподіваюся, що це лише питання настройки продуктивності. Справа в тому, що сервер sql в значній мірі використовує всі 32 гіги оперативної пам’яті на сервері, тоді як postgresl не використовує нічого, безумовно, менше, ніж концерт, хоча я насправді не зрозумів це до дрібниць.
Як змусити postgresql використовувати 20+ концертних балів? Ці сервери були побудовані спеціально для цієї бази даних, тому будь-яка оперативна пам’ять, яка не використовується базою даних та підтримуючими процесами, на мою думку, даремно.
SET effective_cache_size=18G;
(налаштування за замовчуванням є надзвичайно низьким) BTW: якщо припустити, що це 64-бітна машина (без PTE)