Организация работы Firebird на розничной точке. Проблема.
Организация работы Firebird на розничной точке. Проблема.
Добрый день.
Занимаюсь программой для учета на розничных точках (аптеках).
1-5 компов на кассовых местах с фиск регистраторами.
1 комп - сервер (работает заведующие аптекой).
Возникла проблема.
Начальство начало усложнять программу для заведующей.
Больше всего это коснулось таблицы заказа товара со склада.
Добавилось много операций именно на "сервере" - звгрузка в таблицу из файла, куча всяких расчетов типа запас, потребность, продажи, отказы и еще всякого добра.
Это все дело загружается пересчитывается от 20 мин до 3 часов
в зависимости от мощности компа, колва строк в каталоге товара, продаж (протокол).
Во время пересчета система сильно нагружается и клиенты неплохо притормаживают что влияет на скорость отпуска товара.
Компы- серверы прибл-но такой конфигурации:
CeleronD 2.6/512/80G
Подскажите плиз варианты решения проблемы.
От пересчета никуда не деться. Нужно менять компы- серверы?
Поможет ли замена на 2 ядерные?
СПС
Занимаюсь программой для учета на розничных точках (аптеках).
1-5 компов на кассовых местах с фиск регистраторами.
1 комп - сервер (работает заведующие аптекой).
Возникла проблема.
Начальство начало усложнять программу для заведующей.
Больше всего это коснулось таблицы заказа товара со склада.
Добавилось много операций именно на "сервере" - звгрузка в таблицу из файла, куча всяких расчетов типа запас, потребность, продажи, отказы и еще всякого добра.
Это все дело загружается пересчитывается от 20 мин до 3 часов
в зависимости от мощности компа, колва строк в каталоге товара, продаж (протокол).
Во время пересчета система сильно нагружается и клиенты неплохо притормаживают что влияет на скорость отпуска товара.
Компы- серверы прибл-но такой конфигурации:
CeleronD 2.6/512/80G
Подскажите плиз варианты решения проблемы.
От пересчета никуда не деться. Нужно менять компы- серверы?
Поможет ли замена на 2 ядерные?
СПС
Re: Организация работы Firebird на розничной точке. Проблема
А файл откуда берётся?Mironico писал(а):звгрузка в таблицу из файла
ладно по порядку:
1) файл с офиса (текст с разделителями) считывается в массив строк.
2) массив разбивается, идет проверка наличия кода товара в таблице. если код есть - обновляются некоторые поля, если нет добавляется новая строка.
3) идет перебор каталога товаров и если в нем есть код товара которго нет таб заказа создается в в последней новая строка.
4) перечитывается колонка остатков.
структура стандартная - таблица "товары" и подчиненная "партии"
из них двоих делается выборка с Sum().
выборка перебирается построчно, локейтом ищу по коду в таб заказа товар и переписываю туда колво.
5) заполняем колонку "последняя цена.
опять же делаю выборку из товары/партии по дате партии
опять перебираю выборку, локейтом в таб заказа ищу код и ставлю цену
6) продажи за 30 последних дней (из протокола продаж)
делаю выборку по коду товара из пр. продаж с sum() по колву.
перебираю выборку, локейтом ищу товар, ставлю кво продаж
7) перечитываем колонку "отказы покупателям"
делаю выборку за 14 дней из таблицы "отказы" с sum() по кву
перебираю, выставляю результат в таб заказа
перечитываю ожидаемый товар (файлы накладных пришли из офиса, они загружены но не проведены т.к. товар не привезли пока).
тут выборка из 2 таблиц накладные/строковая часть
снова выборка из них с sum() по кву, перебор, и обновление
таб заказа.
9) запас товара.
перебор таб заказа и расчет по формуле остаток товара /(кво продаж за мес/30)
10) потребность. похоже на предыдущий пункт
11) пересчет колонки заказанного уже товара но не полученного еще
тут делается выборка из 2 таблиц заказы и строковая часть заказов тоже с sum() по кву, и опять же локейтом ищем по коду и обновляем таб заказа.
вроде все.
1) файл с офиса (текст с разделителями) считывается в массив строк.
2) массив разбивается, идет проверка наличия кода товара в таблице. если код есть - обновляются некоторые поля, если нет добавляется новая строка.
3) идет перебор каталога товаров и если в нем есть код товара которго нет таб заказа создается в в последней новая строка.
4) перечитывается колонка остатков.
структура стандартная - таблица "товары" и подчиненная "партии"
из них двоих делается выборка с Sum().
выборка перебирается построчно, локейтом ищу по коду в таб заказа товар и переписываю туда колво.
5) заполняем колонку "последняя цена.
опять же делаю выборку из товары/партии по дате партии
опять перебираю выборку, локейтом в таб заказа ищу код и ставлю цену
6) продажи за 30 последних дней (из протокола продаж)
делаю выборку по коду товара из пр. продаж с sum() по колву.
перебираю выборку, локейтом ищу товар, ставлю кво продаж
7) перечитываем колонку "отказы покупателям"
делаю выборку за 14 дней из таблицы "отказы" с sum() по кву
перебираю, выставляю результат в таб заказа
перечитываю ожидаемый товар (файлы накладных пришли из офиса, они загружены но не проведены т.к. товар не привезли пока).
тут выборка из 2 таблиц накладные/строковая часть
снова выборка из них с sum() по кву, перебор, и обновление
таб заказа.
9) запас товара.
перебор таб заказа и расчет по формуле остаток товара /(кво продаж за мес/30)
10) потребность. похоже на предыдущий пункт
11) пересчет колонки заказанного уже товара но не полученного еще
тут делается выборка из 2 таблиц заказы и строковая часть заказов тоже с sum() по кву, и опять же локейтом ищем по коду и обновляем таб заказа.
вроде все.
Локейтом - это сильно.
Вот первый попавшийся - 3й пункт. "идёт перебор каталога...". Как именно "перебор"? Ищешь каждую запись что ли?
Мне почему-то кажется, что эти жалкие 20 тыс. строк можно было залить тупо во временную таблицу, а затем несколькими запросами/процедурами за пару минут (или даже секунд) пересчитать нужные агрегаты/значения.
Вот первый попавшийся - 3й пункт. "идёт перебор каталога...". Как именно "перебор"? Ищешь каждую запись что ли?
Мне почему-то кажется, что эти жалкие 20 тыс. строк можно было залить тупо во временную таблицу, а затем несколькими запросами/процедурами за пару минут (или даже секунд) пересчитать нужные агрегаты/значения.
Подскажите как запрос сделать не хватает знаний.
если есть 3 таблицы:
Tovars
id_tovar
Tovar_kod
и подчиненная Partions
id_tovar
kolvo
zakaz
tova_kod
kolvo
Не соображаю как сделать запрос с обновлением.
в таблицу zakaz должно попасть суммированное
количество из partions по коду товара tovar_kod.
Такой запрос бы многое решил но за неимением
нужных знаний и не пониманием как это реализовать
вынужден был делать перебор с локейтом.
Подскажите варианты пожалуйста.
Заранее благодарен.
если есть 3 таблицы:
Tovars
id_tovar
Tovar_kod
и подчиненная Partions
id_tovar
kolvo
zakaz
tova_kod
kolvo
Не соображаю как сделать запрос с обновлением.
в таблицу zakaz должно попасть суммированное
количество из partions по коду товара tovar_kod.
Такой запрос бы многое решил но за неимением
нужных знаний и не пониманием как это реализовать
вынужден был делать перебор с локейтом.
Подскажите варианты пожалуйста.
Заранее благодарен.