17.10.2006, 13:04 | #21 |
Участник
|
Цитата:
Причины: 1. "Дата достаточно поздняя" у вас находится близко к началу только потому, что вы недавно начали. Через пару лет даже очень поздние даты в 99.9% случаев будут находится очень далеко от первых проводок 2. Один "ограниченный запрос по складским проводкам" блокирует на чтение очень большой набор записей. Скорее всего, на очень долгое время (пока работает отчет). Блокировки одного ограниченного запроса очень быстро будут эскалированы на всю таблицу. В результьте одного "ограниченного запроса" очень велика вероятность deadlock'ов и того, что остальные не смогут работать "очень долгое время". Один ограниченный запрос может дать выигрыш в однопользовательских системах И практически никогда не дает выигрыша в многопользовательских. |
|
17.10.2006, 13:23 | #22 |
Участник
|
все, всем респект вопрос решился... всеми предлагаемыми способами
|
|
17.10.2006, 13:26 | #23 |
Участник
|
Цитата:
Сообщение от mazzy
Нет, не то же самое.
Причины: 1. "Дата достаточно поздняя" у вас находится близко к началу только потому, что вы недавно начали. Через пару лет даже очень поздние даты в 99.9% случаев будут находится очень далеко от первых проводок 2. Один "ограниченный запрос по складским проводкам" блокирует на чтение очень большой набор записей. Скорее всего, на очень долгое время (пока работает отчет). Блокировки одного ограниченного запроса очень быстро будут эскалированы на всю таблицу. В результьте одного "ограниченного запроса" очень велика вероятность deadlock'ов и того, что остальные не смогут работать "очень долгое время". Один ограниченный запрос может дать выигрыш в однопользовательских системах И практически никогда не дает выигрыша в многопользовательских. респект |
|
17.10.2006, 16:21 | #24 |
Member
|
Цитата:
Сообщение от mazzy
...
Один "ограниченный запрос по складским проводкам" блокирует на чтение очень большой набор записей. Скорее всего, на очень долгое время (пока работает отчет). ... Насколько я знаю, Аксаптовские отчеты (и формы тоже) используют грязное чтение и ничего не блокируют обычно (если в классе не наваять чего-нибудь для расчета данных для отчета, да еще и не обрамить это в транзакцию). По крайней мере на MS SQL так. Но если речь идет о создании строк журнала, то, скорее всего, выборка попадет внутрь транзакции и будет блокировка на чтение (или как там оно называется). Так вот будет ли разница в плане блокировки между одним большим запросом и перебором в рамках одной транзакции InventTable и расчетом остатков с помощью классов? Вопрос скорее общетеоретическо-блокировочный, нежели в рамках описанной выше задачи. Если кто может просто ссылку привести, где это на уровне домохозяек прописано, то это тоже будет хорошим ответом.
__________________
С уважением, glibs® |
|
17.10.2006, 16:33 | #25 |
Участник
|
Цитата:
1. Отчеты тут ни при чем. 2. Если грязное тение устраивает, перебирать в рамках одной транзакции совершенно не обязательно 3. Но если даже использовать одну транакцию, то все равно разница будет из-за возможных deadlock'ов Cуть в двух словах - внешний запрос блокирует на чтение либо: 1. InventTable, который невелик и редактируется очень редко 2. InventSum, который чуть больше и редактируется часто 3. InventTrans, который очень большой и редактируется часто Для интереса можно почитать книжку Еременко-Шашкова а также блог Еременко http://blogs.msdn.com/aeremenk/archi...15/666245.aspx |
|