|
Пересчение управляемых блокировок на измерениях регистра | ☑ | ||
---|---|---|---|---|
0
vi0
19.04.14
✎
21:57
|
Добрый день
Проверяю как пересекаются блокировки устанавливаемые на измерения регистра. ИМЕЕТСЯ: Регистр сведений: Независимый, Непереодический Измерения: А, Б Всего две записи регистра: А 1 Б 2 А 3 Б 4 При тестировании сначала устанавливаю блокировку в первом сеансе и проверяю могу ли установить во втором. Код установки блокировки: (две схожих процедуры для обоих измерений) ----------------------------- НачатьТранзакцию(); бл = Новый БлокировкаДанных; э = бл.Добавить("РегистрСведений.р1"); э.УстановитьЗначение("А", А); // и УстановитьЗначение("Б", Б) во второй процедуре э.Режим = РежимБлокировкиДанных.Исключительный; бл.Заблокировать(); Предупреждение("Ок"); Результаты которые мне понятны: ---------------------------------------- Тест1: Первый сеанс: А=1 Ок Второй сеанс: Б=3 Ок Тест2: Первый сеанс: А=1 Ок Второй сеанс: А=1 Не установлена! Результаты в которых нужно разобраться: ---------------------------------------- Тест3: Первый сеанс: А=1 Ок Второй сеанс: Б=2 Ок Тест4: Первый сеанс: А=1 Ок Второй сеанс: Б=4 Не установлена! ВОПРОСЫ: - Почему в Тест3 получилось установить пересекающиеся блокировки? - Почему в Тест4 НЕ получилось установить НЕпересекающиеся блокировки? В т.ч. интересны ссылки на статьи и т.д. |
|||
1
vi0
19.04.14
✎
22:02
|
Опечатка в Тест1. Нужно так:
Первый сеанс: А=1 Ок Второй сеанс: А=3 Ок |
|||
2
neo_matrix_123
19.04.14
✎
22:44
|
можно поподробней про свойства измерений регистра....
|
|||
3
mistеr
19.04.14
✎
22:51
|
(0) Переменная "бл" это 5! Спасибо, поднял настроение.
|
|||
4
vi0
19.04.14
✎
23:00
|
Уважаемая публика, прошу прощения.
Накосячил в Тест2. Второй сеанс блокируется первым, как и ожидалось - мой первый вопрос снимается. Остался вопрос: Почему в Тест4 НЕ получилось установить НЕпересекающиеся блокировки? |
|||
5
vi0
19.04.14
✎
23:01
|
(4) опечатка - не тест2, а тест4 ))
|
|||
6
vi0
19.04.14
✎
23:03
|
Публикую результаты тестов заново:
Результаты которые мне понятны: ---------------------------------------- Тест1: Первый сеанс: А=1 Ок Второй сеанс: А=3 Ок Тест2: Первый сеанс: А=1 Ок Второй сеанс: А=1 Не установлена! Тест3: Первый сеанс: А=1 Ок Второй сеанс: Б=2 Ок Результаты в которых нужно разобраться: ---------------------------------------- Тест4: Первый сеанс: А=1 Ок Второй сеанс: Б=4 Не установлена! ВОПРОС: - Почему в Тест4 НЕ получилось установить НЕпересекающиеся блокировки? |
|||
13
vi0
19.04.14
✎
23:28
|
В общем, ладно. Итого имею:
Первый сеанс: А=1 Ок Второй сеанс: Б=4 Не установлена! Почему НЕ получилось установить НЕпересекающиеся блокировки? |
|||
14
vi0
19.04.14
✎
23:33
|
специально уточняю:
Измерение Б - не индексировано хотя, насколько я знаю, на управляемые блокировки это не влияет если измерение Б индексировать - то результаты те же |
|||
15
hhhh
19.04.14
✎
23:45
|
вроде SQL целиком страницу блокирует. А не по одной строчке.
|
|||
16
vi0
19.04.14
✎
23:46
|
(15) здесь использую управляемые блокировки
|
|||
17
hhhh
19.04.14
✎
23:58
|
компьютер перезагружаете между тестами?
|
|||
18
vi0
20.04.14
✎
00:03
|
(17) вы шутите?? естественно перегружаю!
|
|||
19
vi0
20.04.14
✎
09:03
|
уточню, что под "Не установлена" имею ввиду, что во втором сеансе при попытке установки блокировки возникает ожидание, которое далее переходит в таймаут
|
|||
20
mistеr
20.04.14
✎
14:34
|
(18) А надо еще и вилку из розетки вытаскивать.
|
|||
21
vi0
20.04.14
✎
22:22
|
подниму. все еще актуален вопрос
Почему НЕ получилось установить НЕпересекающиеся блокировки у регистра сведений с измерениями: А, Б и с двумя записями: А 1 Б 2 А 3 Б 4 Первый сеанс: А=1 Ок Второй сеанс: Б=4 Не установлена! |
|||
22
MadHead
20.04.14
✎
22:54
|
Похоже на эскалацию блокировок.
|
|||
23
MadHead
20.04.14
✎
22:56
|
sql на сколько знаю проводит эскалацию если очень много объектов для блокировки или идет нехватка памяти, по какому принципу эскалирует блокировки менеджер блокировок 1с я не знаю.
|
|||
24
vi0
20.04.14
✎
23:04
|
(23) нет, не эскалация точно
т.к. другие сочетания работают - см выше (в 8.2 эскалация начинается от 20000 записей) |
|||
25
1sanekmaloi1
21.04.14
✎
00:52
|
Скорее всего скуль блочит границу диапазона.
Добавь записей в регистр и повтори тест так чтобы записи не были соседними, хотя это в автоматическом режиме так должно быть, но все равно попробуй. |
|||
26
vi0
21.04.14
✎
06:43
|
(25) блокировки управляемые
|
|||
27
hhhh
21.04.14
✎
06:49
|
(26) скрины давайте. Тут же не все телепаты, за тысячи километров определять, где вы там накосячили.
|
|||
28
vi0
21.04.14
✎
06:52
|
Добавил записей
А Б 1 2 3 4 10 10 20 20 30 30 40 40 50 50 60 60 70 70 80 80 90 90 Первый сеанс: А=1 Ок Второй сеанс: Б=90 Не установлена! Вечером сделаю тест на большом количестве |
|||
29
vi0
21.04.14
✎
06:58
|
логика где то прослеживается - что это не первое измерение
но описаний такого поведения не помню |
|||
30
vi0
21.04.14
✎
06:59
|
(27) скрины чего?
|
|||
31
vi0
21.04.14
✎
07:06
|
Что касается соседних записей.
При А=1, А=2 блокировка накладывается успешно в обоих сеансах. Но в управляемых блокировках это и не должно влиять. Первый сеанс: А=1 Ок Второй сеанс: А=2 Ок |
|||
32
MrStomak
21.04.14
✎
08:03
|
Блокировка ставится на пространства блокировок.
Вы не уточняете пространство Б в четвертом тесте, поэтому используется весь размер пространства для блокировки. Т.е. пересечение по блокировке на всех записях Б в 1 сеансе и конкретной записи Б во втором сеансе. |
|||
33
MrStomak
21.04.14
✎
08:10
|
Другими словами, если переиначить на РН остатков товаров на складах, в первом сеансе ты блокироуешь позицию номенклатуры, во втором - конкретный склад. Как ты хотел бы, чтобы менеджер блокировок тут поступил?
|
|||
34
vi0
21.04.14
✎
08:41
|
(33) согласен, пространства пересекаются
если так изобразить то становится понятнее: А * * Б спасибо за пример с остатками, очень доходчиво |
|||
35
vi0
21.04.14
✎
08:44
|
Точнее вот так изобразить:
1 * * 4 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |