Кто что блокирует, MS SQL + 1C

49 Comments

  1. salexdv

    (0) «Виновника», как правило, можно вычислить просто взглянув на колонку «Заблокировано СУБД» в списке соединений базы или кластера. А вот детали — это уже интересно

    Reply
  2. CagoBHuK

    Чем не понравилась обработка Славы Гилева?

    Reply
  3. andrey-prog

    Что-то где-то видел, про Гилева наслышан, статьи читал..

    Reply
  4. Yashazz

    (2) Кстати, я её что-то потерял из виду, можно ссылку, если есть навскидку?

    Reply
  5. CagoBHuK

    Есть тока сама обработка. Правила запрещают размещать ее. 🙁

    Reply
  6. SinglCOOLer

    (5) CagoBHuK, скиньте пжл на почту эту обработку, хочу чтобы все средства анализа были, уже замучили блокировки? написал в личку

    Reply
  7. DragonAgo

    Кто-то постоянно что — то делает, а другие лишь твердят, что ты работать просто не умеешь

    Reply
  8. servs

    Очень интересно. Спасибо, плюсую!

    Reply
  9. servs

    Небольшое дополнение:

    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED — Указывает, что инструкции могут считывать строки, которые были изменены другими транзакциями, но еще не были зафиксированы.

    Reply
  10. andrey-prog

    (1) Ошибаетесь, не в большинстве, максимум в 50%, «Заблокировано СУБД» может быть больше у жертвы, из этого следует большая неоднозначность в каком месте конфигурации надо копать (по сути ответа вообще не получить).

    Reply
  11. Amara

    Спасибо. Интересно не только обнаружение «виновника» но и анализ и выявление проблемного куска кода.

    Reply
  12. fr.myha

    Интересно, но сложно кажется.

    Reply
  13. serega3333

    (2) CagoBHuK, а какая обработка имеется ввиду?

    за скрипт автору спасибо!

    Reply
  14. JohnyDeath

    Мне кажется, сложновато будет прыгать туда-сюда как описывает автор.

    Может проще ТехЖурнал настроить на блокировки и прочие долгие операции?

    Reply
  15. Gilev.Vyacheslav
  16. Gilev.Vyacheslav

    (6) SinglCOOLer, рекомендую http://www.gilev.ru/latch/

    Reply
  17. Gilev.Vyacheslav

    (13) serega3333, см (15), ту, которую я написал в апреле 2008 года 🙂

    Reply
  18. francisco

    Все эти обработки заточены под MS SQL? Для Postgre SQL нет ничего похожего?

    Reply
  19. andrey-prog

    (18) francisco, В запросе участвуют системные таблицы MSSQL, для Postgre SQL конечно не подойдет он. В Postgre наверное тоже есть доступ к системной информации, попробуйте погуглить по блокировкам в Postgre, запрос то «не знает» что мы 1с-ники)), блокировки они в любой базе могут быть, может что-то найдете общее для Postgre, а оно и для базы 1С подойдет, пишите.

    Reply
  20. paybaseme

    (16) Gilev.Vyacheslav, на вашем сайте выложен Скрипт обновления индексов на ms sql server. А вот хотелось бы полюбопытствовать, этот скрипт нужно запускать плюсом к «стандартным», которые рекомендует 1С делать? (реиндексация и дефрагментация индексов)

    Reply
  21. Gilev.Vyacheslav

    не нужно

    Reply
  22. tormozit

    (15) Кроме этой сыроватой обработки, вашего облачного сервиса и ЦУП есть другие инструменты? Техножурнал на сколько я заметил довольно мало информации по блокировке регистрирует.

    Reply
  23. Gilev.Vyacheslav

    не понятен вопрос: Вас не устраивает функционал? не устраивает цена? другое?

    Reply
  24. tormozit

    (23) Имеются ввиду инструменты, написанный под платформу 1С и позволяющие выполнять анализ блокировок в базах 1С. Функционал LOCK1C меня конечно не удовлетворяет, т.к. продукт старый не использует многие современные возможности платформы. Облачный сервис не устраивает оперативностью. ЦУП не устраивает опять же оперативностью, сложностью настройки и низкой надежностью.

    Reply
  25. Gilev.Vyacheslav
    Облачный сервис не устраивает оперативностью.

    Какая оперативность нужна?

    Reply
  26. tormozit

    (25) 5 сек

    Reply
  27. Gilev.Vyacheslav

    надо понимать, что это «почти моментально», т.е. на таком промежутке технологический журнал «еще недоступен», а значит снимок будет только данных со скуля, контекст кода 1с еще будет не доступен, а ведь его надо не просто «получить», но еще пропарсить и свернуть до аналитики

    т.е. устраивает ли в течении 5 секунд видет только блокировки скуля (без блокировок 1с)?

    или все таки придеться признать что еще нужно пропарсить управляемые блокировки, выполнять корреляционный анализ и смериться с тем что анализ происходит «постфактум»?

    Reply
  28. tormozit

    (27) Никто не спорит что здесь имеет место традиционный баланс между оперативностью и глубиной анализа. В каких то задачах важнее первое, в каких то второе. Техножурнал на таком промежутке вполне доступен (смотри трассировку запроса в консоли запросов из подсистемы «Инструменты разработчика» http://www.youtube.com/watch?v=0YrEHuMmd3g&feature=share&list=UUhi09WYkuu4uLc6rrdc9Dog).

    Reply
  29. Gilev.Vyacheslav

    (28) tormozit, я не хочу критиковать, но не надо путать схему когда в базе сидит только один разработчик и для эксперимента держит 3 сессии для отладки и базу на 500 пользователей

    Инструмент разработчика за 5 секунд проанализирует блокировки всех пользователей? серьезно?

    мы сейчас о каком случаи говорим?

    Reply
  30. tormozit

    > Инструмент разработчика за 5 секунд проанализирует блокировки всех пользователей? серьезно?

    Я такого не утверждал. Я утверждал о доступности получения данных технологического журнала с задержкой 5 сек. Конечно здесь влияет, насколько большой поток событий пишется в журнал.

    > путать схему когда в базе сидит только один разработчик и для эксперимента держит 3 сессии для отладки и базу на 500 пользователей

    У нас пока нет 500 пользователей. Возможно поэтому мы друг друга не понимаем.

    Reply
  31. Gilev.Vyacheslav

    Ну тогда возращаемся к исходному вопросу: какая оперативность должна быть у сервисов, которые работают на любых проектах? Не надо путать «массовый продукт» и способный работать на узком спектре.

    Нам не сложно для отдельной учетки сервисов изменить оперативность анализа, но цена — уменьшение количества анализируемой информации.

    На платных проектах мы делаем «и не такое» 🙂

    Даже больше скажу, мы готовы интегрировать «инструмент разработчика» в наши сервисы и вы сами поймете что не все так просто, как кажется с виду. Сейчас в наших сервисах лежат «террабайты» аналитики, ваш инструмент врядли сможет «отрисовать» даже визуально, зато мы могли бы сотрудничать, раз оба продукта бесплатные.

    Reply
  32. andrey-prog

    Если кому-то интересно, нашелся код для определения блокировок для PostgreSQL, кто может проверьте, рабочий или нет..

    «— For PostgreSQL Version < 9.2
    SELECT bl.pid AS blocked_pid, a.usename AS blocked_user,
    kl.pid AS blocking_pid, ka.usename AS blocking_user, a.current_query AS blocked_statement
    FROM pg_catalog.pg_locks bl
    JOIN pg_catalog.pg_stat_activity a
    ON bl.pid = a.procpid
    JOIN pg_catalog.pg_locks kl
    JOIN pg_catalog.pg_stat_activity ka
    ON kl.pid = ka.procpid
    ON bl.transactionid = kl.transactionid AND bl.pid != kl.pid
    WHERE NOT bl.granted;
    
    
    — For PostgreSQL Version >= 9.2
    SELECT bl.pid AS blocked_pid, a.usename AS blocked_user,
    kl.pid AS blocking_pid, ka.usename AS blocking_user, a.query AS blocked_statement
    FROM pg_catalog.pg_locks bl
    JOIN pg_catalog.pg_stat_activity a
    ON bl.pid = a.pid
    JOIN pg_catalog.pg_locks kl
    JOIN pg_catalog.pg_stat_activity ka
    ON kl.pid = ka.pid
    ON bl.transactionid = kl.transactionid AND bl.pid != kl.pid
    WHERE NOT bl.granted;»

    Показать

    Reply
  33. klel

    Занятная статейка нужно опробовать =) автору спасибо буду пробовать

    Reply
  34. Gilev.Vyacheslav
  35. uinx

    Ругается:

    Сообщение 8115, уровень 16, состояние 2, строка 179

    Ошибка арифметического переполнения при преобразовании expression к типу данных int.

    На строке: SELECT txt.[text]

    Reply
  36. alekseies

    sg 102, Level 15, State 1, Line 19

    Incorrect syntax near ‘.’.

    Msg 102, Level 15, State 1, Line 71

    Incorrect syntax near ‘.’.

    Msg 102, Level 15, State 1, Line 191

    Incorrect syntax near ‘.’.

    Reply
  37. alekseies

    sg 102, Level 15, State 1, Line 19

    Incorrect syntax near ‘.’.

    Msg 102, Level 15, State 1, Line 71

    Incorrect syntax near ‘.’.

    Msg 102, Level 15, State 1, Line 191

    Incorrect syntax near ‘.’.

    Все ОК! Не ту базу выбрал ………

    Reply
  38. Vo-Va

    (15)Gilev.Vyacheslav, а есть что то подобное для PostgreSQL?

    Reply
  39. Gilev.Vyacheslav

    Постргресс — версионник, если там долгие блокировки, значит надо переписывать алгоритм — а для этого мы пока не придумали как делать «диагностику» )

    Reply
  40. madfox

    Для какой версии SQL?

    Reply
  41. albert

    БП 2.0, SQL 2008 SP3

    конфигурация немного доработана, но ОСВ и регистры бухгалтерии не изменялись

    пользователь начинает собирать ОСВ и программа иногда повисает и не отвисает за разумное время.

    запрос выдает следущее:

    Reply
  42. andrey-prog

    (41) — по крайней мере взаимоблокировок нет, реиндексацию базы делаете? Посмотрите также в сторону увеличения быстродействия, например перенести tempdb на отдельный диск, выделить mssql побольше памяти и т.п.

    Reply
  43. Gilev.Vyacheslav

    (41) albert, прежде всего надо обсчитать статистку с полным сканированием

    Reply
  44. tormozit

    Как получить информацию об установленных в текущий момент управляемых блокировках?

    Reply
  45. bdsmka

    Сообщение 102, уровень 15, состояние 1, строка 19

    Неправильный синтаксис около конструкции «.».

    Сообщение 102, уровень 15, состояние 1, строка 71

    Неправильный синтаксис около конструкции «.».

    Сообщение 102, уровень 15, состояние 1, строка 191

    Неправильный синтаксис около конструкции «.».

    Как победить?

    Reply
  46. bashirov.rs

    Доступно, понятно, но сложновато в том, что бегать надо «туда-обратно». Спасибо за код!

    Reply
  47. 6630

    Спасибо автору

    Reply
  48. sashapere

    Спасибо!, вообще круто

    Reply
  49. igor_gk

    Вещч!

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *