Самый клевый куфср по подготовке к аттестации по платформе 1С:Предприятие 8

Автор Тема: Раздел 9. Блокировки, избыточные блокировки и методы оптимизации  (Прочитано 7724 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Droni

  • Модератор
  • Пользователь
  • *****
  • Сообщений: 97
9.1  - 3 (пример ожидания на управляемой блокировке и тайм-аут:
38:11.114021-3,TLOCK,5,process=rphost,p:processName=test,t:clientID=602,t:applicationName=1CV8C,t:computerName=SQL12,t:connectID=373070,SessionID=33,AppID=1CV8C,Regions=InfoRg43.DIMS,Locks=InfoRg43.DIMS Exclusive,WaitConnections=,Context='Форма.Вызов : ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Модуль.Команда1НаСервере
Форма.Форма.Форма : 7 : БД.Заблокировать();'
38:43.052001-0,TTIMEOUT,5,process=rphost,p:processName=test,t:clientID=606,t:applicationName=1CV8C,t:computerName=SQL12,t:connectID=373071,SessionID=36,AppID=1CV8C,WaitConnections=373070,Context=Форма.Записать : РегистрСведений.РегистрСведений1.ФормаЗаписи
38:43.052003-19999959,TLOCK,4,process=rphost,p:processName=test,t:clientID=606,t:applicationName=1CV8C,t:computerName=SQL12,t:connectID=373071,SessionID=36,AppID=1CV8C,Regions=InfoRg43.DIMS,Locks='InfoRg43.DIMS Exclusive Fld44="1" Fld45="1"',WaitConnections=373070,Context=Форма.Записать : РегистрСведений.РегистрСведений1.ФормаЗаписи
)

9.2  - 1 (Принимаем что виновник - это установленная блокировка и не сеанс который ее установил)
9.3  - 3 (https://msdn.microsoft.com/ru-ru/library/ms184286(v=sql.105).aspx  Если попытка укрупнения блокировки заканчивается неудачей из-за конфликтующих блокировок, удерживаемых параллельными транзакциями, компонент Database Engine повторяет попытку для каждых дополнительных 1 250 блокировок, полученных транзакцией.)
9.4  - 4
9.5  - 1
9.6  - 3
9.7  - 2 (не проверял)
9.8  - 2
9.9  - 1 (проверено)

9.10 - 3 (38:43.052003-19999959,TLOCK)
9.11 - 2
9.12 - 1
9.13 - 4
9.14 - 5
9.15 - 1
9.16 - 2
9.17 - 1 (не точно)
9.18 - 1
9.19 - 2

9.20 - 2
9.21 - 3(такого нет в документации http://its.1c.ru/db/v83doc#bookmark:dev:TI000000535 , за то есть в старой статье http://its.1c.ru/db/metod8dev#content:5839:hdoc)
9.22 - 5
9.23 - 5
9.24 - 4
9.25 - 5
9.26 - 4
9.27 - 2
9.28 - 4
9.29 - 2

9.30 - 5
9.31 - 4
9.32 - 2
9.33 - 4
9.34 - 1
9.35 - 1
9.36 - 2 (Компонент Database Engine не укрупняет блокировку строк или диапазона ключей до блокировки страниц, а повышает их прямо до блокировки таблиц. https://msdn.microsoft.com/ru-ru/library/ms184286(v=sql.105).aspx)
9.37 - 1
9.38 - 3
9.39 - 3

9.40 - 4
9.41 - 2
9.42 - 3
9.43 - 3
9.44 - 2
9.45 - 1
9.46 - 5
9.47 - 1
9.48 - 2
9.49 - 1

9.50 - 1
9.51 - 2
9.52 - 1
9.53 - 2
9.54 - 1
9.55 - 3
9.56 - 2
9.57 - 1 (Синтаксис - помощник: При попытке использования в автоматическом режиме блокировки вызывает исключительную ситуацию. После успешной записи документа свойство устанавливается в Ложь у всех наборов записей. )
9.58 - 2 (см. комментарий п.1)
9.59 - 6

9.60 - 4
9.6(опечатка в вопроснике) - 4
9.61 - 1
9.62 - 2
« Последнее редактирование: Май 11, 2015, 04:03:11 pm от Droni »

tito33

  • Пользователь
  • **
  • Сообщений: 14
Спасибо за труд ) В день по 1 разделу? ) К маю все успеешь?
« Последнее редактирование: Апрель 29, 2015, 11:53:16 am от Droni »

Droni

  • Модератор
  • Пользователь
  • *****
  • Сообщений: 97
Спасибо за труд ) В день по 1 разделу? ) К маю все успеешь?
Эксперта сдал еще 5 лет назад, по этому на сколько хватит интузиазма :)
Да, еще нужно понимать что не все ответы правильные.

st1llman

  • Пользователь
  • **
  • Сообщений: 26
  • ФИО: Дмитрий
9.21 - 3 http://its.1c.ru/db/metod8dev#content:5839:hdoc
9.12 - по моему 1; 9.14 - тогда 5. Подтверждения не смог найти.

Droni

  • Модератор
  • Пользователь
  • *****
  • Сообщений: 97
9.12 - по моему 1; 9.14 - тогда 5. Подтверждения не смог найти.
9.14. 1 - не подходит, так как во второй транзакции нельзя будет наложить блокировки по первому ИЛИ второму изменению. 2 - не подходит. Под пересечением понимаю Измерение1+Измерение2. Защищенными окажутся данные по Измерению1 И Измерению2 И комбинации Измерение1+Измерение2.
Остается только ответ 5.

В 9.12 тогда действительно 1.

st1llman

  • Пользователь
  • **
  • Сообщений: 26
  • ФИО: Дмитрий
9.36 - кажется правильный ответ - 2: Из книги "Настольная книга 1С:Эксперта": "Эскалация всегда происходит до уровня таблицы"
9.53 - 2, методом исключения
9.60 - а почему не 4 ?

Droni

  • Модератор
  • Пользователь
  • *****
  • Сообщений: 97
9.36 - кажется правильный ответ - 2: Из книги "Настольная книга 1С:Эксперта": "Эскалация всегда происходит до уровня таблицы"
9.53 - 2, методом исключения
9.60 - а почему не 4 ?
9.36 - Исправил, опечатка.
9.53 - ок
9.60 - в 2 смущает описание изоляций, лицензионное соглашение 1С запрещает вмешиваться средствами СУБД в работу с ИБ, а тут "отличные отиспользуемых по умолчанию, могут быть изменены TSQL".

st1llman

  • Пользователь
  • **
  • Сообщений: 26
  • ФИО: Дмитрий
9.36 - кажется правильный ответ - 2: Из книги "Настольная книга 1С:Эксперта": "Эскалация всегда происходит до уровня таблицы"
9.53 - 2, методом исключения
9.60 - а почему не 4 ?
9.36 - Исправил, опечатка.
9.53 - ок
9.60 - в 2 смущает описание изоляций, лицензионное соглашение 1С запрещает вмешиваться средствами СУБД в работу с ИБ, а тут "отличные отиспользуемых по умолчанию, могут быть изменены TSQL".

9.60 - да спорно, но в вопросе нет ничего про 1С, может это просто абстрактный вопрос про SQL...

tivanitsky

  • Пользователь
  • **
  • Сообщений: 28
9.34 -5 что если в форме было бы например получение объекта по кнопке то вариант 2 вполне бы подошел
9.46 - 5 при чтении в объектной технике блок снимается сразу после чтения имхо
9.58 - 1 простым моделированием
9.60-4
« Последнее редактирование: Май 11, 2015, 09:47:09 am от tivanitsky »

Droni

  • Модератор
  • Пользователь
  • *****
  • Сообщений: 97
9.58 - 1 простым моделированием
У меня с 2 сессиями получилось так:
38:11.114021-3,TLOCK,5,process=rphost,p:processName=test,t:clientID=602,t:applicationName=1CV8C,t:computerName=SQL12,t:connectID=373070,SessionID=33,AppID=1CV8C,Regions=InfoRg43.DIMS,Locks=InfoRg43.DIMS Exclusive,WaitConnections=,Context='Форма.Вызов : ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Модуль.Команда1НаСервере
Форма.Форма.Форма : 7 : БД.Заблокировать();'
38:43.052001-0,TTIMEOUT,5,process=rphost,p:processName=test,t:clientID=606,t:applicationName=1CV8C,t:computerName=SQL12,t:connectID=373071,SessionID=36,AppID=1CV8C,WaitConnections=373070,Context=Форма.Записать : РегистрСведений.РегистрСведений1.ФормаЗаписи
38:43.052003-19999959,TLOCK,4,process=rphost,p:processName=test,t:clientID=606,t:applicationName=1CV8C,t:computerName=SQL12,t:connectID=373071,SessionID=36,AppID=1CV8C,Regions=InfoRg43.DIMS,Locks='InfoRg43.DIMS Exclusive Fld44="1" Fld45="1"',WaitConnections=373070,Context=Форма.Записать : РегистрСведений.РегистрСведений1.ФормаЗаписи)

