Size: a a a

pgsql – PostgreSQL

2020 May 22

YS

Yaroslav Schekin in pgsql – PostgreSQL
Warstone
На unlogged вроде транзакционная целостность не распространяется.
Так они только не durable, и всё.
источник

W

Warstone in pgsql – PostgreSQL
Yaroslav Schekin
https://www.postgresql.org/docs/current/non-durability.html
Кстати, по идее, synchronous_commit по сравнению с fsync — примерно то же самое по производительности, зато кластер не "накроется", если что.
Доку почитаю, спасибо. Но я как-раз "если что" сам вытираю кластер через rm -rf
источник

s

sexst in pgsql – PostgreSQL
Warstone
Ув. тов. мозг, какие есть варианты чтобы ускорить работу Пг, кроме отключения fsync? Сохранность данных не важна (я опять про тесты), время жизни данных - пока с ними работают. Потом кластер будет удален.
В оперативку не влезает?)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Warstone
Доку почитаю, спасибо. Но я как-раз "если что" сам вытираю кластер через rm -rf
А, если так — то, наверное, всё равно...
источник

W

Warstone in pgsql – PostgreSQL
sexst
В оперативку не влезает?)
Не хочется каждый раз tmpfs от рута пробрасывать.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Warstone
Не хочется каждый раз tmpfs от рута пробрасывать.
Вот это уже полная чушь, IMHO — лучше бы Вы эту RAM просто выбросили (!), чем "баловаться" с tmpfs.
источник

W

Warstone in pgsql – PostgreSQL
Yaroslav Schekin
Вот это уже полная чушь, IMHO — лучше бы Вы эту RAM просто выбросили (!), чем "баловаться" с tmpfs.
Ну а как еще засунуть Пг в память? Подскажите если есть более разумные варианты
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
sexst
Ну удалить то даст физически. Либо удалит и в ссылающейся таблице при cascade, либо null воткнёт.
Можно ли с организационной точки зрения - на мой взгляд вопрос за пределами компетенции чата, оттого вряд ли задан именно в этом смысле.

Возможно, конечно, есть целая цепочка из таблиц с FK, в которой очередной ключ restrict кинет.
А, в этом смысле... понятно. Так по умолчанию (NO ACTION) — тоже не даёт удалить.
источник

V

Valery in pgsql – PostgreSQL
А фикстуры для тестов большие?
источник

W

Warstone in pgsql – PostgreSQL
Valery
А фикстуры для тестов большие?
Датасеты? Обычно нет.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Warstone
Ну а как еще засунуть Пг в память? Подскажите если есть более разумные варианты
Он этим занимается сам (как и любая нормальная СУБД). Дайте ему shared_buffers и work_mem побольше, да и всё.
источник

V

Valery in pgsql – PostgreSQL
Warstone
Датасеты? Обычно нет.
Цикл создать бд ,накатить схему накатить датасет, прогнать тесты, удалить бд сколько времени занимает?
источник

s

sexst in pgsql – PostgreSQL
Yaroslav Schekin
Он этим занимается сам (как и любая нормальная СУБД). Дайте ему shared_buffers и work_mem побольше, да и всё.
Так tmpfs это и есть механизм на основе системного page кэша в оперативке, просто без backing device под ним. Оно даже в кеш второй раз не кладётся. Фактически это будет как просто сходу всю базу прочитать чтобы она влезла в кэш. Ну и дополнительно при записи долгого fsync от диска ждать не нужно в принципе.
источник

W

Warstone in pgsql – PostgreSQL
Valery
Цикл создать бд ,накатить схему накатить датасет, прогнать тесты, удалить бд сколько времени занимает?
мм... Сейчас точно не скажу, так как не на чем померяться, я только на этапе написания тестового окружения.
источник

W

Warstone in pgsql – PostgreSQL
sexst
Так tmpfs это и есть механизм на основе системного page кэша в оперативке, просто без backing device под ним. Оно даже в кеш второй раз не кладётся. Фактически это будет как просто сходу всю базу прочитать чтобы она влезла в кэш. Ну и дополнительно при записи долгого fsync от диска ждать не нужно в принципе.
Насчет fsync'а у меня уже стоит fsync=off ))
источник

V

Valery in pgsql – PostgreSQL
И ещё вопрос а тесты могут за собой убирать? Что то типа teardown?
источник

V

Valery in pgsql – PostgreSQL
Может в эту сторону посмотреть?
источник

s

sexst in pgsql – PostgreSQL
Вообще если бо́льшую часть времени занимает именно накатывание данных, то в постгресе накатывать можно сильно по разному и с итоговой разницей в скорости буквально на порядки.
источник

V

Valery in pgsql – PostgreSQL
Ещё можно попробовать поднять БД в вируалке, накатить схему и полный набор тестовых данных и сделать снапшот. Потом просто откатываться к снапшоту
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
sexst
Так tmpfs это и есть механизм на основе системного page кэша в оперативке, просто без backing device под ним. Оно даже в кеш второй раз не кладётся. Фактически это будет как просто сходу всю базу прочитать чтобы она влезла в кэш. Ну и дополнительно при записи долгого fsync от диска ждать не нужно в принципе.
> Фактически это будет как просто сходу всю базу прочитать чтобы она влезла в кэш.

Что в типичном тестировании и так произойдёт, только база "влезет" в shared buffers (что существенно лучше).

> Ну и дополнительно при записи долгого fsync от диска ждать не нужно в принципе.

Тут уже обсуждается fsync=off (ждать ничего не надо, этот аспект tmpfs бесполезен).
Т.е. Вы посчитайте / сравните варианты
1. Отдать под tmpfs столько RAM, чтобы влезла вся база.
2. Просто выкинуть часть той RAM, что была бы использована под tmpfs, и отдать всё, что можно, под shared buffers.

на каком-то конкретном примере — станет понятнее, почему вариант 2 почти наверняка лучше. ;)
источник