Перекомпиляция процедур и триггеров (постановка)
Материал из GedeminWiki
Версия от 15:42, 24 декабря 2006; SYSDBA (обсуждение | вклад)
Interbase компилирует процедуры и триггеры в двоичное представление и в таком виде хранит в базе данных. Планы запросов, входящих в процедуры и/или триггеры, не меняются между выполнениями, в том время как статистика индексов может существенно измениться. Предлагается добавить в Гедымин возможность перекомпиляции процедур и триггеров на существующих базах данных.
- Сделать три процедуры для обновления статистики индексов, рекомпиляции триггеров и хранимых процедур, с именами UpdateIndicesStat, RecompileTriggers и RecompileProcedures, соответственно. На вход каждой процедуры передается ссылка на компонент типа TIBDatabase -- текущее подключение к базе данных.
- Поместить вышеуказанные процедуры в отдельный юнит с именем gdUpdateIndiceStat.pas, расположенный в папке Common проекта Гедымин. Данный юнит не должен подключать никаких других юнитов за исключением стандартных библиотек Delphi и компонентов IBX. Информация о структуре БД должна получаться запросами из RDB$ таблиц.
- Проверить, что процедуры работы с триггерами и процедурами берут наименования мета-объектов в двойные кавычки. Убедиться что все правильно работает, добавив в базу данных хотя бы по одному триггеру и процедуре с пробелом в имени и с именем, содержащим символы разного регистра, и выполнив процедуры перекомпиляции.
- Оставить только один пункт меню "Обновление статистики индексов" в главном окне программы. В нем сделать вызов трех процедур: обновление статистики индексов, перекомпиляция процедур и триггеров (именно в таком порядке). Убедиться, что при выполнении действия из главной формы проверяется количество подключенных пользователей к БД.
- В диалоговое окно восстановление базы данных из архива добавить чек-бокс "Перекомпилировать процедуры" (там как раз есть одно свободное место). По умолчанию он должна быть включен. По этому чек-боксу вызывать процедуры перекомпиляции процедур и триггеров после восстановления БД из архива, в самом конце, после перестроения интервальных деревьев. После добавления чек-бокса проверить таб-ордер в диалоговом окне!