| 
    
            
         
         | 
    
  | 
v7: 1C++, SQL 2008 R2 - подвисают запросы.. ЧЯДН? | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        mad hatter    
     09.11.12 
            ✎
    19:50 
 | 
         
        Не могу сказать точно, была ли проблема раньше, не обращал внимание.. SQL 2008 R2, стал замечать непонятные для меня явления.. 1С++ (3.2.2.0) при запросах, по фазе луны, происходят подвисания запроса на sql-сервере.. Запрос один и тот же, крутится в цикле, либо селф, либо к однотипным базам, например первая итерация пролетает мгновенно, на втором и третьем подвисает и далее опять норм.. Подвисает и висит примерно минуту, потом такое впечатление, что вываливается по таймауту, но завершается ОК и данные возвращает, при этом и ЦП-0% и I/O-0%.. Попадает в "длинные запросы".. После ребилдинга индексов все начинает мгновенно летать, но после, даже штатного перезапуска сервера, опять начинаются подвисания до реиндексации..
  
        И памяти и прочего на серваке навалом: 24 Гб, SSD диски, нагрузка - ноль пользователей.. Куда посмотреть, на что обратить внимание?..  | 
|||
| 
    1
    
        Ёпрст    
     гуру 
    09.11.12 
            ✎
    19:51 
 | 
         
        хинты то в запросах есть ?
  
        как дружил с 2008 скулем ?  | 
|||
| 
    2
    
        mad hatter    
     09.11.12 
            ✎
    20:00 
 | 
         
        (1) 
  
        1. Хинтов нет.. и да, посмотрел планы запросов - у зависающих он другой.. Но почему?.. и как влияет на это перезапуск сервера.. 2. Самизнаетекак, постаринке )).. Сами клюшки работают без тормозов, а вот выборки из внешних баз "призадумываются"..  | 
|||
| 
    3
    
        Evg    
     09.11.12 
            ✎
    20:08 
 | 
         
        выложи хотя бы запрос     
         | 
