|
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
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |