SELECT ccu.constraint_name, ccu.table_name, ccu.column_name, tc.constraint_type, tc.table_schema AS owner FROM information_schema.table_constraints tc JOIN information_schema.key_column_usage kcu ON tc.constraint_name::name = kcu.constraint_name::name JOIN information_schema.constraint_column_usage ccu ON ccu.constraint_name::name = tc.constraint_name::name;
да, я думаю над этим, но тут база тестовая, 8 гигов, можно попробовать дампом на 11.8 переехать, народ пишет, что проблема появляется при переезде в том числе с 11 версии, то есть в 11 этой проблемы нет
Оно не на соединение выделяется, а на каждую сортировку/временную таблицу/хеширование в отдельном query. Так что увеличение количества коннектов не означает линейного увеличения занимаемой под work_mem памяти.
можно ли это понимать, что work_mem безопасно ставить большим без оглядки на max_connections?
можно ли это понимать, что work_mem безопасно ставить большим без оглядки на max_connections?
Это значит что потребление зависит не от числа коннектов, а от того, что в query. Если у вас одновременно 1000 коннектов запустит запросы с парой сортировок в каждой, то можно поиметь до (1000 * work_mem * 2) потребления в пике. А может у вас запросы work_mem не требуют вовсе и будет 0 память забираться. Плюс оно выделяется на время запроса, а не коннекта и потом отдаётся. Так что 1000 соединений могут попросту не одновременно забирать память. Короче сложно там всё.
Добрый день. Вопрос такой. Select * без фильтра из таблички, в которой всего 10 строк и размер 20 МБ, занимает 1,5 минуты. План выполнения - seq scan. В таблице в основном поля типа varhar и есть типа text. Понятно, что select * не грамотно писать. Но все же что можете посоветовать?