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