одинаковых статичных таблиц - что лучше работать с отдельной таблицей набора полностью преочищая или перезаполняя ее (соответсвенно формируя динамик sql, и.к. заранее таблица нам не известна) или сделать одну большую таблицу с ключом и написать статический код при использовании данных снимка с фильтрацией по ключу?
Казалось бы, вот это: > лучше работать с отдельной таблицей набора полностью преочищая или перезаполняя ее должно быть лучше. А про динамический / статический SQL — какая, в общем-то, разница (не считая того, что написать это несколько более трудоёмко)? Если он на клиенте генерируется — то и вовсе никакой. И даже если на сервере — мало в каких ситуациях планирование отличается, а сама генерация — это "копейки", по идее.
Обычно, когда возникают проблемы с производительностью, как раз поступают наоборот - разбивают одну большую таблицу на партиции. Так что на мой взгляд, решение поместить все данные в одну таблицу не правильное. Возможно, для каких то сценариев работы, у него и будут преимущества. Но в общес случае много маленьких таблиц лучше чем одная большая потому что: - автоваккум может их паралельно обрабатывать - возникает меньше конфликтов блокировок на вставку - truncate гораздо эффективнее чем delete - улучшается локальность доступа Я пока так и не понял из вашего описания, что у вас происходит: CPU загрузка не значительная, дисковая активность - минимальная, некторые запросы тормозят, но при этом их время выполнения остаётся в пределах десятка милисекунд... Можно подозревать локи. В новых версиях посгреса pg_stat_sctivity показывает чего бэкенд - эту информацию полезно было бы изучить. Так же можно помониторить pg_lock.
Обсуждают сегодня