Домены .RU/.РФ

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

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

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 тоже не подходит, управляемая блокировка сохраняется до конца транзакции

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