|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
WildSery, что хранить остатки за день - надо, чтоб кто-то делал закрытие дня или делать это автоматом (FB триггеров по времени вроде не умеет), то есть это должен делать человек, а товар может приходить и оприходываться ночью ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2021, 22:42 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
GrigoriyFomin (FB триггеров по времени вроде не умеет), то есть это должен делать человек ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2021, 22:54 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
GrigoriyFominа товар может приходить и оприходываться ночью Совершенно всё равно. Никто ведь не заставляет тебя закрывать сегодняшний день. День недельной давности закрывается даже проще. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2021, 00:23 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
GrigoriyFomin WildSery, что хранить остатки за день - надо, чтоб кто-то делал закрытие дня или делать это автоматом (FB триггеров по времени вроде не умеет), то есть это должен делать человек, а товар может приходить и оприходываться ночью Да не на день, а на текущую, грубо говоря, секунду. В оперативной работе, на которую приходится деятельность 80% сотрудников, нужны именно они. А бухгалтеры и аналитики пусть работают себе с журналом. Решение от Евгения Шавлюка для этого оптимальное, удачное применение бухгалтерского приёма в оперативном учёте. У бухгалтеров своя свадьба и у них всё должно быть по своему, вплоть до вообще своей отдельной базы во избежание лишних вопросов из внешнего мира, у аналитиков своя. Я вот делал для них не двойную запись, а приходы и расходы со знаком в тех же целях - получать результат через SUM. У него, пожалуй, проще, за счёт увеличения объёма данных. Я-то это проектировал когда прогрессивный корпоративный сервер был на двухголовом Р90 с рейдом аж на четырёх дисках по 1Гб, об объёмах приходилось думать очень внимательно. Так пережиток и живёт поныне. А насчёт вложенных селектов в запросах к действительно большим объёмам данных - когда я их вижу, указательный пальчик правой руки тянется к спусковому крючку пистолета :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2021, 03:23 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаЯ вот делал для них не двойную запись, а приходы и расходы со знаком в тех же целях Дед, ты не поверишь, но это и есть двойная запись: когда одно движение денег записывается дважды, в одно место с плюсом, а в другое - с минусом. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2021, 12:58 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Старый плюшевый мишкаЯ вот делал для них не двойную запись, а приходы и расходы со знаком в тех же целях Дед, ты не поверишь, но это и есть двойная запись: когда одно движение денег записывается дважды, в одно место с плюсом, а в другое - с минусом. Не, ты не понял. Или не совсем понял. Или я неправильно выразился. Или не совсем правильно. Или не полно. Или... Короче, примерно так у меня выглядит складская карточка в оперативном, не бух, учёте, тот самый журнал итогов складских операций Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Уж прости что не из Эксперта, WISQL запускается быстрее и вообще всё в одном окошке видно ;) Остаток - RZKOLINT, изменение - KOLINT, и вот оно при приходе положительное, при расходе отрицательное. При перемещении запасов между складами фирмы будет, разумеется, и вторая запись, после регистрации прихода на другом складе. И не факт, что того же товара и такое же количество, грузчики всё-таки люди, а людЯм, как известно, свойственно ошибаться и иногда совать не то, не туда и не столько. А при поступлении из внешнего мира и при уходе в оный второй записи не будет. Так что двойная запись тут такая... сусликоподобная, вроде и есть, а вроде и нету :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2021, 14:01 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаНе, ты не понял. Или не совсем понял. Или я неправильно выразился. Или не совсем правильно. Или не полно. Или... Да всё я понял. Просто тут надо иметь немного опыта ведения бухгалтерии на бумаге. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2021, 14:24 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
WildSery KreatorXXI А "суммы" разные? Если одинаковые, то зачем две операции? Бывают операции не парные (просто списание и просто приход). (для движений склада, не бухучёта) А ещё, кроме склада и суммы, бывают другие реквизиты записей, и они могут различаться. Есть о чём спорить. Вот я в своё время подсмотрел у грандов технику и так делаю. Есть получатель, есть отправитель, есть сумма. Есть ещё тип операции. Одна запись. Бухгалтерия в принципе также устроена. Дебет, кредит, сумма. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2021, 15:20 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
KreatorXXI Есть о чём спорить. Вот я в своё время подсмотрел у грандов технику и так делаю. Есть получатель, есть отправитель, есть сумма. Есть ещё тип операции. Одна запись. Бухгалтерия в принципе также устроена. Дебет, кредит, сумма. Вообще-то получатель и отправитель - это атрибуты-ключи транспортной партии, а не складской операции. И их в этой ТП может быть не по одному. СО с ТП связана, через соответствующие таблички, разумеется, но не всегда. А СО, связанная с движением запасов, - это обычно не выдача студенту буханки хлеба, а приёмка-отгрузка вагончика тонн на 60 со всякой тварью по паре внутре. И у этой СО тоже есть состав. А вот бухгалтерию эти нюансы редко интересуют, хотя случается. На грандство не претендую, если чо :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2021, 20:45 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
KreatorXXI, Суммы всегда одинаковые. Разные "склады" и "знак" Минус со "склада А" плюс на "склад Б". Для получения остатков на текущий момент суммируются значения по нужному складу ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2021, 23:14 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
Насчет получения остатков с одной таблицей хотел бы дополнить своим способом которым пользуюсь много лет: остатки хранятся в таблице движения датой "01.01.2100" со знаком минус соответственно остаток на любой момент выбирается SUM по датам > даты нужного момента. корректность остатков легко проверяется общим суммированием - сумма должна быть всегда 0 один из больших плюсов - остатки на самые используемые периоды получаются быстрее всего, кроме того старые даты легко отрезать в случае складирования в архив ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 11:11 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
a7exander, А когда пересчитывается '01.01.2100'? Или каждое движение добавляет и в эту дату? Остатки на эту дату изменяются обновлением вставкой или обновлением строки (тут возможны конфликты)? Обрезка данных и в моей модели не сложно. Т.к. остатки всегда считаются начиная от какой-то даты, то все что раньше можно без проблем обрезать ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 12:03 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
Шавлюк Евгений, строка на 01.01.2100 обновляется триггером при добавлении/удалении/изменении любой другой строки кроме этой даты. За много лет эта схема сбоев не давала в продакшене, правда нагрузки небольшие, до 40 пользователей работают ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 12:23 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
05.04.2021 12:23, a7exander пишет: > строка на 01.01.2100 обновляется триггером при добавлении/удалении/изменении любой другой строки кроме этой даты. > За много лет эта схема сбоев не давала в продакшене, правда нагрузки небольшие, до 40 пользователей работают с каким уровнем изоляции? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 12:25 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
Мимопроходящий, Везде read_committed в процедуре проводки после вставки еще контроль делается - SUM чтобы было 0, а если не то эксепшн думал если будут проблемы то вместо одной строки с ее апдейтами буду делать отдельную для каждой операции и потом ночью их в одну сжимать. Но работа устраивает, так что оставил так. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 12:38 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
05.04.2021 12:38, a7exander пишет: > > Везде read_committed дальше обсуждать нет смысла. удачи в ловле покемонов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 12:40 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
a7exander Шавлюк Евгений, строка на 01.01.2100 обновляется триггером при добавлении/удалении/изменении любой другой строки кроме этой даты. За много лет эта схема сбоев не давала в продакшене, правда нагрузки небольшие, до 40 пользователей работают Можно, конечно, предположить, что они "Повтор" нажимают, пока не нажмется. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 12:41 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
YuRock, Мимопроходящий Ну так это в любой схеме возможно, и с отдельной таблицей для остатков и с остатками помесячно, без разницы. Я лишь подсказал идею, которой пользуюсь сам - минимум дополнительный строк, очень простые SQL для получения остатков, максимальная скорость получения на последнюю дату, быстрый и простой метод верификации, минимум логики обвязки для работы далее кому какие шашечки - реализовываем по вкусу ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 12:49 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
YuRockНе очень понятно, как update в триггере мог за "много лет" не привести к конфликтам при работе 40 пользователей. Они продают разные товары. Поэтому каждый остаток изменяется максимум одним пользователем. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 12:50 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
05.04.2021 12:50, Dimitry Sibiryakov пишет: > Они продают разные товары. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 12:54 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
Мимопроходящий 05.04.2021 12:38, a7exander пишет: > > Везде read_committed дальше обсуждать нет смысла. удачи в ловле покемонов. Использование for update with lock при доступе к агрегатам обеспечит корректную работу для read_committed. Разве нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 13:46 |
|
помогите максимально оптимизировать
|
|||
---|---|---|---|
#18+
YuRock Не очень понятно, как update в триггере мог за "много лет" не привести к конфликтам при работе 40 пользователей. Можно, конечно, предположить, что они "Повтор" нажимают, пока не нажмется. Именно так. Безотносительно триггера - у меня завершение складской операции может продолжаться минут 10. Это, разумеется, крайний случай, когда в вагоне о 60 тоннах сотня наименований. Которые отстреливают в текущее состояние запасов и в ценовые группы, не говоря уж о резервах филиалов на товары. Короче, 17 страниц тексту ХП. Правда, там concurrency, работа в приращениях, а не присваиваниях, и 6 раз "повтор" нажимает application server, но за 20 с лихуем лет сообщение - попробуйте повторить позже - вылезало 4 раза. Это как раз случаи по 10 минут. В общем, каждая ложка хороша к своему обеду. Возможностей море, выбрать под свою ситуацию есть из чего, а панацеи нетути. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 22:56 |
|
|
start [/forum/topic.php?fid=40&gotonew=1&tid=1560068]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
13ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 180ms |
0 / 0 |