Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Проблема с индексами в Postgresql

Проблема с индексами в Postgresql
Я
   Deal with it
 
30.11.20 - 13:48
Ситуация следующая: иногда проводится переоценка товаров(около 10 тыс позиций). Существует обработка выгрузки остатков товаров на сайт, в которой запросом вытягиваются цены из регистра сведений.
В последнее время после очередной переоценки выгрузка остатков стала жестко тормозить именно на моменте получения цен из регистра.
В прошлый раз провели реиндексацию на стороне СУБД и в 1с. НЕ помогло.
Помогло лишь дроп кластера и загрузка из бекапа. Но данный вариант не подходит, т.к. ресурс ССД ограничен.
Подскажите как определить в чем проблема? Я даже знаю наименование таблицы в СУБД, но не владею языком запросов SQl.
Помогите составить такой запрос, чтобы понять проблема на стороне СУБД или же 1с, зная имя таблицы. И как решить проблему?
   Asmody
 
1 - 30.11.20 - 13:53
"Мы рекомендуем очищать активные производственные базы данных достаточно часто (как минимум, каждую ночь), чтобы избавляться от «мёртвых» строк. После добавления или удаления большого числа строк может быть хорошей идеей выполнить команду VACUUM ANALYZE для каждой затронутой таблицы. При этом результаты всех последних изменений будут отражены в системных каталогах, что позволит планировщику запросов PostgreSQL принимать более эффективные решения при планировании."

https://postgrespro.ru/docs/postgresql/9.6/sql-vacuum
https://postgrespro.ru/docs/postgresql/9.6/sql-analyze
   Voronve
 
2 - 30.11.20 - 13:59
(0) (1) относится и к подъему базы из бекапа для PG
   Deal with it
 
3 - 30.11.20 - 14:02
(1) не очень понял, нужно выполнить вакуум или аналайз? это же 2 разные комманды.
Если да, то указывать необходимо нужную таблицу в качестве параметра? или всю базу данных?
   H A D G E H O G s
 
4 - 30.11.20 - 14:16
"И как решить проблему?"

Использовать MS SQL Server.
   arsik
 
5 - 30.11.20 - 14:18
(4) Ничего нового. В любой ветке, с упоминанием Postgre. Смени пластинку.
   Nikoss
 
6 - 30.11.20 - 14:23
(3) вакуум + анализ, вместе запускать
если база не очень большая можно ставить на всю базу, оно не особо долго обрабатывается
   Фрэнки
 
7 - 30.11.20 - 14:25
А может есть смысл посмотреть на текст запроса? Ну если тормозит именно при выполнении запроса, то может он настолько криво написан, что его тормоза гарантированы...
   Hmster
 
8 - 30.11.20 - 14:48
(4) я на MS SQL похожее получал (таблица стала большой). Запрос переделать пришлось.
Опять же автор вообще не в курсе что СУБД должна обслуживаться, но тут для МС есть хотя бы инструкция на ИТС.
(7)да, без текста не понять что начало тормозить (0)
   Deal with it
 
9 - 30.11.20 - 14:58
(7)(8) проблема крылась в коде, разумеется. Запрос в цикле. Т.е. по каждой позиции номенклатуры вызывался запрос по ценам, вместо вызова всех данных в одном запросе сразу.
Но все же вакуум и аналайз делать лишним не будет.
Плюс надо глянуть сам регистр цен и как проведение установки цен работает.
Всем спасибо за ответы:)
   Asmody
 
10 - 30.11.20 - 18:17
(3) ну дал же ссылки!

"Без параметра команда VACUUM обрабатывает все таблицы в текущей базе данных, которые может очистить текущий пользователь. Если в параметре передаётся имя таблицы, VACUUM обрабатывает только эту таблицу."
...
"VACUUM ANALYZE выполняет очистку (VACUUM), а затем анализ (ANALYZE) всех указанных таблиц. Это удобная комбинация для регулярного обслуживания БД"

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.