Timeout и tlock жертвы пушуться друг за другом, т.е. ответ 2. Можете показать свой ТЖ при моделировании timeout?
« Последнее редактирование: Май 11, 2015, 11:19:48 am от Droni »

tivanitsky

  • Пользователь
  • **
  • Сообщений: 28
9.58 - 1 простым моделированием
У меня с 2 сессиями получилось так:
38:11.114021-3,TLOCK,5,process=rphost,p:processName=test,t:clientID=602,t:applicationName=1CV8C,t:computerName=SQL12,t:connectID=373070,SessionID=33,AppID=1CV8C,Regions=InfoRg43.DIMS,Locks=InfoRg43.DIMS Exclusive,WaitConnections=,Context='Форма.Вызов : ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Модуль.Команда1НаСервере
Форма.Форма.Форма : 7 : БД.Заблокировать();'
38:43.052001-0,TTIMEOUT,5,process=rphost,p:processName=test,t:clientID=606,t:applicationName=1CV8C,t:computerName=SQL12,t:connectID=373071,SessionID=36,AppID=1CV8C,WaitConnections=373070,Context=Форма.Записать : РегистрСведений.РегистрСведений1.ФормаЗаписи
38:43.052003-19999959,TLOCK,4,process=rphost,p:processName=test,t:clientID=606,t:applicationName=1CV8C,t:computerName=SQL12,t:connectID=373071,SessionID=36,AppID=1CV8C,Regions=InfoRg43.DIMS,Locks='InfoRg43.DIMS Exclusive Fld44="1" Fld45="1"',WaitConnections=373070,Context=Форма.Записать : РегистрСведений.РегистрСведений1.ФормаЗаписи)

Timeout и tlock жертвы пушуться друг за другом, т.е. ответ 2. Можете показать свой ТЖ при моделировании timeout?

У меня вот такой получается:


44:01.811040-5,TLOCK,5,process=rphost,p:processName=test_tivanitsky,t:clientID=139,t:applicationName=1CV8C,t:computerName=1CTESTSERVER2,t:connectID=245,SessionID=46,Usr=1с,AppID=1CV8C,Regions=AccRg76.RECORDER,Locks='AccRg76.RECORDER Exclusive Recorder=9:b5253c4a92e0b1bf11e4e7486e747b00',WaitConnections=,Context='Система.ПолучитьФорму : ВнешняяОбработка.Транз1.Форма
Форма.Форма.Форма : 48 : НаборЗаписей.Записать();'
44:01.827005-3,TLOCK,5,process=rphost,p:processName=test_tivanitsky,t:clientID=139,t:applicationName=1CV8C,t:computerName=1CTESTSERVER2,t:connectID=245,SessionID=46,Usr=1с,AppID=1CV8C,Regions='AccRg76.DIMS,AccRg76.DIMSAUX',Locks='AccRg76.DIMS Exclusive Period=[T"20150501000000":+] Account=467:a6343c4a92e0b1bf11e4f7c1f2165e5e Fld77="1" Fld78="1" Fld79="1",AccRg76.DIMSAUX Exclusive Period=[T"20150501000000":+] Account=467:a6343c4a92e0b1bf11e4f7c1f2165e5e Fld77="1" Fld78="1" Fld79="1"',WaitConnections=,Context='Система.ПолучитьФорму : ВнешняяОбработка.Транз1.Форма
Форма.Форма.Форма : 48 : НаборЗаписей.Записать();'
44:06.632026-3,TLOCK,5,process=rphost,p:processName=test_tivanitsky,t:clientID=143,t:applicationName=1CV8C,t:computerName=1CTESTSERVER2,t:connectID=246,SessionID=51,Usr=1с,AppID=1CV8C,Regions=AccRg76.RECORDER,Locks='AccRg76.RECORDER Exclusive Recorder=9:b5253c4a92e0b1bf11e4e9a54cb3239a',WaitConnections=,Context='Система.ПолучитьФорму : ВнешняяОбработка.Транз2.Форма
Форма.Форма.Форма : 24 : //'
44:26.661000-0,TTIMEOUT,6,process=rphost,p:processName=test_tivanitsky,t:clientID=143,t:applicationName=1CV8C,t:computerName=1CTESTSERVER2,t:connectID=246,SessionID=51,Usr=1с,AppID=1CV8C,WaitConnections=245,Context='Система.ПолучитьФорму : ВнешняяОбработка.Транз2.Форма
Форма.Форма.Форма : 24 : //'
44:26.661002-20013987,TLOCK,5,process=rphost,p:processName=test_tivanitsky,t:clientID=143,t:applicationName=1CV8C,t:computerName=1CTESTSERVER2,t:connectID=246,SessionID=51,Usr=1с,AppID=1CV8C,Regions='AccRg76.DIMS,AccRg76.DIMSAUX',Locks='AccRg76.DIMS Exclusive Period=[T"20150501000000":+] Account=467:a6343c4a92e0b1bf11e4f7c1f2165e5e Fld77="1" Fld78="1" Fld79="1",AccRg76.DIMSAUX Exclusive Period=[T"20150501000000":+] Account=467:a6343c4a92e0b1bf11e4f7c1f2165e5e Fld77="1" Fld78="1" Fld79="1"',WaitConnections=245,Context='Система.ПолучитьФорму : ВнешняяОбработка.Транз2.Форма
Форма.Форма.Форма : 24 : //'


Последним идет бедная жертва. Со своей попыткой наложения блокировки. и Ожиданием в 20013987

Только сейчас увидел, что время таймаута и последного тлока один в один. И во втором варианте есть Тлок. Похоже вы правы и варинт ответа 2.
« Последнее редактирование: Май 11, 2015, 01:48:35 pm от tivanitsky »

Platon1C

  • Пользователь
  • **
  • Сообщений: 31
  • ФИО: Андрей
9.46 - 4 вариант неверный 100% (RC ВСЕГДА снимается после чтения. Транзакция/не транзакция - неважно. Отсюда и "нерешенность" вопроса "неповторяемого чтения" в этом уровне изоляции. http://its.1c.ru/db/metod8dev#content:5839:hdoc). По-моему верный 3.
« Последнее редактирование: Май 11, 2015, 03:32:09 pm от Platon1C »

Droni

  • Модератор
  • Пользователь
  • *****
  • Сообщений: 97
9.46 - 4 вариант неверный 100% (RC ВСЕГДА снимается после чтения. Транзакция/не транзакция - неважно. Отсюда и "нерешенность" вопроса "неповторяемого чтения" в этом уровне изоляции. http://its.1c.ru/db/metod8dev#content:5839:hdoc). По-моему верный 3.
Платформа не снимает транзакционные блокировки, она этого делать не умеет. Отвечая на вопрос я был не внимателен и прочел как управляемые блокировки. Вы правы, RC снимает S блокировки после выполнения запроса на чтение, не дожидаясь конца транзакции. Тогда методом исключения остается только вариант 5.

Platon1C

  • Пользователь
  • **
  • Сообщений: 31
  • ФИО: Андрей
9.46 - 4 вариант неверный 100% (RC ВСЕГДА снимается после чтения. Транзакция/не транзакция - неважно. Отсюда и "нерешенность" вопроса "неповторяемого чтения" в этом уровне изоляции. http://its.1c.ru/db/metod8dev#content:5839:hdoc). По-моему верный 3.
Платформа не снимает транзакционные блокировки, она этого делать не умеет. Отвечая на вопрос я был не внимателен и прочел как управляемые блокировки. Вы правы, RC снимает S блокировки после выполнения запроса на чтение, не дожидаясь конца транзакции. Тогда методом исключения остается только вариант 5.
неверное замечание. У 1С есть собственный менеджер транзакционных блокировок, который по свойствам и функциям очень схож с менеджером SQLOS(http://its.1c.ru/db/metod8dev#content:5839:hdoc). Накладывать блокировки он сам хорошо умеет. А вот то, что он не умеет  снимать транзакционные  блокировки, я информации не нашел. У вас есть источник?
« Последнее редактирование: Май 11, 2015, 04:41:06 pm от Platon1C »

Droni

  • Модератор
  • Пользователь
  • *****
  • Сообщений: 97
В далеком 2007г. так называли управляемые блокировки 1С. Менеджер транзакционных блокировок (из указанного источника) - есть Механизм управляемых блокировок (http://its.1c.ru/db/v8doc#content:63:1:issogl1_9.3.механизмуправляемыхблокировок)