powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Оптимизирует ли Firebird повторное обращение к результатам view?
14 сообщений из 14, страница 1 из 1
Оптимизирует ли Firebird повторное обращение к результатам view?
    #39411822
арт2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется view, которое в свою очередь рассчитывается на основе других view и процедур. Выполняется расчет несколько минут во время чего клиентские приложения (написанные на Delphi) при обращении к базе естественно тормозят. Нужно это обычно раз в день -в обед, когда формируется заявка. Но так как клиентские приложения находятся на кассах, то естественно кассиры ругаются на тормоза. Так вот вопрос: если сделать первый расчет принудительно утром, когда они только приходят на работу и запускают свои приложения и к обеду ситуация изменится очень незначительно, будет ли Firebird при вторичном обращении к этому же самому view пересчитывать все заново с нуля? Либо же это как-то оптимизировано и во второй и последующие разы уже не будет занимать по несколько минут?
З.Ы. Речь идет об определении товаров-неликвидов - несколько сотен или тысяч наименований. С утра до обеда изменится от силы пара десятков наименований - что-то залежалое продадут и это уже не будет в обед неликвидом, хотя с утра было.
З.З.Ы. Firebird 2.5
...
Рейтинг: 0 / 0
Оптимизирует ли Firebird повторное обращение к результатам view?
    #39411827
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сомневаюсь, что view имеет какой-либо кэш.

Тут скорее проблема в решении: ощущение, что речь идет об остатках на начало суток и, соответственно, об индексе по дате.
...
Рейтинг: 0 / 0
Оптимизирует ли Firebird повторное обращение к результатам view?
    #39411828
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010,

копай в сторону хранимых агрегатов. view никогда не хранит вычисленные значения, это просто сохранённый текст запроса
...
Рейтинг: 0 / 0
Оптимизирует ли Firebird повторное обращение к результатам view?
    #39411832
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010, wadman дело говорит!
Загони выборку из view в селективную ХП, которая будет сливать данные в обычную таблицу со штампом времени и проверять, имеются ли в этой таблице актуальные данные. Если есть актуальные данные, возвращаем клиенту данные из таблицы, если нет - формируем актуальные данные, заливаем в таблицу, попутно возвращая их клиенту. На эту процедуру вешаем view с тем же именем и клиент не видит разницы.
...
Рейтинг: 0 / 0
Оптимизирует ли Firebird повторное обращение к результатам view?
    #39411835
арт2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок, всем спасибо за помощь, буду думать
...
Рейтинг: 0 / 0
Оптимизирует ли Firebird повторное обращение к результатам view?
    #39411957
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Посмотреть на планы выполнения, есть ли возможность где-то оптимизировать,
2. Если кассирам мешает этот пересчет, его можно запускать в отдельном потоке или даже в отдельном приложении по таймеру, результат куда-то записывать.
...
Рейтинг: 0 / 0
Оптимизирует ли Firebird повторное обращение к результатам view?
    #39411969
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S.G.,

какой план? какой поток?
Остатки считаются либо джобом каждые сутки/неделю/месяц, либо триггером на каждый чих.
...
Рейтинг: 0 / 0
Оптимизирует ли Firebird повторное обращение к результатам view?
    #39412054
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanS.G.,

какой план? какой поток?
Остатки считаются либо джобом каждые сутки/неделю/месяц, либо триггером на каждый чих.Я так понял, что в данном случае считается в клиентском приложении, и оттого оно тормозит, нет?
Иначе отчего что-то должно тормозить?
...
Рейтинг: 0 / 0
Оптимизирует ли Firebird повторное обращение к результатам view?
    #39412134
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S.G.wadmanS.G.,

какой план? какой поток?
Остатки считаются либо джобом каждые сутки/неделю/месяц, либо триггером на каждый чих.Я так понял, что в данном случае считается в клиентском приложении, и оттого оно тормозит, нет?
Иначе отчего что-то должно тормозить?
Не заметил такого в описании, тем более на кассах вряд-ли ставят мощные компьютеры.
...
Рейтинг: 0 / 0
Оптимизирует ли Firebird повторное обращение к результатам view?
    #39412164
арт2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тормозит сама база - проверял запустив view в ibexpert, приложение просто получает готовую инфу из view простым селектом. Думаю пойти по пути наименьшего сопротивления - задать job на утро при открытии БД
...
Рейтинг: 0 / 0
Оптимизирует ли Firebird повторное обращение к результатам view?
    #39412179
Василий №2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если можно изменять клиента, то как более простой вариант - запускать расчет в треде при запуске проги или в любой удобный момент, и кешировать результаты самому.
...
Рейтинг: 0 / 0
Оптимизирует ли Firebird повторное обращение к результатам view?
    #39412384
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий №2Если можно изменять клиента, то как более простой вариант - запускать расчет в треде при запуске проги или в любой удобный момент, и кешировать результаты самому.
Я примерно так делаю. После открытия "новой смены" в потоке рассчитываю кэш остатков на начало этой смены.

А если нет возможности изменять клиента - всегда можно написать еще одного - фоновую прогу, которая будет запускаться по расписанию.
...
Рейтинг: 0 / 0
Оптимизирует ли Firebird повторное обращение к результатам view?
    #39412421
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010Тормозит сама база - проверял запустив view в ibexpert
торможение может быть вызвано массой причин
- на сервере не хватает памяти
- слабая дисковая подсистема
- не хватает каких-то индексов запросу во view
- модель данных слишком денормализована
- и т.д.

Тем не менее, судя по исходному посту, проблема именно в предпоследнем пункте - на этапе разработки данных было мало, и повторный пересчет одних и тех же данных не вызывал проблем. Когда данных стало больше (и со временем становится еще больше) - разумеется появились тормоза, и периодическое елозенье по одним и тем же данным можно ускорить только переделкой структуры БД, с введением хранимых агрегатов.
Пример приведен тут
http://www.sql.ru/forum/964534/hranimye-agregaty-bez-konfliktov-i-blokirovok-recept
...
Рейтинг: 0 / 0
Оптимизирует ли Firebird повторное обращение к результатам view?
    #39412487
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

один мой коллега обожает view's.
У него в проекте их уже сотни полторы, наверное. Одна view поверх другой, потом еще и так далее.
Все работает ме-е-е-дленно, ибо первые view создавались, когда он только начинал осваивать FireBird (после MS Access). А потом там уже стало "черт ногу сломит".

- Распечатай, пожалуйста, отгрузки за прошлый месяц. Это долго?
- Нет, мгновенно: минут пять . У меня готовая view для этого есть...
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Оптимизирует ли Firebird повторное обращение к результатам view?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]