powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 12.5: зависит ли view от индексов таблицы.
9 сообщений из 9, страница 1 из 1
ASE 12.5: зависит ли view от индексов таблицы.
    #35894173
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, такой вопрос.

Если в таблице, на которой построен view изменяются индексы, то нужно ли при этом перекомпилять вьюху.

По логике, индексы это дело оптимизатора, и хранить планы вместе с откомпиллированным кодом кажетя бессмысленным, но всё-таки не уверен на 100%.

Хотелось бы услышать мнение по этому поводу.

Заранее большое спасибо
...
Рейтинг: 0 / 0
ASE 12.5: зависит ли view от индексов таблицы.
    #35894310
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда компилируется view, то на первой фазе проходит этап резолюции (SQL преобразовывается ао внутренне представление и имена объектов заменяются их id) и строится дерево запроса..

Оптимизация же проходит на втором этапе..

Когда же view выполняется то его план сохраняется в процедурном кеше..

Т.е. в вашем случае есть несколько ситуаций:

если индекс был перестроен, и сервер не перегружался..- возможно что план view находится в процед. кеше, т.е. надо перекомпилировать view, чтобы оптимизатор сделал новый план.

если индекс был перестроен, и сервер был перегружен..- то плана view в процед. кеше - нет, следовательно перекомплировать view, - не надо т.к. Оптимизатор сам найдет план запроса на основании сохраненного дерева запроса..
...
Рейтинг: 0 / 0
ASE 12.5: зависит ли view от индексов таблицы.
    #35894496
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
moris пишет:

> если индекс был перестроен, и сервер не перегружался..- возможно что
> план view находится в процед. кеше, т.е. надо перекомпилировать view,
> чтобы оптимизатор сделал новый план.

Ой, что-то я сильно сомневаюсь в правдивости этих слов.

Планы строятся на процедуры, триггера или запросы. View при этом
расшивается (подставляется в исходный запрос), и, на сколько я знаю,
и вообще-то это очень логично, плана на VIEW отдельного не строится.
Следовательно, его нет в процедурном кэше и нет нужны очищать кэш
при его использовании. Но с другой стороны, в кэше могут находится
планы запросов и процедур, использующих эту view. Тогда надо пересоздавать,
но не VIEW, а эти процедуры или запросы. Или выполнять их с with recompile
один раз, чтобы заново наполнить процедурный кэш.

Но если подходить чисто формально, то в документации сказано чётко
и ясно -- при любых изменниях таблицы нужно пересоздать все объекты,
ссылающиеся на эту таблицу, а значит и VIEW тоже.

На практике мы НЕ пересоздаём VIEW, а переливаем нужные процедуры.
Или выполняем их с with recompile один раз. Этого достаточно, но,
естественно, только для этой конкретной процедуры.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ASE 12.5: зависит ли view от индексов таблицы.
    #35895349
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем большое спасибо
Ситуация понятна - вьюху и использующие её процедуры и триггеры нужо будет перекомпиллить.
...
Рейтинг: 0 / 0
ASE 12.5: зависит ли view от индексов таблицы.
    #35895903
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kru wrote:

> Ситуация понятна - вьюху и использующие её процедуры и триггеры нужо
> будет перекомпиллить.

Да говорю же, не обязательно. Только процедуры и триггера.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ASE 12.5: зависит ли view от индексов таблицы.
    #35896065
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

MasterZivОй, что-то я сильно сомневаюсь в правдивости этих слов.

Согласен - план view не хранится в процедурном кеше.. Сохраняется только его резолюция.

Потом при каждом запросе, использующего view - view либо выравнивается - подставляется в запрос (если view простой, и select его использующий не содержит join), Либо же идет оптимизация и компиляция вначале view отдельно от запроса.. и потом в момент компиляции запроса этот внутренний compiled view подставляется в запрос.
...
Рейтинг: 0 / 0
ASE 12.5: зависит ли view от индексов таблицы.
    #35901279
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тут вспомнил, что есть хорошая процедура sp_recompile. Как я про эту процедуру мог забыть? :-)
Т.е. если были какие-либо изменения в индексах таблицы, то можно просто выполнить sp_recompile таблица.

После этого все зависимые от таблицы процедуры и триггеры должны будут перекомпиллиться перед 1м запуском.

Кажется, что это хорошее решение, т.к. самому не надо заморачиваться что перекомпилять.


Хотелось бы услышать мнение, насколько подобное решение надёжно.

Заранее спасибо.
...
Рейтинг: 0 / 0
ASE 12.5: зависит ли view от индексов таблицы.
    #35901341
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kru пишет:

> Хотелось бы услышать мнение, насколько подобное решение надёжно.

Ну, если следовать документации, надо именно пересоздавать объекты.
sp_recompile этого не делает. Она только очищает процедурный кэш
от плана запросов всех объектов, зависящих от данного (как вычисляются
зависимости, кстати, отдельный разговор, если по sysdepends, то
надёжно это работать будет только для table & view.)
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ASE 12.5: зависит ли view от индексов таблицы.
    #35901408
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Kru пишет:

> Хотелось бы услышать мнение, насколько подобное решение надёжно.

Ну, если следовать документации, надо именно пересоздавать объекты.
sp_recompile этого не делает. Она только очищает процедурный кэш
от плана запросов всех объектов, зависящих от данного (как вычисляются
зависимости, кстати, отдельный разговор, если по sysdepends, то
надёжно это работать будет только для table & view.)


По зависимостям - зависимость вычисляется только для таблиц и только для триггеров и процедур из текущей базы.

Как она её вычисляет я так и не смог понять. Там вызывается if (logexec() != 1).
Что это за logexec() я так и не смог найти.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 12.5: зависит ли view от индексов таблицы.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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