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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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


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