|
Уменьшение количества блокировок при проведении | ☑ | ||
---|---|---|---|---|
0
DEVIce
11.11.11
✎
08:25
|
Как считаете, какая реализация будет способствовать блокировке транзакции:
Движения = Движения.Хозрасчетный; ... (тра-ля-ля) Движения.Записать(Ложь); или Движения = Движения.Хозрасчетный; Движения.Прочитать(); ... (тра-ля-ля) Движения.Записать(Истина); |
|||
1
DEVIce
11.11.11
✎
08:28
|
Второй вариант в случае если набор еще не был записан однозначно приводил к падению производительности (значительно увеличивалось время проведения документа) и пока документ проводился все остальные ждали, причем долго ждали.
Сейчас возникло подозрение, что первый вариант тоже работает не гуд в случае если набор записан. |
|||
2
ОбычныйЧеловек
11.11.11
✎
08:36
|
(0) надеюсь ты понимаешь разницу между эти двумя приведенными тобой вариантами?
|
|||
3
ОбычныйЧеловек
11.11.11
✎
08:38
|
И зачем там вообще "записать" ?
|
|||
4
DEVIce
11.11.11
✎
08:46
|
(2). Понимаю. Только не понимаю почему чтение незаписанного набора приводит к резкому падению производительности. Есть конечно предположение, что записей по регистратору (читай отбору) в таблице нет и поэтому блокируется вся таблица.
(3). Да, можно и без Записать, но в первом случае ранее записанные данные сотрутся. А так как код выполняем в подписке и по бух.регистрам в типовой запись указывается явно, то если набор не читать предварительно, то потрутся типовые движения. |
|||
5
milan
11.11.11
✎
08:47
|
При входе в обработку проведения не блокируются движения документа ?
(4) Если набор записан, то блокируется по измерениям набора записей, а если пустой, походу все блокируется |
|||
6
DEVIce
11.11.11
✎
08:48
|
Короче, в типовой намутили так, что что-то явно записывается и нужно читать предварительно, а что-то записывается уже автоматом при завершении проведения (что согласно описалову предпочтительнее). В итоге, приходится опытным путем высекать с каким регистром в каком документе как поступили. Ибо если читать движения, которые еще не записаны, то все встает колом.
|
|||
7
DEVIce
11.11.11
✎
08:51
|
(5). Нет, специально не блокирую, работаю с существующим набором. Просто он может быть и записан и не записан.
|
|||
8
DEVIce
11.11.11
✎
08:54
|
Посему и вопрос. С точки зрения производительности для записанного набора данных, что лучше:
1. Прочитать, добавить свои записи и записать с замещением. 2. Добавить записи и записать без замещения. Умом понимаю что в любом случае должны заблокироваться все записи по регистратору. А вот на практике как бы проверить. |
|||
9
milan
11.11.11
✎
14:44
|
(8) по измерениям движений регистратора блокируется.
|
|||
10
Axel2009
11.11.11
✎
14:46
|
блокируется по периоду. если в регистре нет записей старше чем твоя запись, то будут блочиться любые даты, выше самой старшей из регистра.
|
|||
11
Лефмихалыч
11.11.11
✎
14:47
|
(0) Конструкция Движения.Записать(Истина) приводит к последовательной записи двух наборов - сначала пустого, чтобы очистить, а потом того, который ты в обработке проведения заполнил.
|
|||
12
Лефмихалыч
11.11.11
✎
14:52
|
+(11) хотя это справедливо только для сведений
|
|||
13
milan
11.11.11
✎
15:09
|
(11) кстати не исключено, в апдейтах писали, что оптимизировали алгоритм записи регистров, по идее авто запись движений пройдет быстро ежели оне не поменялись. а вот очстка и запись новых, это зело тяжко как для самого регистра, так и для таблицы итогов
|
|||
14
Axel2009
11.11.11
✎
15:11
|
(13) ежели записи не менялись, то запись пройдет быстро еще со времен далеких 8.1
|
|||
15
DmitrO
11.11.11
✎
15:17
|
(0)во втором варианте пересчет итогов от штатных движений шел дважды: первый раз когда записывался набор от штатного функционала; а второй, когда набор записывался второй раз (в подписке), т.к. записывался снова весь набор (в том числе и штатные движения).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |