Таблица со множеством апдейтов и мусор.
Таблица со множеством апдейтов и мусор.
Есть в проге одна талица - Ежедневный заказ товара.
Каждый день в нее загружаются из текстовика данные.
В основом это апдейты уже существующих строк
(обновляются цены,количества+всякие расчеты типа
запас товара, потребность, продажи за период).
Записей от 10 000 до 25 000 в зависимости от розн. точки.
Мусора собирается оч. много.
Свип интервал я увеличил до 100 000.
Периодически когда открывается форма с этим
набором данных автоматически запускается сборка мусора
и окно "задумывается" на несколько минут что тормозит
машину и как следствие кассовые места т.к. сервер
находится именно на этой машине где работают с
этой таблицей.
Еще с утра и вечером принудительно запускаю свип.
Посоветуйте как лучше справляться с мусором в данном случае.
Каждый день в нее загружаются из текстовика данные.
В основом это апдейты уже существующих строк
(обновляются цены,количества+всякие расчеты типа
запас товара, потребность, продажи за период).
Записей от 10 000 до 25 000 в зависимости от розн. точки.
Мусора собирается оч. много.
Свип интервал я увеличил до 100 000.
Периодически когда открывается форма с этим
набором данных автоматически запускается сборка мусора
и окно "задумывается" на несколько минут что тормозит
машину и как следствие кассовые места т.к. сервер
находится именно на этой машине где работают с
этой таблицей.
Еще с утра и вечером принудительно запускаю свип.
Посоветуйте как лучше справляться с мусором в данном случае.
Re: Таблица со множеством апдейтов и мусор.
Собирать его сразу после загрузки данных.
Кстати, свип-интервал тут вообще не при чём, похоже, ты не совсем понимаешь, что это.
Кстати, свип-интервал тут вообще не при чём, похоже, ты не совсем понимаешь, что это.
Re: Таблица со множеством апдейтов и мусор.
IBAnayst + лучше управлять транзакциями (вручную). Например, не держать долго активными обновляющие транзакции. тогда и мусор не будет накапливаться.Посоветуйте как лучше справляться с мусором в данном случае.
Re: Таблица со множеством апдейтов и мусор.
Признаюсь, туповат, что читал я доки что не читал..одно.
Учусь только на примерах и когда сам дойду.
Я юзаю ФБ 2 и ФИБЫ из Делфей.
Я с пом. FIBQuery запускаю ХП, автостарт транзанкции стоит и автокоммит.
Все обработки в вышеуказанной форме делаются с пом. ХП, в которых
и делаются эти апдейты.
Хотя загрузка из файла делается так.
Лопатится файл и загоняет в спец таблицу, а из
таблицы опать же с пом ХП делаются инсерты/апдейты
уже в самой таблице заказа.
После всех хп переоткрываю Датасет.
gfix -sweep срабатывает только если закрыть программу,
при открытой мусор не собирает.
Что я не так делаю? Хелп.
Учусь только на примерах и когда сам дойду.
Я юзаю ФБ 2 и ФИБЫ из Делфей.
Я с пом. FIBQuery запускаю ХП, автостарт транзанкции стоит и автокоммит.
Все обработки в вышеуказанной форме делаются с пом. ХП, в которых
и делаются эти апдейты.
Хотя загрузка из файла делается так.
Лопатится файл и загоняет в спец таблицу, а из
таблицы опать же с пом ХП делаются инсерты/апдейты
уже в самой таблице заказа.
После всех хп переоткрываю Датасет.
gfix -sweep срабатывает только если закрыть программу,
при открытой мусор не собирает.
Что я не так делаю? Хелп.
Re: Таблица со множеством апдейтов и мусор.
О, ребята, подскажите пожалуйста как
узнать прошла хп или не прошла.
Есть у меня проблема на кассовых местах.
ХП при продаже снимает проданное колво
с остатка товара. Почему-то не всегда
снимает.
Привожу саму хп.
Первый цикл должен снимать количества а второй
добавлять строки в протокол продаж.
fp1 - это таблица, где формируется содержимое чека.
tovars - товары
partions - партии.
узнать прошла хп или не прошла.
Есть у меня проблема на кассовых местах.
ХП при продаже снимает проданное колво
с остатка товара. Почему-то не всегда
снимает.
Привожу саму хп.
Первый цикл должен снимать количества а второй
добавлять строки в протокол продаж.
fp1 - это таблица, где формируется содержимое чека.
tovars - товары
partions - партии.
Код: Выделить всё
CREATE PROCEDURE FP1_MINUS_KOL (
dateadd_ timestamp,
n_chek integer,
n_z integer,
kassa_sn varchar(6))
returns (
tovar_kod_ integer,
kolvo_ double precision,
discont_number_ varchar(13),
ser_kod_ integer,
ser_ varchar(30),
skidka_ double precision,
summa_ double precision,
price_ double precision,
strixkod_ varchar(16),
tovar_name_ varchar(50),
id_part integer,
vsum double precision)
as
begin
for SELECT fp1.id_part, fp1.kolvo
FROM fp1
into :id_part, :vsum do
begin
update partions p
set p.kolvo=p.kolvo - :vsum
where p.id_part=:id_part;
end
for SELECT fp1.tovar_name,
fp1.strixkod,
fp1.price,
fp1.kolvo,
fp1.summa,
fp1.skidka,
fp1.ser,
fp1.ser_kod,
fp1.tovar_kod,
fp1.discont_number
FROM fp1
into tovar_name_,
strixkod_,
price_,
kolvo_,
summa_,
skidka_,
ser_,
ser_kod_,
tovar_kod_,
discont_number_ do
begin
INSERT INTO PROTOCOLSELLS
(
ID_PROTOCOL,
KASS_SN,
K,
TOVAR_KOD,
STRIXKOD,
TOVAR_NAME,
KOLVO,
PRICE,
SUMMA,
STATUS,
DATEADD,
CHEK,
SER,
SER_KOD,
SKIDKA,
DISCONT_NUMBER,
NUMZ
)
VALUES(
gen_id(GEN_PROTOCOLSELLS_ID,1),
:KASSA_SN,
1,
:TOVAR_KOD_,
:STRIXKOD_,
:TOVAR_NAME_,
:KOLVO_,
:PRICE_,
:SUMMA_,
0,
:dateadd_,
:N_CHEK,
:SER_,
:SER_KOD_,
:SKIDKA_,
:DISCONT_NUMBER_,
:N_Z
);
end
end
Re: Таблица со множеством апдейтов и мусор.
Видимо, не всегда запускается.
Либо, как вариант, множественный апдейт вызывает дедлок, процедура завершается с ошибкой, а у тебя в программе тупо TRY ... EXCEPT END; гасит всё.
Либо, как вариант, множественный апдейт вызывает дедлок, процедура завершается с ошибкой, а у тебя в программе тупо TRY ... EXCEPT END; гасит всё.
Re: Таблица со множеством апдейтов и мусор.
Да нету у меня попыток.
Вот все что делается.
Вот все что делается.
Код: Выделить всё
Query.SQL.Text:='select * from fp'+IntToStr(MForm.N_FP)+'_minus_kol(:p1,:p2,:p3,:p4)';
Query.ParamByName('p1').AsDateTime:=now();
Query.ParamByName('p2').AsInteger:=n_chek;
Query.ParamByName('p3').AsInteger:=numz;
Query.ParamByName('p4').AsString:=sn;
Query.ExecQuery;
Query.Close;
Re: Таблица со множеством апдейтов и мусор.
А где транзакции?
Re: Таблица со множеством апдейтов и мусор.
В Query стоит автокомит и авто старт транзакции.
Я думал что этого достаточно.
Я думал что этого достаточно.
Re: Таблица со множеством апдейтов и мусор.
то есть, фиг знает, когда транзакции стартуют, и когда завершаются.Я с пом. FIBQuery запускаю ХП, автостарт транзанкции стоит и автокоммит.
http://www.ibase.ru/devinfo/ibx.htm , читать в конце статьи про транзакции.Признаюсь, туповат, что читал я доки что не читал..одно.
http://www.ibase.ru/devinfo/mga.htmgfix -sweep срабатывает только если закрыть программу,
при открытой мусор не собирает.
мусор - это никому не нужные версии от ЗАВЕРШЕННЫХ транзакций. Которые собираются
как мусор только если эти версии не нужны АКТИВНЫМ транзакциям.
http://www.ibase.ru/devinfo/summary.htm
полный караул. что ты читал-то тогда ?В Query стоит автокомит и авто старт транзакции.
Я думал что этого достаточно.
![Smile :)](./images/smilies/icon_smile.gif)
Re: Таблица со множеством апдейтов и мусор.
Млин. А для чего ж тогда свойства автокоммит
и автостарт транзакции?
и автостарт транзакции?
Re: Таблица со множеством апдейтов и мусор.
Для умеющих их готовить. А может, для того, чтобы хоть что-нибудь работало вообще без кода.
Re: Таблица со множеством апдейтов и мусор.
а зачем тебе тогда ФИБПлюс? Переходи на BDE, там управлять транзакциями не надо, даже наоборот, проблематично, если захочется.Млин. А для чего ж тогда свойства автокоммит
и автостарт транзакции?
Вместо кверей - засандаль везде TTable, и вперед.
Re: Таблица со множеством апдейтов и мусор.
Боже, да не нервничайте так!
Откуда ж я знал что этими свойствами лучше
не пользоваться.
Разве не логично было с моей стороны
думать что их достаточно?
Там более в описаниях фибов везде пишется
про них как избавление программистов от лишней работы
с транзакциями.
Вот вы мне подсказали - теперь буду знать и переделывать.
Вопрос еще. Как насчет FIBDataSet?
Каждый инсерт и апдейт тоже руцями нужно транзакциями
управлять? Я имею ввиду когда гридом пользоваться.
Откуда ж я знал что этими свойствами лучше
не пользоваться.
Разве не логично было с моей стороны
думать что их достаточно?
Там более в описаниях фибов везде пишется
про них как избавление программистов от лишней работы
с транзакциями.
Вот вы мне подсказали - теперь буду знать и переделывать.
Вопрос еще. Как насчет FIBDataSet?
Каждый инсерт и апдейт тоже руцями нужно транзакциями
управлять? Я имею ввиду когда гридом пользоваться.
Re: Таблица со множеством апдейтов и мусор.
я не нервничаю, мне пофиг.Боже, да не нервничайте так!
Откуда ж я знал что этими свойствами лучше
не пользоваться.
по-моему нет, не логично.Разве не логично было с моей стороны думать что их достаточно?
это плохо. я даже полез посмотреть что там вТам более в описаниях фибов везде пишется
про них как избавление программистов от лишней работы с транзакциями.
http://www.devrace.com/ru/fibplus/articles/2169.php
написано. Прискорбно. много текста, какие-то странные действия, и никаких объяснений, почему и зачем это делается...
слушай, иди уже, почитайВопрос еще. Как насчет FIBDataSet?
Каждый инсерт и апдейт тоже руцями нужно транзакциями
управлять? Я имею ввиду когда гридом пользоваться.
www.ibase.ru/devinfo/ibx.htm
я третий раз предлагать не буду...