Страница 1 из 1

проблема union?

Добавлено: 25 июн 2008, 11:16
aaa3d
Firebird 1.5.3 Classic, Debian Linux, Dual Core

2 таблицы REG и OST для учета остатков товара по складам.

CREATE TABLE REG (
TW_ID ID /* ID = INTEGER NOT NULL */,
SHOP_ID ID /* ID = INTEGER NOT NULL */,
SKL_ID ID /* ID = INTEGER NOT NULL */,
DT DATE,
TW_KOL FLOAT,
ID ID /* ID = INTEGER NOT NULL */,
TYP ID /* ID = INTEGER NOT NULL */,
FRM_ID ID /* ID = INTEGER NOT NULL */
);

CREATE TABLE OST (
TW_ID INTEGER,
SKL_ID INTEGER,
TW_KOL DOUBLE PRECISION,
TM DATE
);

индексы имеются.

REG - примерно 2 000 000 записей, OST - примерно 100 000.

в REG добавляются и удаляются записи при проведении документов.
на REG есть триггеры, которые при вставке или удалении соответственно прибавляют или удаляют значения в OST.

//пример триггера.
CREATE OR ALTER TRIGGER REG_BI0 FOR REG
ACTIVE BEFORE INSERT POSITION 0
AS
begin
update ost set tw_kol = tw_kol+new.tw_kol, tm = 'now' where tw_id=new.tw_id and skl_id=new.skl_id;

if ( row_count = 0) then
insert into ost (tw_id, skl_id, tw_kol, tm)
values(new.tw_id, new.skl_id, new.tw_kol, 'now');
end


ввел такую схему пару дней назад для ускорения получения остатков

для проверки запускаю запросик:


select 1, cast(sum(tw_kol) as float) rr from reg
union
select 2, cast(sum(tw_kol) as float) os from ost

в случае запуска запроса без нагрузки на сервер возвращаются одинаковые значения. (LA 0.2-0.4).

сегодня была ситуация когда нагрузка выросла до LoadAverage 6-9.
(Строились отчеты, проводились документы, обрабазывалась синхронизация.) в итоге запрос выполнялся минут 15 (на низкой нагрузке выполняется секунд 20).

и запрос выдал разные значения..........
позже сервак разгрузился и опять были одинаковые результаты......

вопрос: почему были разные значения???

PS:
(нагрузку на сервак в 6-8 прошу не комментировать :D )

Добавлено: 25 июн 2008, 11:40
hvlad
Учись правильно изолировать тр-ции.

Добавлено: 25 июн 2008, 11:43
aaa3d
select 1, cast(sum(tw_kol) as float) rr from reg
union
select 2, cast(sum(tw_kol) as float) os from ost


где тут разные транзакции?

Добавлено: 25 июн 2008, 11:47
hvlad
Read committed тебе не подходит
Включай уже моск

Добавлено: 25 июн 2008, 12:00
aaa3d
хм.... хотел позлиться но сперва почитал доку и понял что лошара я....

спасибо.
суть проблемы понял, моск будет помнить

Добавлено: 25 июн 2008, 13:22
hvlad
aaa3d писал(а):хотел позлиться но сперва почитал доку
Правильный подход :) Может в FAQ ? :D