|
Запрос ТоварыНаСкладах.Остатки выполняется 2 секунды. Как можно ускорить ? | ☑ | ||
---|---|---|---|---|
0
ИС-2
naïve
05.01.23
✎
09:16
|
В базе очень по медленно выполняются любые запросы к таблицам остатков. Минимум 2 секунды в пустой базе.
Бьюсь над их ускорением запросов. На данный момент итоге не пересчитаны. Индексы еще не проверял Сколько у Вас выполняется такой запрос ? ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.Качество, ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры, ТоварыНаСкладахОстатки.СерияНоменклатуры, ТоварыНаСкладахОстатки.КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки |
|||
1
Обработка
05.01.23
✎
09:21
|
А что за конфа?
Если это Ка2 или ЕРП это супер быстро. А если это розница или бухия то надо смотреть. |
|||
2
Обработка
05.01.23
✎
09:21
|
Хотя в бухии нет такого регистра вроде.
|
|||
3
Мимохожий Однако
05.01.23
✎
09:36
|
Файловая или клиент-серверная? Неплохо бы проиндексировать таблицы
|
|||
4
dmt
05.01.23
✎
09:56
|
(0) >Минимум 2 секунды в пустой базе.
а все остальное летает? так не бывает |
|||
5
ИС-2
naïve
05.01.23
✎
10:19
|
(1) УПП. В таблице остатках примерно 150 т. записей
|
|||
6
ИС-2
naïve
05.01.23
✎
10:21
|
(3) серверная
(4) остальное более-менее оптимизировано. Сейчас главный тормоз - выполнение контролей при проведении документов. Получается замкнутый круг. Запрос к остаткам долго выполняется ->документ проводится долго->большое время на блокировку->медленно выполняется запрос |
|||
7
ИС-2
naïve
05.01.23
✎
10:22
|
(4) под словом пустая база подразумевается, что данные есть, но ни кто не работает
|
|||
8
dmt
05.01.23
✎
10:24
|
(6) запрос к остаткам должен выполняться с отборами в параметрах виртуальной таблицы
|
|||
9
dmt
05.01.23
✎
10:24
|
(7) оригинально
|
|||
10
RomanYS
05.01.23
✎
10:49
|
(8) +много
(0) если есть RLS, то выполняй в привилегированном режиме |
|||
11
rphosts
05.01.23
✎
11:12
|
(7) если для тебя это пустая база то я балдею...
ни дам ни одного конкретного ответа т.к. не понятно на 1 сервере у тебя всё или разные сервера 1С и СУБД. Замер прям на сервере или на клиенте. 150К записей... и тебе все они нужны? Маня что-ли? Про отборы (8) написано по существу. как и про РЛС (см под админом). PS граница расчёта остатков по регистру актуальна? |
|||
12
magicSan
05.01.23
✎
11:27
|
Дак 150 это не много вообще пара десятков перемещений + поступления продажи на пару складов.
"На данный момент итоге не пересчитаны. Индексы еще не проверял" даже не знаю как ругнутся. |
|||
13
hockeyist
05.01.23
✎
11:34
|
(6) Так отключи контроль и все будет летать.
|
|||
14
Chai Nic
05.01.23
✎
11:48
|
(0) Постгрес что ли?
|
|||
15
Chai Nic
05.01.23
✎
11:49
|
Перехватывай текст sql-запроса и пробуй его запустить в режиме анализа плана выполнения. Смотри какая операция выполняется долго. И далее по обстоятельствам..
|
|||
16
ИС-2
naïve
05.01.23
✎
12:11
|
(8) верно. Рабочее запросы выполняются с отборами, но все равно долго.
У меня логика такая - смогу понять причину долго выполнения запроса без условий (чтобы их влияние убрать), то основные запросы смогу оптимизировать (11) Сервер и СУБД разные. Замер выполняю через консоль запросов (12) Если я правильно помню логику работы остатков. То берется остаток на ближайший месяц и к нему динамически добавляется вычисляемый остаток на данный момент. Возможно сильно ошибаюсь. В каком разделе ИТС почитать как на самом деле работают остатки? (14) SQL (15) спасибо, попробую |
|||
17
magicSan
05.01.23
✎
12:17
|
(16) в консоли некорректно замерять, она расшифровку тащит тупым способом.
ТоварыНаСкладахОстатки.Качество, ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры, ТоварыНаСкладахОстатки.СерияНоменклатуры а вот весь этот цирк точно нужен? По идеи всегда берешь оператвиные данные, далее блокируешь записи для работы с ними. Ну нечем тормозить на такой маленькой базе. |
|||
18
Галахад
гуру
05.01.23
✎
12:17
|
Вариант, что сервер такой же старый как и конфигурация реален?
|
|||
19
Кир Пластелинин
05.01.23
✎
12:20
|
(16) в каком месте время окончания выполнения запроса в консоли фиксируется? а то мб после выгрузки в таблицу на форме. как минимум подтягиваются представления для ссылок. ну и прочее
|
|||
20
Dmitry1c
05.01.23
✎
12:58
|
(0) итоги посчитай
|
|||
21
Повелитель
05.01.23
✎
13:33
|
(16) В консоле запросов время считать можно по разному.
1. Время выполнения самого запроса. 2. Время вывода в ТЗ. Часто на больших объемах данных, время вывода в ТЗ может быть больше, чем время выполнения самого запроса. Какое время считаете? |
|||
22
dmt
05.01.23
✎
14:40
|
(16) ну может к 100му посту соберешься и выложишь запрос, который надо оптимизировать
|
|||
23
Повелитель
05.01.23
✎
14:43
|
(22) Так то он в (0) его выложил )))
|
|||
24
rphosts
05.01.23
✎
15:30
|
(16) 3.ближайшего рассчитанного снизу... если совсем без указания даты - должно браться из актуальных остатков, как-бы должно быть это быстро, но если не наплодили разделителями всякими лишнего.
И да, РН оборотов или остатков, а? |
|||
25
rphosts
05.01.23
✎
15:31
|
(23) а что бывают запросы к виртуальной таблице без указания скобок (даже еcли в них пусто)?
|
|||
26
ИС-2
naïve
05.01.23
✎
15:33
|
(17) да, почти все измерения используются в работе. Порезать их не получится
(18) да, это тестовый старый сервер. Но я на нем один (21) чистое время выполнения запроса (24) регистр остатков. Все остатки получаются долго. Подниму еще 3-х летнюю тему Я перепровожу РТиУ и расходный ордер. РТиУ.Записать(РежимЗаписи.Проведение); РО.Записать(РежимЗаписи.Проведение); Если при перепроведении РО ошибка, то РТиУ должна откатиться. Это можно сделать как-то без начатьТранзакцию Что блокируется при вызове НачатьТранзакцию? Что блокируется при вызове НачатьТранзакцию? |
|||
27
Галахад
гуру
05.01.23
✎
15:45
|
(26) Может мало памяти? Данные из кэша вываливаются?
Можно из без начать транзакцию, но тогда самостоятельно писать механизм и следить за его валидностью. |
|||
28
rphosts
05.01.23
✎
15:54
|
(26) что с памятью, очередью на чтение диска, загруженностью процессора - смотреть перфмоном.
Итоги рассчитаны на какой период? Запрос на какую дату формируешь? Может всё таки реальный текст запроса дашь посмотреть? |
|||
29
RomanYS
05.01.23
✎
15:59
|
(25) Да, всегда работало
|
|||
30
rphosts
05.01.23
✎
17:06
|
(29) забавно.... проверил, работает
|
|||
31
Ivan_495
05.01.23
✎
17:28
|
запрос в sql - профайлер покажи
|
|||
32
palsergeich
05.01.23
✎
20:57
|
(30) Это текущие итоги будут.
(0) Возможно в таблице текущих итогов полно нулевых записей, я бы просто пересчитал текущие итоги. 150К итоговых записей это вообще ниочем, должно очень быстро получать |
|||
33
ИС-2
naïve
06.01.23
✎
16:12
|
Подскажите, при такой конструкции будет блокировка у РегистрСведений.ИдентификаторыОбъектов или НачатьТранзакцию повлияет на запись всех документов, справочников и т.д ?
НачатьТранзакцию(); БлокировкаДанных = Новый БлокировкаДанных; ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрСведений.ИдентификаторыОбъектов"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; ЭлементБлокировки.УстановитьЗначение("Идентификатор", Object.ID); БлокировкаДанных.Заблокировать(); |
|||
34
Конструктор1С
06.01.23
✎
17:19
|
(0) состав измерений и отборы покажи
|
|||
35
Конструктор1С
06.01.23
✎
17:20
|
А также на какую дату получаются остатки
|
|||
36
ViSo76
06.01.23
✎
22:10
|
Остатки без даты это выборка из физической таблицы на время выборки влияют блокировки. Если выборка на меньшую дату, то тогда остатки минус движения до даты и так же блокировки могут влиять. Твой запрос это полная выборка таблицы. Выборка зависит от фрагментации таблицы, очереди к диску, объёму свободной памяти в кэше. Если данные передаются через сеть, то и от загруженности сети.
|
|||
37
ViSo76
06.01.23
✎
22:28
|
(16) Так как есть отборы, пересоздай индексы, можешь средствами sql, есть специальная команда по-моему, для одной таблицы, для проверки ( исключит дефрагментацию индексов ), так же собери статистику - из-за неё парсер может выдать неоптимальный запрос.
|
|||
38
Chai Nic
07.01.23
✎
06:23
|
Столько советов, а автор даже статистику запроса на sql-сервере не посмотрел..
|
|||
39
rphosts
08.01.23
✎
07:36
|
(33) какая разница если у тебя в монорежиме абзац
|
|||
40
rphosts
08.01.23
✎
07:37
|
(32) 2.пересчитать итоги предлагал ему, но похоже он не слышит
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |