|
Materialized view
|
|||
---|---|---|---|
#18+
Доброго времени суток! Наш проект интенсивно использует join'ы по многим таблицам за раз. Поскольку производительность оставляет желать лучшего, было принято решение попробовать materialized view - согласно документации, они как раз нужны в том числе для "кэширования результатов join'ов по многим таблицам". После создания mv оказалось, что чтение типа 'select * from mv_results' по времени занимает ровно столько же, сколько и оригинал 'select ... from...join...join...'. Я что-то понял не так? Что-то делаю не так? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2022, 15:58 |
|
Materialized view
|
|||
---|---|---|---|
#18+
Судя по всему, Вы сделали обычный view или слишком много строк в результате. Так же стоит учесть, что мат.представление нужно обновлять и ещё можно/нужно построить индекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2022, 19:32 |
|
Materialized view
|
|||
---|---|---|---|
#18+
Dmitry Kurkin Доброго времени суток! Наш проект интенсивно использует join'ы по многим таблицам за раз. Поскольку производительность оставляет желать лучшего, было принято решение попробовать materialized view - согласно документации, они как раз нужны в том числе для "кэширования результатов join'ов по многим таблицам". После создания mv оказалось, что чтение типа 'select * from mv_results' по времени занимает ровно столько же, сколько и оригинал 'select ... from...join...join...'. Я что-то понял не так? Что-то делаю не так? Спасибо. Вы к таким вопросам всегда результаты explain analyze прикладывайте. Без этого это дискуссия про сферического коня в вакууме будет. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2022, 22:06 |
|
Materialized view
|
|||
---|---|---|---|
#18+
Maxim Boguk, Версия: PostgreSQL 13.3 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424, 64-bit Ссылка на план: https://explain.depesz.com/s/ydKZ#html ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2022, 14:50 |
|
Materialized view
|
|||
---|---|---|---|
#18+
Guzya, Нет, там всего ~30k строк. Вот statement создания: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2022, 14:52 |
|
Materialized view
|
|||
---|---|---|---|
#18+
Dmitry Kurkin Maxim Boguk, Версия: PostgreSQL 13.3 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424, 64-bit Ссылка на план: https://explain.depesz.com/s/ydKZ#html Т.е. скорость 10ms вас не устраивает на 30000 строк (не идеальная скорость но в общем вполне разумная)? А какая скорость была у JOIN решения (тоже с explain analyze)? -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2022, 18:30 |
|
Materialized view
|
|||
---|---|---|---|
#18+
Покажите explain (analyze,buffers) select * from mv_active_proposals; и select pg_size_pretty(pg_relation_size('mv_active_proposals')); ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2022, 19:07 |
|
Materialized view
|
|||
---|---|---|---|
#18+
Maxim Boguk, Кажется это сеть (точнее ВПН) вносит существенные задержки ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2022, 23:13 |
|
Materialized view
|
|||
---|---|---|---|
#18+
Dmitry Kurkin Maxim Boguk, Кажется это сеть (точнее ВПН) вносит существенные задержки У вас ожидаемый размер ответа мегабайт 20-30... естественно что по сети это не мгновенно пролезает и скорость работы запросов на базе тут вообще не причём. PS: я что то не могу себе бизнес задачу представить где надо на клиента 20MB ответ тащить с базы и при этом важна latency. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2022, 01:08 |
|
Materialized view
|
|||
---|---|---|---|
#18+
Maxim Boguk, Необходимо ~30k сотрудников на фронте показывать. Paging юзать нельзя так как вся фильтрация происходит тоже на фронте. PS: ответ от БД летит иногда 10 секунд - для 30Mb кажется многовато ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2022, 01:40 |
|
Materialized view
|
|||
---|---|---|---|
#18+
А почему 20-30мб если размер мат.представлеия 8мб и считывается около 1000 блоков. Сам запрос выполняется за 8мс, вопросов со стороны бд вроде быть не должно. Хотя, может какие не удачные моменты, поставьте log_min_duration... Например в 10мс и потом смотрите в логе, имело ли место долгое выполнение запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2022, 11:55 |
|
Materialized view
|
|||
---|---|---|---|
#18+
Dmitry Kurkin Необходимо ~30k сотрудников на фронте показывать. Paging юзать нельзя так как вся фильтрация происходит тоже на фронте. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2022, 12:40 |
|
Materialized view
|
|||
---|---|---|---|
#18+
Guzya А почему 20-30мб если размер мат.представлеия 8мб и считывается около 1000 блоков. Сам запрос выполняется за 8мс, вопросов со стороны бд вроде быть не должно. Хотя, может какие не удачные моменты, поставьте log_min_duration... Например в 10мс и потом смотрите в логе, имело ли место долгое выполнение запроса. 1)потому что pg_relation_size - не учитывает toast поля это раз (а в таких запросах их немало может быть) и надо select pg_size_pretty(pg_table_size('mv_active_proposals')); смотреть и даже это некорректно 2)потому что то как оно на диске лежит - оно намного компактнее чем по сети передаётся в ответ на запросы более менее реалистичный размер подсчитать можно сделав psql -t -A -d datname -c 'select * from mv_active_proposals' > /tmp/res.out и посмотрев на размер ответа. обычно раза в 2-3 больше чем на диске если если длинные текстовые поля в таблице. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2022, 15:04 |
|
Materialized view
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Вот эта либа на фронте юзается: https://www.ag-grid.com/. Она легко тянет этот объем данных. Основная задача, которую она решает - мгновенная фильтрация/сортировка данных без обращения к backend'у. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2022, 00:53 |
|
Materialized view
|
|||
---|---|---|---|
#18+
Maxim Boguk, БД уже вне зоны досягаемости (только админов просить если). Судя по всему, основное время действительно тратится на передачу данных по сети ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2022, 00:56 |
|
Materialized view
|
|||
---|---|---|---|
#18+
Dmitry Kurkin Maxim Boguk, БД уже вне зоны досягаемости (только админов просить если). Судя по всему, основное время действительно тратится на передачу данных по сети могу только посоветовать не тащить все поля с матview а отобрать тот минимальный список что нужен для работы и выбирать только его (тогда и траффика меньше будет). -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2022, 01:02 |
|
|
start [/forum/topic.php?fid=53&msg=40124511&tid=1993720]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 141ms |
0 / 0 |