FB 1.5.1 vs FB 1.0 - уменьшение скорости (FreeBSD)
Добавлено: 08 дек 2004, 12:42
при переходе на 1.5.1 заметили уменьшение скорости следующего запроса:
select d.PKey, h.ClientID, r.Cnt as Rest
from WaybillD d, WaybillH h, Goods g
LEFT JOIN Rest r ON g.GoodID = r.GoodID
where h.PKey = d.DocID and h.Typ in (1, 21) and d.GoodID = g.GoodID and d.Cnt > 0
and h.ClientID = 1702
and d.PKey not in (select distinct DataID from wd_certificates)
;
скорость выполнения:
FB 1.5.1 (FB-V1.5.1.4481 Firebird 1.5):
время выполнения - почти 8 минут
FB 1.0 (FB-V6.2.908 Firebird 1.0):
время выполнения - 4 секунды
FB 1.5.1 и 1.0 стоят на разных машинах (по скорости процессора первая раза в три медленнее. скорость работы с диском - примерно одинаковая), так что на абсолютное время тестов не обращайте большое внимание. перенос базы с 1.0 на 1.5.1 делался через только backup/restore (может я неправ?).
если из запроса убрать "d.PKey not in (select distinct DataID from wd_certificates)" то результаты такие:
скорость выполнения:
FB 1.5.1 (FB-V1.5.1.4481 Firebird 1.5):
время выполнения - 3 минуты
FB 1.0 (FB-V6.2.908 Firebird 1.0):
время выполнения - 5 секунд
смущает такая большая разница для версии 1.5.1... есть идеи как можно ускорить выполнение именно этого запроса на 1.5.1 ?
индексы после переноса вроде бы активны. во всяком случае, запрос
SELECT RDB$RELATION_NAME, RDB$INDEX_NAME, RDB$INDEX_INACTIVE
FROM RDB$INDICES WHERE RDB$RELATION_NAME NOT STARTING 'RDB$'
ORDER BY RDB$RELATION_NAME
возвращает поле RDB$INDEX_INACTIVE равное 0
select d.PKey, h.ClientID, r.Cnt as Rest
from WaybillD d, WaybillH h, Goods g
LEFT JOIN Rest r ON g.GoodID = r.GoodID
where h.PKey = d.DocID and h.Typ in (1, 21) and d.GoodID = g.GoodID and d.Cnt > 0
and h.ClientID = 1702
and d.PKey not in (select distinct DataID from wd_certificates)
;
скорость выполнения:
FB 1.5.1 (FB-V1.5.1.4481 Firebird 1.5):
время выполнения - почти 8 минут
FB 1.0 (FB-V6.2.908 Firebird 1.0):
время выполнения - 4 секунды
FB 1.5.1 и 1.0 стоят на разных машинах (по скорости процессора первая раза в три медленнее. скорость работы с диском - примерно одинаковая), так что на абсолютное время тестов не обращайте большое внимание. перенос базы с 1.0 на 1.5.1 делался через только backup/restore (может я неправ?).
если из запроса убрать "d.PKey not in (select distinct DataID from wd_certificates)" то результаты такие:
скорость выполнения:
FB 1.5.1 (FB-V1.5.1.4481 Firebird 1.5):
время выполнения - 3 минуты
FB 1.0 (FB-V6.2.908 Firebird 1.0):
время выполнения - 5 секунд
смущает такая большая разница для версии 1.5.1... есть идеи как можно ускорить выполнение именно этого запроса на 1.5.1 ?
индексы после переноса вроде бы активны. во всяком случае, запрос
SELECT RDB$RELATION_NAME, RDB$INDEX_NAME, RDB$INDEX_INACTIVE
FROM RDB$INDICES WHERE RDB$RELATION_NAME NOT STARTING 'RDB$'
ORDER BY RDB$RELATION_NAME
возвращает поле RDB$INDEX_INACTIVE равное 0