Всем добрый день.
Столкнулся со следующей проблемой -
Есть достаточно сложная расчетная задача. Порядка 30 стартовых параметров. В процессе расчета происходит вычисление еще порядка 70 параметров. Все они хранятся во "временной" таблице до окончания расчета(потом удаляются). сейчас расчет происходит за 7-14 сек(в зависимости от количества стартовых параметров). В общем меня это устраивало до момента, пока не появилась задача в проведение порядка 60 таких расчетов сразу(с изменением пары-тройки стартовых парметров) Время выполнения пропрорционально вырасло.... . Проведя анализ производительности выявил, что имеет место быть порядко 700тыс чтений из "временной" таблицы. Возник вопрос - если бы использовалась для хранения промежуточных данных не таблица а некая "таблице-подобная структура данных в памяти" изменилась ли производительность в лучшую сторону? Есть подозрения, что да...
Собственно вопрос - может что посоветуете по поводу "хранилища для промежуточных данных"....
Используется сервер FB 2.1.3
Хранение "временных" данных
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Re: Хранение "временных" данных
В первую очередь вместо "временных" таблиц надо попробовать по-настоящему временные.
Во вторую - попробовать пересмотреть логику, чтобы хватало локальных переменных.
Во вторую - попробовать пересмотреть логику, чтобы хватало локальных переменных.
Re: Хранение "временных" данных
1) Это GLOBAL TEMPORARY TABLE ? Попробую...Dimitry Sibiryakov писал(а):В первую очередь вместо "временных" таблиц надо попробовать по-настоящему временные.
Во вторую - попробовать пересмотреть логику, чтобы хватало локальных переменных.
2) Логику пересмотреть не получится - это расчет по динамическим формулам с условиями(некоторые ветки формулы могут не считаться в зависимости от значений параметров. Некоторые параметры расчитываются по другим формулам, некоторые по дереву коэфициентов, параметры могут быть числами, датами...
Re: Хранение "временных" данных
1) Попробовал - особо разницы в скорости работы нет...