Yaroslav Schekin
> Фактически это будет как просто сходу всю базу прочитать чтобы она влезла в кэш.
Что в типичном тестировании и так произойдёт, только база "влезет" в shared buffers (что существенно лучше).
> Ну и дополнительно при записи долгого fsync от диска ждать не нужно в принципе.
Тут уже обсуждается fsync=off (ждать ничего не надо, этот аспект tmpfs бесполезен).
Т.е. Вы посчитайте / сравните варианты
1. Отдать под tmpfs столько RAM, чтобы влезла вся база.
2. Просто выкинуть часть той RAM, что была бы использована под tmpfs, и отдать всё, что можно, под shared buffers.
на каком-то конкретном примере — станет понятнее, почему вариант 2 почти наверняка лучше. ;)
Да тут вопрос в том, что если много писать, то быстрее сразу в оперативку записать нежели на диск (что несомненно окажется и в shared_buffers заодно). Минус долгая запись на медленный диск, хоть скорее всего с tmpfs будет немного медленнее выгребать данные нежели из shared_buffers.
fsync=off или fsync=on в контексте tmpfs безразлично - у нее нет backing device. Оно мгновенно отвечает "Готово". Ну syscall не делаем разве что лишний каждый раз.
Так что тут зависит от соотношения времени на заполнение тестовыми данными и на прогон тестов. Если тесты прям сильно дольше делаются - правда ваша. Если сравнимо по времени или дольше заполняется - tmpfs выиграет практически гарантированно.