Имя: Пароль:
1C
1С v8
Проблема с индексами в Postgresql
0 Deal with it
 
30.11.20
13:48
Ситуация следующая: иногда проводится переоценка товаров(около 10 тыс позиций). Существует обработка выгрузки остатков товаров на сайт, в которой запросом вытягиваются цены из регистра сведений.
В последнее время после очередной переоценки выгрузка остатков стала жестко тормозить именно на моменте получения цен из регистра.
В прошлый раз провели реиндексацию на стороне СУБД и в 1с. НЕ помогло.
Помогло лишь дроп кластера и загрузка из бекапа. Но данный вариант не подходит, т.к. ресурс ССД ограничен.
Подскажите как определить в чем проблема? Я даже знаю наименование таблицы в СУБД, но не владею языком запросов SQl.
Помогите составить такой запрос, чтобы понять проблема на стороне СУБД или же 1с, зная имя таблицы. И как решить проблему?
1 Asmody
 
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
2 Voronve
 
30.11.20
13:59
(0) (1) относится и к подъему базы из бекапа для PG
3 Deal with it
 
30.11.20
14:02
(1) не очень понял, нужно выполнить вакуум или аналайз? это же 2 разные комманды.
Если да, то указывать необходимо нужную таблицу в качестве параметра? или всю базу данных?
4 H A D G E H O G s
 
30.11.20
14:16
"И как решить проблему?"

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

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