Yaroslav Schekin
> что если много писать, то быстрее сразу в оперативку записать нежели на диск
Да. Но с unlogged tables + "fsync=off" + "increase max_wal_size and checkpoint_timeout" (всё из приведённой ранее ссылки) у PostgreSQL никакой необходимости спешить с этим нет.
Т.е. сразу после загрузки данных можно начинать тестировать.
> Ну syscall не делаем разве что лишний каждый раз.
Хотя бы... ;) Но, так или иначе, в этой ситуации — это не преимущество tmpfs.
> Если сравнимо по времени или дольше заполняется - tmpfs выиграет практически гарантированно.
Хмм... не понимаю, почему, можете пояснить?
И я же писал про распределение RAM, в первую очередь.
Конечно, если (допустим) тестовых данных 8 Гб, а всего (доступной / ненужной) памяти 128 Гб — тут можно и инициализировать кластер гигабайт на 16 на tmpfs, и сделать shared_buffers = 16 Гб — но обычно так не бывает (что памяти "слишком много"), IMHO. ;)
"Выиграет" имеется в виду за счёт того, что запишет данные существенно быстрее, а выбирать для тестов будет не сильно медленнее даже если shared_buffers не делать таким, чтобы всё влезло. Оверхед больше, но память всё равно чертовски быстрая.
Это всё, конечно, и правда, так будет только в случае, если постгрес таки начнет писать на диск. Если выкрутить его на максимально отложенную запись настолько, что тесты пройдут быстрее - да, так tmpfs тоже быстрее не будет.