|
Блокировки процесса FT GATHERER
|
|||
---|---|---|---|
#18+
Имеется веб-приложение (разработка не собственная), взимодействующее с базой MSSQL (2008 R2). У одной таблицы в базе имеется индекс полнотекстового поиска. Почти год эта штука работала нормально, а с недавнего времени стали появляться блокировки примерно такого вида: spidblockedwait_infoopen_transtatusprogram_nameloginamecmd17101runnableMicrosoft JDBC Driver for SQL ServerfooSELECT 29171908.017 sec - LCK_M_IX (TAB: 54:1017770683:63)2backgroundsaFT GATHERER 25629908.015 sec - LCK_M_S (TAB: 54:1017770683:63)1suspendedMicrosoft JDBC Driver for SQL ServerfooSELECT 115256648.329 sec - LCK_M_S (TAB: 54:1017770683:63)1suspendedMicrosoft JDBC Driver for SQL ServerfooSELECT 196256595.737 sec - LCK_M_S (TAB: 54:1017770683:63)1suspendedMicrosoft JDBC Driver for SQL ServerfooSELECT 31290.346 sec - LCK_M_SCH_M (MD: database_id = 54 FULLTEXT_INDEX(object_id = 87671360))2backgroundsaFT GATHERER поле wait_info формируется на основании полей sys.sysprocesses так: Код: sql 1. 2. 3. 4.
На самом деле сессий, висящих на spid=256, достаточно много - 150-200, где-то так. У самого полнотекстового индекса change tracking=automatic, и при возникновении вышеприведённой картины у свойства Table Full-Text Pending Changes значение больше 0. Порылся в интернете, прочитал, что FT GATHERER - это процесс, обновляющий полнотекстовый индекс, и при change tracking=automatic он запускается тогда, когда сервер сочтёт нужным. Советы по ликвидации блокировок - менять тип обновления индекса на ручной, и обновлять индекс в джобе, например, ночью - но, насколько я понимаю, тогда изменения, которые были внесены днём, до отработки джоба не будут доступны для поиска? Если убить сессию, на которой висит процесс FT GATHERER (самую верхнюю), то ситуация нормализуется, но этот вариант мне как-то не особенно нравится - нужно постоянно, по несколько раз в день убивать такие сессии, да и вообще это не особенно правильно. Есть ли ещё какие-нибудь способы устранить вышеописанное? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2021, 13:20 |
|
Блокировки процесса FT GATHERER
|
|||
---|---|---|---|
#18+
WinterGraveyard, у вас долго выполняется select сессии 171, остальные его ждут. Если это произошло "с недавнего времени", могли изменить уровень изоляции для этого запроса или же объем данных увеличился, статистики устарели, удалили какие-то нужные индексы. Еще много причин. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2021, 14:14 |
|
|
start [/forum/topic.php?fid=46&gotonew=1&tid=1685181]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
171ms |
get topic data: |
7ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
others: | 301ms |
total: | 555ms |
0 / 0 |