#0
by kabanoff
База 90Гб, MS SQL Server 2005, 140 одновременных пользователей. Ежедневно на сервере проводится апдейт статистики, еженедельно - перестройка индексов. Никак не могу вкурить: один и тот же простой запрос, который вчера работал - сегодня виснет намертво (приходится сбрасывать сеанс). Раньше причину удавалось найти - не отрабатывал апдейт статистики. Сейчас по логам SQL Server план обслуживания отработал корректно. Причем на копии базы, которая делается ежедневно, запрос отрабатывает успешно. Есть тут телепаты? Помогите! Сам запрос вот: Первый подзапрос отрабатывает в рабочей базе 1,5-2 секунды. Второй подзапрос "повисает", хотя отдельный запрос к регистру "Контактная информация" отрабатывает за конечное время.
#3
by kabanoff
Предвещая вопросы к оптимизации запроса, уточню: - ДатаОкончания - ресурс регистра ШапкаДСП; - Статус - ресурс регистра СтатусДСП; - Регистр сведений "КонтактнаяИнформация" непериодический, не подчиненный регистратору.
#5
by Никола_Питерский
А в тех. журнале что пишет последние строки ? на чем виснет ? Да и платформа то какая ?
#6
by mikecool
я хз, когда начинали работать под постгри - каждую ночь, сейчас - по необходимости, когда полная ж.па наблюдается )
#7
by Rovan
база 1С 60 Гб 1) делаем рестарт сервера 1С кажду ночь 2) тупняк с зависанием бух. отчетов 3 раза решали путем восстановлени БД из dt
#9
by kabanoff
Вот вот, знакомая ситуация :) Полные ж0пы мы тоже периодически наблюдаем. Тех.журнал еще не смотрел. Щас настрою. Платформа 8.1.14.72. (да, такая старая, потому что мы распределенное звено в большой филиальной сети).
#13
by ILM
А ПОДОБНО зачем такое? Одного типа телефон и условия NOT NULL не хватит? И может у клиента телефонов куча? Перепишите запрос. Условия поменяйте.
#14
by Fragster
получи срезу последних отдельными запросами, а потому уже эти временные таблицы соединяй
#16
by Axel2009
скока выдает запрос? ВЫБРАТЬ КОЛИЧЕСТВО(*) ИЗ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
#17
by Лефмихалыч
Евгений, а соединение-то у тебя внутреннее. Условие из ГДЕ в соединение перенести пробовал? за те данные, которые ему в этот регистр складывают, надо бы вообще на кол сажать, однако те одержимые поленья еще и зарплату за них получать умудряются
#18
by Лефмихалыч
ахёпт, оно ить и внатурально внутреннее. Может в левое переквалифицировать?.. хотя - бред
#23
by kabanoff
Особого эффекта нет, также виснет намертво. Условие на представление необходимо, чтобы вычленить из общей массы телефонов телефоны с 10-ю цифрами для дальнейшего анализа regexp'ом (сотовые телефоны). Ну а какие еще варианты? 313503 записи
#26
by Лефмихалыч
Капитан Очевидность утверждает, что если условие переписать так: ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА) ПОДОБНО "%[0-9]%[0-9]%[0-9]%[0-9]%[0-9]%[0-9]%[0-9]%[0-9]%[0-9]%[0-9]%" то это может (хотя и не обязательно) облегчить жизнь серверу. Ты всё равно больше 20 символов ни где не используешь, зачем их вообще обрабатывать? там дальше нереально хитрожопый механизм на регэкспах их этого говнища телефоны добывает. Так что ответ на твой вопрос - да, это тоже считываем.
#27
by Buster007
а если убрать это условие И КонтактнаяИнформация.Представление ПОДОБНО "%[0-9]%[0-9]%[0-9]%[0-9]%[0-9]%[0-9]%[0-9]%[0-9]%[0-9]%[0-9]%" столько же будет выполняться?
#28
by kabanoff
Да. Потом прогоняем через regexp с паттерном на сотовые телефоны. Такой номер не пройдет. Выполнил поэтапно в консоли запросов.
#30
by Fragster
а смысл этого отбора, если там КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон) ?
#31
by kabanoff
Бинго, пиляйт! Убрал условие "КонтактнаяИнформация.Представление ПОДОБНО" и запрос отработал за 2,5 секунды!
#33
by kabanoff
Условие "ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА) ПОДОБНО" тоже отрабатывает довольно шустро! Осталось понять, то ли я тут дурак, то ли SQL Server меня таковым считает.
#34
by Buster007
ну так )) если условие на вид даже страшное, чего уж говорить про его быстродействие... )) может стоит обрубить возможность кривых номеров перед записью их в базу, а не при выборе?
#35
by Лефмихалыч
мне тут прямо в голову пришло, что тебе надо перед записью телефона всю эту колбасу вертеть с регэкспами и проверкой на вхождение в диапазон сотовых и прочих номеров. Чтобы телефон в регистре был гарантированно правильным (например - совать его в отдельный ресурс, специально под эту цель сделанный).
#36
by Лефмихалыч
+ или даже телефон писать в Представление, а дополниельный ресурс должен быть булевским типа ПровереноЭлектроникой, чтобы Скайнет собирал только те записи, где проверено электроникой = истина
#38
by kabanoff
Спасибо всем за помощь!) Да, идея правильная, согласен. У меня даже задачка такая в мантисе висит с пометкой "Сделать когда-нибудь" :) Тогда придется пожертвовать тонной записей с неправильными телефонами. Или преобразовать все такие телефоны в правильные. Во общем, взлетит только после тщательной обработки всех записей контактной информации regexp'ом :) Но все-таки хочу разобраться, почему оптимизатор запроса не справился с таким условием.
#39
by Лефмихалыч
толстая обработка регистра будет один раз. Это православно, пусть и долго. А сервер с запросом не справляется потому, что Представление - неограниченная строка и соединение внутреннее.
#40
by ILM
Ну как бы % говорит о любом количестве знаков, так что сначала была проверка с первого символа, потом со второго, потом с третьего и так далее и 10 раз подряд. Даже я устал писать этот пост.
#43
by ILM
Наверно когда учили били по рукам. Если признаться, то мне оно тоже не очень нравится, но хоть применять его не боюсь.
#45
by ILM
Ну опасно хотя бы тем, что может быть меньше строк в результирующей таблице чем в главной таблице запроса. Ну и сразу не видно тех строк, у которых нет соответствия. Просто, мне, как-то интуитивно непонятно, зачем брать только общую часть из таблиц.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Одна лицензия - один компьютер или один экземпляр программы?
- Сохранение 3-х разных отчетов во внешних отчетах, а при открывается один и тот же
- Два запроса. Один по регистру, один по документам. Второй быстрее. ЧЯНТД?
- Один партнер, один контрагент
- Несколько Установок цен в один день, на один товар
- УстановитьНовыйНомер() устанавливает один и тот же номер
В этой группе 1С
- 8.2 Подключение базы Oracle через "Внешние источники данных"
- Вирус поменял имена файлов в базе
- Универсальный обмен данными в формате XML.
- Как в СКД настроить вывод одного из ресурсов только в общих итогах?
- Ввод Диапазона дат с формы и присваивание их значений переменным
- УФ и ActiveDocument
- отбор по регистру с составным измерением
- Обмен данными: параметр "КодНастройки" - так откуда все таки берется ?
- УФ. оформление цветом таб части документа, формы списка.
- В отчете на СКД пропадает одно значение...
- 1с8.2.15 СКД. Связи наборов данных
- Ошибка при установке значения атрибута контекста
- НайтиПоНаименованию
- УПП.Дата запрета редактирования
- сбиваются настройки табличных частей
- v8: Скд Компоновщик программно изменить поле
- Оформлено больше чем указано в строке 1 распоряжения Заказ поставщику
- загрузка 2ндфл в ЗУП
- Не сохраняются изменения во внешней обработке.
- Что лучше передавать в ОбработкаЗаполнения(): ссылку или объект?