172 похожих чатов

Но в какой то момент запрос сломался для определенного периода. Вместо

hash join используется nested loop.
С чем это может быть связано и как поправить ?

25 ответов

6 просмотров

https://t.me/pgsql/303899

Евгений-Иванов Автор вопроса
Yaroslav Schekin
https://t.me/pgsql/303899

версия 9.6 серьезно нужно прислать DDL всех таблиц ? Можете просто подсказать в какую сторону копать ?

Евгений Иванов
версия 9.6 серьезно нужно прислать DDL всех таблиц...

В идеале — да, нужно. Но для начала можно и без этого — покажите остальное.

Евгений Иванов
версия 9.6 серьезно нужно прислать DDL всех таблиц...

А, ну если хотите просто поболтать обо всяком -- то начните читать нормальный explain. По словам, да. Так картинка, которую вы представили -- даёт очень мало информацыи, и если бы вы умели читать вывод explain, то вы бы это понимали.

Евгений-Иванов Автор вопроса

Вот тут хеша вообще нету, а запрос тот же

Евгений Иванов
И запрос выполняется 30 сек

В принцыпе довольно ожыдаемо. А когда первым joinится EnergyConsumers -- меньшэ? (Банальный вопрос -- всё на одном диске или есть какие-то tablespaces?)

Евгений Иванов
Вот тут хеша вообще нету, а запрос тот же

Нежелание делать hashjoin теоретически может быть связано с недостатком workmem

Евгений-Иванов Автор вопроса
Ilya Anfimov
В принцыпе довольно ожыдаемо. А когда первым joinи...

Все на одном диске. На первый вопрос отвечу суть позже.

alex che
Нежелание делать hashjoin теоретически может быть ...

А, да, только сейчас понял почему там второй можэт быть настолько лучшэ. Трудно в -селе-без-нагана- запросе без explainа.

Евгений-Иванов Автор вопроса
Евгений-Иванов Автор вопроса
Ilya Anfimov
В принцыпе довольно ожыдаемо. А когда первым joinи...

Нет, время выполнения запроса увеличилось вдвое

Евгений Иванов
Нет, время выполнения запроса увеличилось вдвое

Ну, вдвое -- это не так чтобы большое отличие.

Евгений-Иванов Автор вопроса

Возвращаясь к моему вопросу. Вот запросы и explain + DDL Версия постгреса 9.6 Почему в одном случае делается через нестед луп, а во втором через хеш ? Кол-во записей +- одинаковое во всех периодах

Евгений Иванов
Возвращаясь к моему вопросу. Вот запросы и explain...

Ошыбка в оцэнке выборки из SiteInfos при BillingPeriod=73. Да и из SiteConnections тожэ. По идее, analyze siteinfos + analyze siteconnections должно это поправить. Кстати, запустите, и попробуйте посмотреть после. Возможно, что вмешывается какая-то ручная настройка статистики и аналитики. Но не очень представляю, чтобы такое было через просто set statistics.

Евгений Иванов
Возвращаясь к моему вопросу. Вот запросы и explain...

И да, смотреть -- в кардинальное отличие rows= и actual rows= в неправильном запросе.

Евгений Иванов
Возвращаясь к моему вопросу. Вот запросы и explain...

О, наконец-то тексты планов. ;) Потому что [огромная] ошибка в оценках в первом плане, сходу видно же: -> Index Scan using "IX_SiteInfos_BillingPeriodId" on "SiteInfos" site (cost=0.42..2.72 rows=1 width=169) (actual time=0.009..2.378 rows=7703 loops=1)

Евгений Иванов
Возвращаясь к моему вопросу. Вот запросы и explain...

И да, если простые действия не помогут -- то читайте здесь https://www.postgresql.org/docs/9.6/row-estimation-examples.html , смотрите глазами на pg_statistic.

Евгений-Иванов Автор вопроса
Ilya Anfimov
Ошыбка в оцэнке выборки из SiteInfos при BillingPe...

Большое спасибо !!!! Ситуацию решило analyse "SiteInfos"; analyse "SiteConnections";

Евгений Иванов
спасибо

Тут меня ещё удивляет, что в 9.6 -- там жэ и настроек статистики практически не было. Как-то странно, что что-то сломано.

Евгений Иванов
Большое спасибо !!!! Ситуацию решило analyse "Si...

А. То есть, общий analyze как-то не так запускался. Да, бывает. Но вообще -- смотрите, просто analyze без параметров от суперюзера должэн это всё проделывать. Посмотрите, почему он у вас не запускается периодически.

Евгений-Иванов Автор вопроса
Евгений Иванов
Не подскажите куда смотреть?

Это задача autovacuum. Проверьте, включён ли он, его настройки, когда он последний раз обрабатывал таблицы (см. pg_stat_user_tables, например).

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Ребят, кто сталкивался с тем, что Electron.js не разворачивает билд React.js-приложения? Голый body в чёрном цвете, как и должно быть, но остального - нет. Билд работает исп...
..
6
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Anyone knows how to build this widget in Flutter? I have all the assets for round stations and the road, but how can I make the my widget animate between these stations? And h...
Mohammad Zamani
9
короче я не выдержал постоянно определять структуры, чтобы возвращать массивы разных типов. Как обычно еще это делают?
Павλо 🇺🇦
7
Если у очереди установлено x-message-ttl, при получении сообщения из этой очереди, можно узнать остаток времени жизни сообщения?
Сергей
8
Подскажите как мне лучше держать websocket сединение и переодически передавать в него данные? Сначала я сделал так: for _ in 1...1000 { try? await ws.send("test") try...
Mihail Verenich
2
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
Карта сайта