|||
| 
    4
    
        mad hatter    
     09.11.12 
            ✎
    20:17 
 | 
         
        (3) запросы совершенно разные, вплоть до элементарного SELECT`а в методе "ВыполнитьСкалярный()"..
  
        подключаюсь так: Запрос = СоздатьОбъект("ODBCRecordset"); Запрос.УстБД1С();  | 
|||
| 
    5
    
        Evg    
     09.11.12 
            ✎
    20:18 
 | 
         
        те же самы запросы в sql студии отрабатывают нормально ?     
         | 
|||
| 
    6
    
        mad hatter    
     09.11.12 
            ✎
    20:27 
 | 
         
        (5) ..не имею достаточной статистики, но вроде все норм     
         | 
|||
| 
    7
    
        МихаилМ    
     09.11.12 
            ✎
    20:43 
 | 
         
        авто обновление статистики включено ?     
         | 
|||
| 
    8
    
        mad hatter    
     09.11.12 
            ✎
    21:12 
 | 
         
        (7) true.. ))
  
        я стал грешить на R2.. раньше был просто "2008" и жалоб не было..  | 
|||
| 
    9
    
        Ёпрст    
     гуру 
    09.11.12 
            ✎
    22:32 
 | 
         
        (nolock) в текстах запроса воткни     
         | 
|||
| 
    10
    
        ADirks    
     12.11.12 
            ✎
    06:30 
 | 
         
        (0) +, Как вариант, попробовать параллелизм отключить. Лично видел, к 1 (один!) запрос с кучкой подзапросов сам себя дедлочит.     
         | 
|||
| 
    11
    
        mad hatter    
     16.11.12 
            ✎
    02:21 
 | 
         
        (9) ноулоки не спасли "атца русской демократии"(с) ))
  
        ..но помогли выявить особенность - зависают (дедлоков не выявлено) запросы с инсертами во временную таблицу, содержащие в себе соединения с другой временной таблицей, например: insert into #qwerty (a,b,c) select a,b,c from asd inner join #zxc on(.. OMG!.. собака порылась в tempdb? как замерить очередь к диску в момент запроса?  | 
|||
| 
    12
    
        mad hatter    
     16.11.12 
            ✎
    02:22 
 | 
         
        (10) как отключить параллелизьм?     
         | 
|||
| 
    13
    
        ADirks    
     16.11.12 
            ✎
    06:16 
 | 
         
        можно так
  
        sp_configure 'show advanced options', 1 RECONFIGURE WITH OVERRIDE sp_configure 'max degree of parallelism' sp_configure 'max degree of parallelism', 1 RECONFIGURE WITH OVERRIDE или в менежмент студио где-то ещё можно попробовать трассировку отрубить, тоже тормозит exec sp_configure 'default trace enabled', 0 ещё попробуй глянуть всякие waiting'и, может что скажет SELECT TOP 10 [Wait type] = wait_type, [Wait time (s)] = wait_time_ms / 1000, [% waiting] = CONVERT(DECIMAL(12,2), wait_time_ms * 100.0 / SUM(wait_time_ms) OVER()) FROM sys.dm_os_wait_stats WHERE wait_type NOT LIKE '%SLEEP%' ORDER BY wait_time_ms DESC;  | 
|||
| 
    14
    
        Z1    
     16.11.12 
            ✎
    10:59 
 | 
         
        (13) дело говорит
  
        (4)Вместо Запрос = СоздатьОбъект("ODBCRecordset"); Запрос.УстБД1С(); надо использовать Запрос = СоздатьОбъект("ODBCRecordset"); Запрос.РежимRPC(1); ------------------ Оператор Запрос.УстБД1С(); тлт вообще ничего не делает или создает лишнее сооденение к БД какой из этих вариантов работает точно не знаю. короче УстБД1С если хочешь соедениться с другой sql базой. ----------------- Может у тебя какие либо регламенты идут обслуживающие базу ( с блокировкой базы) ----------------- или неправильно настроены приращения размеров базы в том числе и tempdb ----------------- про SSD не страшно использовать и еще скажи сколько пользователей одновременно в базе  | 
|||
| 
    15
    
        mad hatter    
     16.11.12 
            ✎
    14:24 
 | 
         
        (13) этот параллелизм (sp_configure 'max degree of parallelism', 1) у меня отключен..
  
        (14) пользователей в базе 0(ноль) SSD диски совсем не страшно, работают уже 3 года пока без проблем, но.. фирмы intel и win2008  | 
|||
| 
    16
    
        ЧеловекДуши    
     16.11.12 
            ✎
    14:29 
 | 
         
        (15) А можно поподробнее об Сервере и о SQL а так же о битах 32 и 64, того и другого.
  
        А то чет непонятно :)  | 
|||
| 
    17
    
        ADirks    
     16.11.12 
            ✎
    14:42 
 | 
         
        (15) циферка после 'max degree of parallelism' - это макс. количество потоков, которое сервер может выделить на обработку запроса. Если там 0, то это значит, что ограничений нет.     
         | 
|||
| 
    18
    
        mad hatter    
     16.11.12 
            ✎
    15:18 
 | 
         
        (17) у меня там уже давно "циферка 1" )))     
         | 
|||
| 
    19
    
        mad hatter    
     16.11.12 
            ✎
    15:20 
 | 
         
        парни, я кажется близок к разгадке! ))))..
  
        сижу сейчас пилю сиквельный сервис.. возможно скоро выступлю с докладом ))  | 
|||
| 
    20
    
        mad hatter    
     16.11.12 
            ✎
    15:21 
 | 
         
        (14) режим Запрос.РежимRPC(1) мне использовать нельзя, запросы напичканы временными таблицами.. да и не в этом дело     
         | 
|||
| 
    21
    
        prog01    
     16.11.12 
            ✎
    15:22 
 | 
         
        (0)кривые руки?     
         | 
|||
| 
    22
    
        mad hatter    
     16.11.12 
            ✎
    15:22 
 | 
         
        (16) биты то тут с какого боку?     
         | 
|||
| 
    23
    
        prog01    
     16.11.12 
            ✎
    15:23 
 | 
         
        если серьезно то нужно смотреть как выполняется запрос и подзапросы в скулях
  
        и сравнивать с тем что транслирует ваша приблуда и всё будет ясно  | 
|||
| 
    24
    
        mad hatter    
     16.11.12 
            ✎
    15:23 
 | 
         
        (21) отгатка скоро.. следите за темой! ))))     
         | 
|||
| 
    25
    
        Никола_
 Питерский 16.11.12 
            ✎
    15:25 
 | 
         
        (24) Очень следим.     
         | 
|||
| 
    26
    
        mad hatter    
     16.11.12 
            ✎
    18:48 
 | 
         
        тащемта, камлание и битье головой ап стену принесли свои плоды, например.. ))
  
        дело было в следующем: заметил, что при подвисании запроса, неразумно растет очередь к дискам, где база или темпдб лежат.. но при этом ввод/вывод - 0%, ничего не пишет не читает.. и тут осенило.. некоторое время назад были проблемы с электричеством, компупер по ночам вырубался, пока разбирались что к чему, я на всякий случай убрал галочку в свойствах SSD дисков (в диспетчере устройств) "Отключить очистку буфера кеша записей Виндоус для этого устройства".. вернул галочки и усе заработало )).. видимо имеем дело со сложным глюком, возникающим при определенном стечении обстоятельств - алгоритм работы контроллера SSD диска с флеш памятью + алгоритм работы кэша диска + SATA контроллер/драйверы + работа SQL c дисками.. дальше разбираться не стал.. возможно с другими дисками и на другом оборудовании ничего подобного не будет  | 
|||
| 
    27
    
        mad hatter    
     16.11.12 
            ✎
    18:58 
 | 
         
        ..а может просто уже диску с темпдб хана и он настолько деградировал, что минуту строит таблицу годных ячеек на запись))     
         | 
|||
| 
    28
    
        mad hatter    
     16.11.12 
            ✎
    18:59 
 | 
         
        ..а может виноват TRIM происходящий не вовремя.. хз))     
         | 
|||
| 
    29
    
        lift    
     18.11.12 
            ✎
    16:52 
 | 
         
        экспериментаторы епт, ну давай скрещивай 1С 7.7 с SQL 2012     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |