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

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.механизмуправляемыхблокировок)

Platon1C

  • Пользователь
  • **
  • Сообщений: 31
  • ФИО: Андрей
Droni, в вашем материале не нашел про работу менеджера... И как снимаются блокировки

Droni

  • Модератор
  • Пользователь
  • *****
  • Сообщений: 97
Droni, в вашем материале не нашел про работу менеджера... И как снимаются блокировки
Задайте конкретный вопрос про работу менеджера упр. блокировок, попробую ответить со ссылкой на документацию.
Цитировать
9.3.4. Работа с управляемыми блокировками средствами встроенного языка
Для управления блокировками в транзакции предназначен объект встроенного языка БлокировкаДанных. Экземпляр этого объекта может быть создан с помощью конструктора и позволяет описать необходимые пространства блокировок и режимы блокировок. Для установки всех созданных блокировок используется метод Заблокировать() объекта БлокировкаДанных. Если этот метод выполняется в транзакции (явной или неявной), блокировки устанавливаются и при окончании транзакции будут сняты автоматически.

Специального метода для снятия блокировок до конца транзакции в 1С - нет.

Platon1C

  • Пользователь
  • **
  • Сообщений: 31
  • ФИО: Андрей
Droni, в вашем материале не нашел про работу менеджера... И как снимаются блокировки
Задайте конкретный вопрос про работу менеджера упр. блокировок, попробую ответить со ссылкой на документацию.
Цитировать
9.3.4. Работа с управляемыми блокировками средствами встроенного языка
Для управления блокировками в транзакции предназначен объект встроенного языка БлокировкаДанных. Экземпляр этого объекта может быть создан с помощью конструктора и позволяет описать необходимые пространства блокировок и режимы блокировок. Для установки всех созданных блокировок используется метод Заблокировать() объекта БлокировкаДанных. Если этот метод выполняется в транзакции (явной или неявной), блокировки устанавливаются и при окончании транзакции будут сняты автоматически.

Специального метода для снятия блокировок до конца транзакции в 1С - нет.
Отстутсвие метода не указывает на отсутствие функционала. Самый близкий пример - создание сплиттера. Есть метод? Нет! А платформа его может сделать!

Droni

  • Модератор
  • Пользователь
  • *****
  • Сообщений: 97
Droni, в вашем материале не нашел про работу менеджера... И как снимаются блокировки
Задайте конкретный вопрос про работу менеджера упр. блокировок, попробую ответить со ссылкой на документацию.
Цитировать
9.3.4. Работа с управляемыми блокировками средствами встроенного языка
Для управления блокировками в транзакции предназначен объект встроенного языка БлокировкаДанных. Экземпляр этого объекта может быть создан с помощью конструктора и позволяет описать необходимые пространства блокировок и режимы блокировок. Для установки всех созданных блокировок используется метод Заблокировать() объекта БлокировкаДанных. Если этот метод выполняется в транзакции (явной или неявной), блокировки устанавливаются и при окончании транзакции будут сняты автоматически.

Специального метода для снятия блокировок до конца транзакции в 1С - нет.
Отстутсвие метода не указывает на отсутствие функционала. Самый близкий пример - создание сплиттера. Есть метод? Нет! А платформа его может сделать!
Хотите сказать, что платформа, сама будет снимать блокировки с объектов без вашего ведома посреди транзакции (ну раз нет методов, а функциональность есть)?

Platon1C

  • Пользователь
  • **
  • Сообщений: 31
  • ФИО: Андрей

Задайте конкретный вопрос про работу менеджера упр. блокировок, попробую ответить со ссылкой на документацию.

Вопрос следующий: как происходит информирование СУБД о завершении или открытии транзакции? Как происходит информирование СУБД о блокировках, который нужно снять?

Platon1C

  • Пользователь
  • **
  • Сообщений: 31
  • ФИО: Андрей
Droni, в вашем материале не нашел про работу менеджера... И как снимаются блокировки
Задайте конкретный вопрос про работу менеджера упр. блокировок, попробую ответить со ссылкой на документацию.
Цитировать
9.3.4. Работа с управляемыми блокировками средствами встроенного языка
Для управления блокировками в транзакции предназначен объект встроенного языка БлокировкаДанных. Экземпляр этого объекта может быть создан с помощью конструктора и позволяет описать необходимые пространства блокировок и режимы блокировок. Для установки всех созданных блокировок используется метод Заблокировать() объекта БлокировкаДанных. Если этот метод выполняется в транзакции (явной или неявной), блокировки устанавливаются и при окончании транзакции будут сняты автоматически.

Специального метода для снятия блокировок до конца транзакции в 1С - нет.
Отстутсвие метода не указывает на отсутствие функционала. Самый близкий пример - создание сплиттера. Есть метод? Нет! А платформа его может сделать!
Хотите сказать, что платформа, сама будет снимать блокировки с объектов без вашего ведома посреди транзакции (ну раз нет методов, а функциональность есть)?
Ну конечно! Именно это я и хочу сказать! А как работает снятие RC посреди транзакции? Понятно, что запросы обходят менеджер блокировок 1С, но что снимает блокировку посреди транзакции? А это иллюстрация вашего вопроса - метод прописан? нет! снято без нашего ведома? абсолютно! посреди транзакции? да, как раз посреди транзакции!
« Последнее редактирование: Май 11, 2015, 05:46:04 pm от Platon1C »

Droni

  • Модератор
  • Пользователь
  • *****
  • Сообщений: 97
Цитировать
Ну конечно! Именно это я и хочу сказать! А как работает снятие RC посреди транзакции?
Read Commited - это уровень изоляции транзакции СУБД, и снимает блокировку при RC СУБД (ее механизм блокировок). Платформенные же блокировки не снимаются.

Droni

  • Модератор
  • Пользователь
  • *****
  • Сообщений: 97
Цитировать
Понятно, что запросы обходят менеджер блокировок 1С, но что снимает блокировку посреди транзакции.
При запросах в транзакциях без использования явного блокирования (Блокировка Данных) устанавливаются только S блокировки СУБД, и только на время выполнения запроса.

Platon1C

  • Пользователь
  • **
  • Сообщений: 31
  • ФИО: Андрей
Цитировать
Понятно, что запросы обходят менеджер блокировок 1С, но что снимает блокировку посреди транзакции.
При запросах в транзакциях без использования явного блокирования (Блокировка Данных) устанавливаются только S блокировки СУБД, и только на время выполнения запроса.
Соглашусь, знаю, слышал, НО... Вот тут мне лично мне не понятен следующий момент: а где в СУБД пишется, что после исполнения запроса нужно снять блокировку? Ведь S можно держать сколь угодно... Ведь пресловутая служебная табличка блокировок СУБД содержит всего 4 колонки, где ничего такого нет... Возможно, служебные строки с блокировками генерятся, опять же НО: если мы установим явную разделяемую блокировку или просто сделаем запрос в RC - текст с указанием блокировок будет одинаковым...
« Последнее редактирование: Май 11, 2015, 06:06:25 pm от Platon1C »

Droni

  • Модератор
  • Пользователь
  • *****
  • Сообщений: 97
Соглашусь, знаю, слышал, НО... Вот тут мне лично мне не понятен следующий момент: а где в СУБД пишется, что после исполнения запроса нужно снять блокировку? Ведь S можно держать сколь угодно...
Это управляется СУБД с помощью уровней изоляции транзакции (в запросах на уровне СУБД указывает уровень изоляции, с которым нужно выполнять запрос (nolock, serialesible и т.д.)).

опять же НО: если мы установим явную разделяемую блокировку или просто сделаем запрос в RC - текст с указанием блокировок будет одинаковым...
Есть два механизма блокировок, платформенный и СУБД. Текст запроса будет одинаков, но платформа установит блокировку в своем менеджере блокировок, для СУБД ничего не измениться.

ilya138

  • Пользователь
  • **
  • Сообщений: 12
  • ФИО: Илья
Цитировать
Понятно, что запросы обходят менеджер блокировок 1С, но что снимает блокировку посреди транзакции.
При запросах в транзакциях без использования явного блокирования (Блокировка Данных) устанавливаются только S блокировки СУБД, и только на время выполнения запроса.
Соглашусь, знаю, слышал, НО... Вот тут мне лично мне не понятен следующий момент: а где в СУБД пишется, что после исполнения запроса нужно снять блокировку? Ведь S можно держать сколь угодно... Ведь пресловутая служебная табличка блокировок СУБД содержит всего 4 колонки, где ничего такого нет... Возможно, служебные строки с блокировками генерятся, опять же НО: если мы установим явную разделяемую блокировку или просто сделаем запрос в RC - текст с указанием блокировок будет одинаковым...

Platon1C, советую почитать про транзакции 1С (и их отличие от транзакций СУБД) и блокировки 1С (и их отличие от блокировок СУБД) на kb.1c.ru или на том же ИТС.
Просто судя по тому что Вы пишите Вы не совсем отличаете одно понятие от другого.
6 Спецов + Эксперт

Нуралиев

  • Пользователь
  • **
  • Сообщений: 66
  • я красавчиг
  • ФИО: Нуралиев
9.62 - 9.29 (одинаковы)
я бы выбрал вариант ответа 4, а не 2
ведь "Блокировка, не обусловлена бизнес-логикой приложения" (2-й вариант) не очень точно подходит к понятию "избыточная"например установив неправильную блокировку (не по тем данным) она же не будет считаться избыточной

Platon1C

  • Пользователь
  • **
  • Сообщений: 31
  • ФИО: Андрей
9.62 - 9.29 (одинаковы)
я бы выбрал вариант ответа 4, а не 2
ведь "Блокировка, не обусловлена бизнес-логикой приложения" (2-й вариант) не очень точно подходит к понятию "избыточная"например установив неправильную блокировку (не по тем данным) она же не будет считаться избыточной
dummies detected  :)
4 - это эскалация.

http://lmgtfy.com/?q=%D0%B8%D0%B7%D0%B1%D1%8B%D1%82%D0%BE%D1%87%D0%BD%D0%B0%D1%8F+%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0+%D1%8D%D1%82%D0%BE+%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0+%D0%BD%D0%B5+%D0%BE%D0%B1%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F

Нуралиев

  • Пользователь
  • **
  • Сообщений: 66
  • я красавчиг
  • ФИО: Нуралиев
9.62 - 9.29 (одинаковы)
я бы выбрал вариант ответа 4, а не 2
ведь "Блокировка, не обусловлена бизнес-логикой приложения" (2-й вариант) не очень точно подходит к понятию "избыточная"например установив неправильную блокировку (не по тем данным) она же не будет считаться избыточной
dummies detected  :)
4 - это эскалация.

http://lmgtfy.com/?q=%D0%B8%D0%B7%D0%B1%D1%8B%D1%82%D0%BE%D1%87%D0%BD%D0%B0%D1%8F+%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0+%D1%8D%D1%82%D0%BE+%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0+%D0%BD%D0%B5+%D0%BE%D0%B1%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F

спасибо

Wonrims

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

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

5 тоже не подходит, управляемая блокировка сохраняется до конца транзакции

skeptik_m

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

Alexander

  • Пользователь
  • **
  • Сообщений: 29
  • ФИО: Kulikov Alexander
мои 5 копеек к 9.17
последовательно блокирую записи в РС
в ТЖ вижу
42:33.612002-14746,TLOCK,5,process=rphost,p:processName=Test83,t:clientID=235,t:applicationName=1CV8C,t:computerName=WORK,t:connectID=175,SessionID=23,Usr=Иванов,AppID=1CV8C,Regions=InfoRg750.DIMS,Locks='InfoRg750.DIMS Exclusive Fld751=100000',WaitConnections=,Context='Форма.Вызов : ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Модуль.Команда1НаСервере
Форма.Форма.Форма : 23 : блок.Заблокировать();'
42:33.612006-3,TLOCK,5,process=rphost,p:processName=Test83,t:clientID=235,t:applicationName=1CV8C,t:computerName=WORK,t:connectID=175,SessionID=23,Usr=Иванов,AppID=1CV8C,Regions=InfoRg750.DIMS,Locks=InfoRg750.DIMS Exclusive,WaitConnections=,Context='Форма.Вызов : ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Модуль.Команда1НаСервере
Форма.Форма.Форма : 23 : блок.Заблокировать();'

то есть 1 - точно верно (хотя, ес-но, остальные варианты заведомо неверны)

LepRiKonS

  • Пользователь
  • **
  • Сообщений: 52
    • www.korolevpavel.ru
  • ФИО: Павел
9.10 - 3 c учебного тестирования неверно.

Neo111

  • Пользователь
  • **
  • Сообщений: 58

CHEBURASHKA

  • Новичок
  • *
  • Сообщений: 2
  • ФИО: Сергей
В 9.8 ответ разве не 5?

SoleSurvivor

  • Пользователь
  • **
  • Сообщений: 22
9.10 - 3 c учебного тестирования неверно.
Ага. Бред  :o

VladT

  • Новичок
  • *
  • Сообщений: 2
В 9.8 ответ разве не 5?
Согласно "Настольная книга 1С:Эксперта по технологическим вопросам. Издание 2" (главы 3.8 и 3.15) утверждения 1, 3 и 4 не верны.

edelnar

  • Новичок
  • *
  • Сообщений: 1
Согласно "Настольная книга 1С:Эксперта по технологическим вопросам. Издание 2" (главы 3.8 и 3.15) утверждения 1, 3 и 4 не верны.
Вроде как в обеих главах говорится о возможном наложении неявной управляемой блокировки, но 4ое утверждение то конкретно об объектной блокировке после метода ПолучитьОбъект(). Потому подходит ответ
5. Верны варианты 2 и 4
« Последнее редактирование: Июль 11, 2017, 12:58:12 pm от edelnar »

skameykin22

  • Новичок
  • *
  • Сообщений: 1
    • продажа  урн бетонных
  • ФИО: Скамейкин
И что теперь в итоге?

Ваша реклама могла бы быть тут...