|
Упоротое левое соединение | ☑ | ||
---|---|---|---|---|
0
alf2006x
09.03.25
✎
10:02
|
Приветствую вас, многоуважаемые форумчане!
"Одним прекрасным весенним ясным пятничным утром ..." (ладно, потом допишу этот триллер, который произошел со мной в эту пятницу) К делу. Сервер стал наглухо зависать при выполнении одного запроса, который прекрасно работал последние 3-5 лет (уже даже не помню сколько точно) При зависании процессор грузится на 100%, из них скуль отжирает около 80-90%. Сервак зависает. Один вариант спасения - рубануть его резетом. Запрос, который в этот момент выполняется изначально большой, но я его упростил до нескольких строк. Вот он: [ДатаНачала = 06.03.2025] ВЫБРАТЬ ХарактеристикиНоменклатуры.Ссылка КАК ХарактеристикаНоменклатуры, ХарактеристикиНоменклатуры.ДатаПеч КАК ДатаПеч, ЗаказПокупателяУслуги.НомерСтроки КАК НомерСтроки ИЗ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.Услуги КАК ЗаказПокупателяУслуги ПО ХарактеристикиНоменклатуры.Ссылка = ЗаказПокупателяУслуги.ХарактеристикаНоменклатуры ГДЕ ХарактеристикиНоменклатуры.ДатаПеч >= &ДатаНачала И НЕ ХарактеристикиНоменклатуры.ПометкаУдаления РЕЗУЛЬТАТ: Строк в запросе: 369; Выполнение запроса: 31 сек 31 (!) секунда ?!... ЧЁ?!?!?!?! До этой пятницы запрос работал с параметром [ДатаНачала = ТекДата минус три месяца] - и всё было великолепно. Первым делом я подумал что одна из двух участвующих в запросе таблиц прокисла (видел я такое как-то). Но, запросы по отдельности в каждую из них выполняются без проблем: ВЫБРАТЬ ХарактеристикиНоменклатуры.Ссылка КАК Ссылка, ХарактеристикиНоменклатуры.ДатаПеч КАК ДатаПеч ИЗ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры Строк в запросе: 887 922; Выполнение запроса: 22 сек ВЫБРАТЬ ЗаказПокупателяУслуги.Ссылка КАК Ссылка, ЗаказПокупателяУслуги.НомерСтроки КАК НомерСтроки ИЗ Документ.ЗаказПокупателя.Услуги КАК ЗаказПокупателяУслуги Строк в запросе: 1 734 154; Выполнение запроса: 31 сек Все варианты с кэшем (надеюсь что все) - проработаны. Базу через бэкап развернул на другом сервере - ровно та же самая история. Вот,.. теперь сижу и горюю. Не знаю в какую сторону думать. На вас одна надежда. Я бы конечно развернул бы техжурнал (если бы умел) - но я не умею. Точнее не знаю какие в данном случае тычки надо натыкать чтобы хоть что-то увидеть. И главное - получиться ли там что-то увидеть? Подозреваю что тут с осциллографом надо лезть в сам МС-СКЛ. Но самый главный вопрос, который мучает - с какого такого, вдруг, после дождичка в четверг, началась такая ботва?! Рискну предположить что я маленько туповат в написании запросов, но тут-то какого лешего творится ?? Всем заранее спасибо. |
|||
1
Chameleon1980
09.03.25
✎
10:04
|
а если помочь БД?
1. вынести х-ки в вт1 2. вынести строки в вт2 с условием по вт1 3. пакетом 3 соединить |
|||
2
alf2006x
09.03.25
✎
10:07
|
(1) Попробую, конечно, но при таком раскладе на всю оставшуюся жизнь останется фобия использовать левое соединение прямо на таблицы БД )
|
|||
3
VS-1976
09.03.25
✎
10:23
|
Посмотри в какие регистры пишется услуга и соедини с регистром, при условии что характеристика есть в индексе. Просто идет полный перебор 800к*1.7м таблицы услуг, а она уже большая. Либо в индекс запихай характеристику ( поле таблицы ).
PS: Вт не поможет только дольше будет. |
|||
4
alf2006x
09.03.25
✎
10:30
|
(3) Не совсем понял что надо сделать.
И второй вопрос: в почему вдруг умерло внезапно (если предположить что это из-за размеров таблиц)? Я думал оно будет каждый день всё-медленнее-и-ме-ее-дле-нне-ееееее |
|||
5
Kongo2019
09.03.25
✎
10:33
|
(0) По классике, сначала выбирают необходимые данные. А потом уже их объединяют. Так, да нарвался на классическое. Когда таблицы не влезли в память и пошли тормоза так темп по ним стало писать на диск.
|
|||
6
PR
09.03.25
✎
10:43
|
(1) А нахрена пункт 2 в ВТ?
|
|||
7
PR
09.03.25
✎
10:46
|
(2) Какая, нахрен, фобия?
Ты сначала все выбираешь, потом в ГДЕ фильтруешь Пиши тогда уж так
|
|||
8
PR
09.03.25
✎
10:47
|
(4) Потому что сначала строился один план запроса, а теперь другой
|
|||
9
arsik
гуру
09.03.25
✎
10:58
|
А если еще и заказы по дате ограничить?
|
|||
10
alf2006x
09.03.25
✎
12:22
|
(7) Согласен (краснеет,.. уходит)
Всем спасибо! |
|||
11
Chameleon1980
09.03.25
✎
15:11
|
(6) чтобы уж точно пз четкий был
|
|||
12
asady
10.03.25
✎
08:46
|
Почему не внутреннее?
Зачем левое? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |