Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
Существует некая операция пересчета остатков (Sp на SQL Server7), которая действует по следующему алгоритму: 1) Удаляет все остатки за период пересчета. 2) Рассчитывает остатки заново. Во время операции пересчета остатков кому-то из пользователей может прийти в голову их просмотреть или выписать документ, в котором используются данные по остаткам, или внести приход(расход и т.д.), также запускающий процедуру расчета остатка. Посоветуйте, как развести данную ситуацию: 1) Блокировать таблицу остатков на время пересчета? 2) Переписать процедуру пересчета остатков на вариант без удаления остатков? 3) Еще что-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 06:08 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
А просто загнать это в единую транзакцию не устраивает ? После начала транзакции и внесения каких-либо изменений остальные будут ждать завершения своих запросов до завершения транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 06:11 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
Удобно сделать так: 1. Расчитываешь новые остатки во временную таблицу. 2. Открываешь транзакцию 3. Удаляешь старые остатки 4. Добавляешь новые из вр. таблицы. 5. Закрываешь транзакцию. Таким образом, длительная операция (расчет остатков) не попадает в транзакцию обновления, и транзакция (и соотв. блокировка) получаются короткими. Все довольны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 06:40 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
Есть еще один приём. Расчитываешь остатки в новую таблицу, а потом в одной транзакции дропаешь старую и переименовываешь новую в старую. Транзакция и блокировка получаются ну очень короткими. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 06:44 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
При этом возникает следующий вопрос - пока длится действие "Расчитываешь новые остатки во временную таблицу", могут произойти изменения в данных, по которым считаешь. Что делать в этом случае ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 06:50 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
2 GreenSunrise Неплохой вариант, но бывают случаи, когда пересчет занимает много времени. В процедуре пересчета остатков на самом деле считаются еще и учетные цены, т.е. корректируется таблица движения товара. Попробую использовать Ваш совет, думаю, что хуже от этого все равно не будет. Хотелось бы услышать, как кто реализовал расчет остатков товарной продукции в своих системах, как корректируются остатки в случае внесения изменений в документы движения, как добавляются остатки в случае появления нового движения. У меня реализован принцип появления новой записи в таблице остатка по дате возникновения нового движения. В другой системе записи остатков появляются на каждый день. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:03 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
2 AlexUnik Как то не понял ситуацию, остатки что, расчитываются в определенные моменты времени по всем товарам? Если я правильно предположил, то на мой взгляд у вас оишибка либо в схеме данных, либо довольно странны алгоритм пересчета. Насколько мне известно пересчет остатков дожен производится сразу после соотвествующией операции (например отпуск товара) и следовательно будет производится только над одной записью по данному товару. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:09 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
Если данные для расчета беруться один раз (одним запросом), то по барабану абсолютно, никакие изменения расчету не помешают. Если данные считываются несколько раз, то скинь их одноразовым чтением во временую табличку, а дальше колупай её сколько хочешь раз. Надо не бояться использовать временные таблички, ибо сервер их сам использует весьма интесивно. Естественно, если расчет могучий, то это скажется на работе пользователей тормозами. Но несколько замедлять работу пользователей при закрытии периода гораздо гуманнее, чем полностью блокировать им ввод данных и получение отчетов в течении существенного периода времени, что непременно произойдет, если залочить таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:10 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
> При этом возникает следующий вопрос - пока длится действие "Расчитываешь новые остатки во временную таблицу", могут произойти изменения в данных, по которым считаешь. Что делать в этом случае ? Именно поэтому я не использую временную таблицу для расчета остатков. Число транзакций, касающихся девственности остатков в нашей фирме очень велико. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:10 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
2 AlexUnik Запись добавляется? А почему не обновляется? Или Вам надо знать остатки на какие то моменты времени? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:12 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
А не лучше ли пересчитывать остатки сразу при занесении документа? В это время число изменений невелико и выполниться это должно очень быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:14 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
2 Genady Я уже упомянул, что таблица остатков (для удобства установки даты актуальности в отчете по остаткам т.д.) содержит записи остатков при каждом возникновении движения товара. Так что если кому вздумается подкорректировать или аннулировать движение товара (будьте уверены, вздумается), то все записи нужно пересчитывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:19 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
Перерасчитывать остатки при каждом телодвижении - порочный путь. Тормозами система будет отличаться. Все, что я говорил, касается случая, когда остатки перерасчитываются периодически (например, закрытие периода, дня, etc), а не при каждом вводе новых данных. Обычно делают так: берут остатки в расчитанной таблице остатков за закрытый период + расчитывают остатки на лету по операциям в открытом периоде. Так как в открытом периоде мало данных, то такой расчет происходит быстро. Насчет вр. табличек: их прелесть как раз в том, что они позволяют избежать блокировок. Впрочем, я не настаиваю. Каждому - свое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:20 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
2 SergSuper На самом деле, так все и делается. Но существует проблемная ситуация - документы движения у нас вносятся в разных местах и не только в Москве. Для расчета остатков в целом и необходима данная процедура - это легче, чем пытаться помирить несколько таблиц остаков ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:24 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
2 Глеб Уфимцев Я обеими руками за Ваше предложение. Так и проще и быстрее. Но некий организационный момент мешает его внедрить. Потом, представьте ситуацию - товар отгружен сегодня, в остатках это еще не проявилось и менеджер преспокойно выписывает счет на данный товар ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:32 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
2 AlexUnik Ну не знаю не знаю, по складскому учету у меня не очень большой опыт, но этот небольшой опыт мне подсказывает, что незачем хранить таким образом остатки, достаточно правильно отражать текущее положение на складе, а анулирование движения по моему в основном касается документов, подтверждающих это движение, таким образом при анулировании какого то движения Вы просто корректируете текущее положение на складе, т.е. обновляется одна строка для одного товара. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:33 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
>Потом, представьте ситуацию - товар отгружен сегодня, в остатках это еще не проявилось и менеджер преспокойно выписывает счет на данный товар Может в консерватории надо править? Товар отгружен а база не знает это знаете ли как то не очень хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:35 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
2 Genady А случай с несколькими базами в разных местах? А если Вашему начальству захочется посмотреть остатки неделей раньше по одному из складов? А формирование отчета по движению товара за определенный период? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:40 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
> Потом, представьте ситуацию - товар отгружен сегодня, в остатках это еще не проявилось и менеджер преспокойно выписывает счет на данный товар Так в этой ситуации как раз помогает то, что я писал "+ расчитывают остатки на лету по операциям в открытом периоде", что означает: менеджер при запуске отчета получит самый свежий и самый правильный остаток, так как сальдо по открытому периоду быстро посчитается и добавиться к расчитанным остаткам прямо в этой же процедуре отчета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:41 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
2 Genady Мое предпоследнее высказывание касалось Вашего предпоследнего. Одной строчкой в остатках не обойдешься. Последнее Ваше высказывание адресуйте Глебу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:43 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
2 Глеб Уфимцев А если в течение дня несколько раз пришли таблицы с движением товара из Красноярска, Ярославля и т.д? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:46 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
>А случай с несколькими базами в разных местах? А в чем проблема? >А если Вашему начальству захочется посмотреть остатки неделей раньше по одному из складов? Ну хорошо, хорошо, храните остатки по периодам, но если нужно анулировать движение и поправить остаток неужели нельзя править запись с остатком, который был посчитан по этому движению? Хотя бы дату вы знаете? >А формирование отчета по движению товара за определенный период? Ну а причем здесь остатки? Документов по движениям нет что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:46 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
2 Genady Существуют некие документы по движению товара на складе, например, за неделю: сальдо на начало недели-приход-расход-сальдо в конце недели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:50 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
2 Genady >А случай с несколькими базами в разных местах? Как раз этот случай недавно обсуждался на данной конференции (типа как объединить таблицы с данными по остаткам с разных серверов) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:52 |
|
||
|
Нужна ли блокировка в следующем случае?
|
|||
|---|---|---|---|
|
#18+
Сложение расчитанных остатков в закрытом периоде и расчитываемых "на лету" остатков в открытом периоде можно упростить и упорядочить применение такого бутерброда, если все это завернуть в одну вьюху, и везде эту вьюху использовать. Работает достаточно производительно, уж поверьте. Я так в одном проекте делал, может кому пригодится: процедура в фоновом режиме запускалась (раз в несколько минут шедулером) и дорасчитывала остатки по появившимся изменениям в товарно-денежных движениях, комплектуя таблицу остатков. Эта таблица входила во вьюху и туда же во вьюху входил расчет по нерасчитанным движениям. Все отчеты использовали только эту вьюху. Так как движений с нерасчитанными остатками было мало (всего за несколько минут всего несколько движений), то их расчет во вьюхе времени не занимал практически нисколько. Зато все имели корректные остатки на момент запуска отчета. Расчет остатков процедурой в фоновом режиме практически не тормозил никого, так как там применялись методы, о которых я уже писал (со вр. табличками). Кроме того, в этой процедуре дорасчитывались опять же только изменения с момента предыдущего запуска процедуры. Т.е. очень быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2001, 07:55 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32012016&tid=1825696]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 266ms |
| total: | 395ms |

| 0 / 0 |
