|   |   | 
| 
 | Упоротое левое соединение | ☑ | ||
|---|---|---|---|---|
| 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 | 
        Почему не внутреннее?
 Зачем левое? | |||
| 13
    
        alf2006x 26.03.25✎ 14:46 | 
        Если вдруг никому не интересно - я переписал тот самый запрос и всё полетело ))
 Всем спасибо. Особенно PR. Просто странно - сервак прилёг прямо как говориться "ни с того ни с сего". Вот и труханул я маленько... | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |