Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
Есть очень маленькая таблица с большим количеством апдейтов и на ней возникают постоянные блокировки. Что потенциально можно сделать в таком случае, подскажите, пожалуйста? spBlitz про нее: Lock Waitsdbo.SEQUENCES.PK_SEQUENCES (1): Row lock waits: 569,172; total duration: 13,942 minutes; avg duration: 1 seconds; Lock escalation attempts: 2; Actual Escalations: 0. NC indexes on table: 0 spBlitz про индекс на ней: Usage StatsReads: 46,954,297 (46,954,289 seek 8 scan) Writes:15,726,100 Op Stats46,954,289 singleton lookups; 26 scans/seeks; 0 deletes; 15,725,898 updates; Size171 rows; 0.1MB SQL для создания таблицы: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2018, 10:16 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
ssedov, Добавлю, при разборе блокировок видно что удерживается индекс PK_SEQUENCES в режиме X. Работа идет по сути только с 2мя записями в этой таблице, во всяком случае в блокировках фигурируют только они. Эти записи что-то типа счетчика, каждый коннект к БД его увеличивает, дисконнект уменьшает. Коннектов до 1000 одновременно работающих. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2018, 10:30 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
ssedovЧто потенциально можно сделать в таком случаеВ случае конфликта писатель-писатель - ничего. При конфликте читатель-писатель - грязное чтение, RCSI, snapshot isolation. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2018, 11:16 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
ssedovЧто потенциально можно сделать в таком случаеДобавлю к ответу invm, старайтесь блокировать на максимально короткое время, если это возможно. invmПри конфликте читатель-писатель - грязное чтение, RCSI, snapshot isolation.Гразное чтение или snapshot isolation ТС вряд ли подойдёт, это же получение счётчика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2018, 13:10 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
alexeyvgГразное чтение или snapshot isolation ТС вряд ли подойдёт, это же получение счётчика.Зависит от предназначения читаемого. А оно нам неведомо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2018, 13:25 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
invmalexeyvgГразное чтение или snapshot isolation ТС вряд ли подойдёт, это же получение счётчика.Зависит от предназначения читаемого. А оно нам неведомо.Вангую, что это самодельный идентити. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2018, 13:33 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
alexeyvgВангую, что это самодельный идентити.Зависящий от числа коннектов? Очень странный иднентити :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2018, 14:09 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
ssedovЕсть очень маленькая таблица с большим количеством апдейтов и на ней возникают постоянные блокировки. Что потенциально можно сделать в таком случае, подскажите, пожалуйста? 1. Критическая секция и sp_getapplock. 2. Самый ленивый вариант: update with(tablockx). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2018, 14:54 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
Помещение таблицы в память в таком случае могло бы помочь? Хотя ФС на сервере внешняя СХД и сама по себе очень быстрая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2018, 18:05 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
ssedovПомещение таблицы в память в таком случае могло бы помочь? Хотя ФС на сервере внешняя СХД и сама по себе очень быстрая.Мог бы помочь анализ архитектуры вашего приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2018, 18:10 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
aleks222, Читал про sp_getapplock, но так и не понял чем она поможет. Как понимаю это тоже блокировка на запись, но наложенная приложением. Остальные коннекты так же будут висеть и ждать её? Верно понимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2018, 18:47 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич, Как это правильно сделать? Есть может какая-то информация на эту тему? Или, если ПО от стороннего разработчика, то как верно адресовать ему этот вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2018, 19:50 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
ssedovГавриленко Сергей Алексеевич, Как это правильно сделать? Есть может какая-то информация на эту тему? Или, если ПО от стороннего разработчика, то как верно адресовать ему этот вопрос?Давайте начнем с простого вопроса -- какие у вас проблемы с перфомансом? Или вы просто скрипт запустили и испугались? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2018, 20:15 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич, Проблемы ежедневно практически в одно и тоже время. Количество блокированных процессов вырастает от нескольких сотен, до почти двух тысяч. При этом у пользователей все встаеет, начинаются звонки и жалобы. Порой это чаще, раз 5-10 в день, порой 1 раз или редкие дни что ни разу. В итоге решили понять в чем причина, так как какой то связи пока проследить не получается. Запустил на день трейс на эскалации и блокированные процессы. На двух таблицах были эскалации, но блокировки возникали на той что привел в первом посте. Поэтому эскалации оставил на потом, считая что дело не в них. Пока решил попробовать разобраться с блокировками. С бд работают около 10 серверов веб приложения. Через веб подключаются пользователи. Какая-то ещё нужна информация? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2018, 20:31 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
alexeyvgssedovЧто потенциально можно сделать в таком случаеДобавлю к ответу invm, старайтесь блокировать на максимально короткое время, если это возможно. invmПри конфликте читатель-писатель - грязное чтение, RCSI, snapshot isolation.Гразное чтение или snapshot isolation ТС вряд ли подойдёт, это же получение счётчика. Если запросы работают с малым числом строк, то может быть, имеет смысл использовать подсказку ROWLOCK? https://docs.microsoft.com/ru-ru/sql/t-sql/queries/hints-transact-sql-table?view=sql-server-2017 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2018, 20:36 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
ssedovесли ПО от стороннего разработчика, то как верно адресовать ему этот вопрос? Примерно вот так ssedov ежедневно практически в одно и тоже время ( указать время и конкретные дни ). Количество блокированных процессов вырастает от нескольких сотен, до почти двух тысяч. у пользователей все встаеет, начинаются звонки и жалобы. Порой это чаще, раз 5-10 в день, порой 1 раз или редкие дни что ни разу Разработчик знает лучше свою архитектуру и быстрее может сказать в чем косяк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2018, 21:02 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
ssedovКоличество блокированных процессов вырастает от нескольких сотен, до почти двух тысяч. При этом у пользователей все встаеет, начинаются звонки и жалобы.Вот когда такое случится, смотрите в sys.dm_os_waiting_tasks кто кого ждет. Или sp_who2. Или скачайте себе sp_whoisactive и смотрите ей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2018, 21:44 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
ssedovssedov, каждый коннект к БД его увеличивает, дисконнект уменьшает. Коннектов до 1000 одновременно работающих. А каким образом отлавливается коннект/дисконнект? Триггер on logon/logoff? И если триггер - update тоже выполняется этим же триггером? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2018, 00:17 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
flexgen, Если верно все понимаю, то вся работа с БД происходит через АПИ. Оно при входе/выходе дёргает хранимку, которая обращается к указанной таблице. Далее в этой таблице есть счётчик связанный с заявками, он тоже дёргается каждый раз когда с заявкой выполняется действие. В итоге эта таблица получается самая активная на апдейты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2018, 08:06 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
invm, Как понимаю кто кого ждёт я посмотрел. Смотрел разными скриптами и профайлером до кучи. В итоге выводы об ожиданиях в первом посте привёл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2018, 08:08 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
alexeyvg Если запросы работают с малым числом строк, то может быть, имеет смысл использовать подсказку ROWLOCK? https://docs.microsoft.com/ru-ru/sql/t-sql/queries/hints-transact-sql-table?view=sql-server-2017 Почитал про нее. Но как понимаю у меня идет блокировка индекса. В трейсе вижу это так авторwaitresource="KEY: 5:72058307143598080 (85be1f2715d1)" waittime="10069" Если докопаться до значения, то это конкретная запись в таблице, т.е. 1 строка. Верно понимаю что это и есть блокировка на строку и здесь нет расширения блокировки на таблицу или страницу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2018, 08:41 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
ssedovВ итоге выводы об ожиданиях в первом посте привёл.Суммарная информация об ожиданиях - это как "средняя температура по больнице". Надо найти причину происходящего. Например, в "час Х" резко возрастает количество коннектов/дисконнектов. Или просто запускается длительная транзакция, и остальные ждут ее окончания. И т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2018, 11:02 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
ssedovПроблемы ежедневно практически в одно и тоже время. Количество блокированных процессов вырастает от нескольких сотен, до почти двух тысяч. При этом у пользователей все встаеет, начинаются звонки и жалобы. Порой это чаще, раз 5-10 в день, порой 1 раз или редкие дни что ни разу. В итоге решили понять в чем причина, так как какой то связи пока проследить не получается. Запустил на день трейс на эскалации и блокированные процессы. На двух таблицах были эскалации, но блокировки возникали на той что привел в первом посте. Поэтому эскалации оставил на потом, считая что дело не в них. Пока решил попробовать разобраться с блокировками. С бд работают около 10 серверов веб приложения. Через веб подключаются пользователи.- А вы отследили цепочку блокировок, когда у пользователя "всё встаёт"? - Исходной точкой является обращение к SEQUENCES? - Обращение, на котором блокируется, всегда один и тот же запрос? - Почему проблема не постоянная, а проявляется периодически? Что меняется в запросах, когда она возникает? - И на какое время блокируется SEQUENCES? На работу с ней, или в общей транзакции? - Когда появились эти проблемы? Что то менялось, кто либо полдключался кк серверу для проведения каких то действий (например, для апдэйта софта)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2018, 11:49 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
PizzaPizzassedovесли ПО от стороннего разработчика, то как верно адресовать ему этот вопрос? Примерно вот так ssedov ежедневно практически в одно и тоже время ( указать время и конкретные дни ). Количество блокированных процессов вырастает от нескольких сотен, до почти двух тысяч. у пользователей все встаеет, начинаются звонки и жалобы. Порой это чаще, раз 5-10 в день, порой 1 раз или редкие дни что ни разу Разработчик знает лучше свою архитектуру и быстрее может сказать в чем косяк.В общем да, либо надо самим глубоко влезать в приложение, а не смотреть какие то "показатели", или обратиться к разработчику. Это уж вам решать, что будет быстрее и/или дешевле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2018, 11:53 |
|
||
|
Aggressive Under-Indexing
|
|||
|---|---|---|---|
|
#18+
Есть сейчас для меня ряд вопросов на которые пока не могу ответить, т.к. не все данные имею. Похоже что наметил для себя ряд действий по поиску дополнительной информации о проблеме и по запросу к разработчику. Позже продолжу эту тему, пока же возьму перерыв на проработку полученных сведений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2018, 12:14 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39744878&tid=1688617]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
50ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 406ms |

| 0 / 0 |
