Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308

Долгое выполнение EXPLAIN

10.04.2023, 19:55. Показов 849. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос скорее теоретический. Имеется БД на pg 12.3 внушительного размера (десятки ТБ). Выполняю EXPLAIN ... (без ANALYZE) и ожидаю увидеть план запроса, но получаю я его минут через 5. Из-за чего такое может произойти? Я даже не знаю в какую сторону копать, т.к. EXPLAIN на EXPLAIN не работает. Иногда помогает разбитие одного сложного запроса на 2 более простых, тогда EXPLAIN выполняется мгновенно.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.04.2023, 19:55
Ответы с готовыми решениями:

Долгое выполнение запроса
Суть такая update и select делает перебор всей базы, хотя выборка по индексам стоит лог выдает это # Query_time: 0.220863 Lock_time:...

Долгое выполнение REPAIR_REBUILD
USE SVN GO ALTER DATABASE SVN SET SINGLE_USER GO DBCC CHECKDB('SVN',REPAIR_REBUILD) GO ALTER DATABASE SVN SET MULTI_USER ...

ОЧЕНЬ долгое выполнение запроса
Очень долгое выполнение запроса, в каждой таблице (кроме regions), примерно 60 000 строк. Такой запрос, который выбирает все товары у...

4
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,020
10.04.2023, 22:32
Сколько таблиц под FROM/JOIN в искомом запросе??
Меняли ли значения параметров from_collapse_limit и join_collapse_limit??
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
11.04.2023, 11:16  [ТС]
Цитата Сообщение от grgdvo Посмотреть сообщение
Сколько таблиц под FROM/JOIN в искомом запросе??
Две. Вторая подключается через JOIN или как вложенный запрос. Эффект примерно одинаковый.
SQL
1
EXPLAIN SELECT image, mode, roi FROM replicator_mapping INNER JOIN t_image USING (tid) WHERE db_id = '57' AND original_tid = 16164617
Если разбить на два отдельных запроса, то они выполняются мгновенно.
Цитата Сообщение от grgdvo Посмотреть сообщение
Меняли ли значения параметров from_collapse_limit и join_collapse_limit??
Нет. Я вообще не люблю менять дефолтные параметры, разве что размеры буферов под железо.

У меня есть подозрение, что виной всему поломанные индексы. Это косвенно стало понятно, что выполнение MIN по индексированной колонке также повисает надолго (при этом MAX почти мгновенно и есть значения начиная с которого в условиях сравнения зависает explain). Попробую переиндексировать. Но все это только для одной таблице. В другой вроде бы ничего такого не наблюдается с индексами, но explain тоже повисает. Но переиндексирую все.

Добавлено через 34 минуты
Посмотрел лог, спам ошибки ERROR: column c.relhasoids does not exist at character 245
Эта ошибка не связана с проблемой. libpq на каком-то клиенте старая.
0
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,020
11.04.2023, 22:01
Напишите, что получилось после переиндексирования.
Вероятно стоит еще статистику по таблицам обновить: ANALYZE или VACUUM ANALYZE.
Надо заметить, что EXPLAIN не выполняет запрос, только строит наилучший план, выбирая из кандидатов.

Редко, но происходят такие вопросы к Постгрес, и каждый раз не находится какой-то стабильной причины, почему это происходит и что точно помогает. Причем как на сложных так и на простых запросах. Очень трудноуловимая и воспроизводимая ошибка. У кого-то происходит, берешь копию данных себе на исследование - не проявляется.
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
12.04.2023, 19:53  [ТС]
Причина действительно оказалась в поломанных индексах. Видимо explain их использует для выбора плана запроса.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.04.2023, 19:53
Помогаю со студенческими работами здесь

Долгое выполнение вставки в цикле
Все привет, подскажите что не так сделал, уж слишком долго он вставляет данные в таблицу DECLARE @CountGroup int = 500 DECLARE...

Долгое выполнение запроса адаптером FirebirdClient
несложный запрос с джойнами по 5 таблицам ... в Экперте выполняется за доли секунды, а через приложение: using (FbConnection conn =...

Explain, запросы
Добрый вечер, нужна помощь с запросом на mysql. Показать перечень категорий с таблицы dl_category, в описании которых встречается слово(-а)...

Как использовать EXPLAIN ?
Прочитал несколько статей по поводу EXPLAIN, но не получается практически использовать эту примочку. Делаю так: $query = "EXPLAIN...

Explain для новичков
Друзья, начал разбираться с explain. Прошу помочь в этой теме разобрать совместно один пример.В дальнейшем,данная тема будет полезна и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru