Оптимизируйте PostgreSQL для быстрого тестирования

Я переключаюсь на PostgreSQL из SQLite для типичного приложения Rails.

Проблема в том, что работа спецификаций стала медленной с PG.
На SQLite это заняло ~ 34 секунды, на PG это ~ 76 секунд, чтоболее чем в 2 раза медленнее.

Итак, теперь я хочу применить некоторые методы кдовести производительность спецификаций до уровня SQLite без изменений кода (в идеале просто путем установки параметров подключения, что, вероятно, невозможно).

Несколько очевидных вещей из головы:

RAM Disk (неплохо было бы увидеть хорошую настройку RSpec на OSX)Незаполненные таблицы (можно ли применить их ко всей базе данных, чтобы мне не пришлось менять все сценарии?)

Как вы, наверное, поняли, меня не волнует надежность и все остальное (здесь БД - просто ненужная вещь).
Мне нужно получить максимум от PG и сделать этотак быстро, как это возможно.

Лучший ответ в идеале описатьухищрения для этого, настройки и недостатков этих трюков.

ОБНОВИТЬ: fsync = off + full_page_writes = off только время уменьшилось до ~ 65 секунд (~ -16 секунд). Хорошее начало, но далеко от цели 34.

ОБНОВЛЕНИЕ 2: I пытался использовать RAM диск но прирост производительности был в пределах погрешности. Так что, похоже, оно того не стоит.

ОБНОВЛЕНИЕ 3: * Я нашел самое узкое место, и теперь мои спецификации работают так же быстро, как и спецификации SQLite.

Проблема заключалась в очистке базы данных, которая сделаласокращение, Очевидно SQLite слишком быстр там.

Чтобы «исправить» это я открываюсделка перед каждым тестом и откатывай его в конце.

Некоторые цифры для ~ 700 тестов.

Усечение: SQLite - 34 с, PG - 76 с.Транзакция: SQLite - 17 с, PG - 18 с.

Увеличение скорости в 2 раза для SQLite. Увеличение скорости в 4 раза для PG.

Ответы на вопрос(2)

Ваш ответ на вопрос