Кто что блокирует, 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 не будет опубликован. Обязательные поля помечены *