|
|
|
ASE 12.5: зависит ли view от индексов таблицы.
|
|||
|---|---|---|---|
|
#18+
Господа, такой вопрос. Если в таблице, на которой построен view изменяются индексы, то нужно ли при этом перекомпилять вьюху. По логике, индексы это дело оптимизатора, и хранить планы вместе с откомпиллированным кодом кажетя бессмысленным, но всё-таки не уверен на 100%. Хотелось бы услышать мнение по этому поводу. Заранее большое спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2009, 15:57 |
|
||
|
ASE 12.5: зависит ли view от индексов таблицы.
|
|||
|---|---|---|---|
|
#18+
Когда компилируется view, то на первой фазе проходит этап резолюции (SQL преобразовывается ао внутренне представление и имена объектов заменяются их id) и строится дерево запроса.. Оптимизация же проходит на втором этапе.. Когда же view выполняется то его план сохраняется в процедурном кеше.. Т.е. в вашем случае есть несколько ситуаций: если индекс был перестроен, и сервер не перегружался..- возможно что план view находится в процед. кеше, т.е. надо перекомпилировать view, чтобы оптимизатор сделал новый план. если индекс был перестроен, и сервер был перегружен..- то плана view в процед. кеше - нет, следовательно перекомплировать view, - не надо т.к. Оптимизатор сам найдет план запроса на основании сохраненного дерева запроса.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2009, 16:35 |
|
||
|
ASE 12.5: зависит ли view от индексов таблицы.
|
|||
|---|---|---|---|
|
#18+
moris пишет: > если индекс был перестроен, и сервер не перегружался..- возможно что > план view находится в процед. кеше, т.е. надо перекомпилировать view, > чтобы оптимизатор сделал новый план. Ой, что-то я сильно сомневаюсь в правдивости этих слов. Планы строятся на процедуры, триггера или запросы. View при этом расшивается (подставляется в исходный запрос), и, на сколько я знаю, и вообще-то это очень логично, плана на VIEW отдельного не строится. Следовательно, его нет в процедурном кэше и нет нужны очищать кэш при его использовании. Но с другой стороны, в кэше могут находится планы запросов и процедур, использующих эту view. Тогда надо пересоздавать, но не VIEW, а эти процедуры или запросы. Или выполнять их с with recompile один раз, чтобы заново наполнить процедурный кэш. Но если подходить чисто формально, то в документации сказано чётко и ясно -- при любых изменниях таблицы нужно пересоздать все объекты, ссылающиеся на эту таблицу, а значит и VIEW тоже. На практике мы НЕ пересоздаём VIEW, а переливаем нужные процедуры. Или выполняем их с with recompile один раз. Этого достаточно, но, естественно, только для этой конкретной процедуры. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2009, 17:22 |
|
||
|
ASE 12.5: зависит ли view от индексов таблицы.
|
|||
|---|---|---|---|
|
#18+
Всем большое спасибо Ситуация понятна - вьюху и использующие её процедуры и триггеры нужо будет перекомпиллить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2009, 05:52 |
|
||
|
ASE 12.5: зависит ли view от индексов таблицы.
|
|||
|---|---|---|---|
|
#18+
Kru wrote: > Ситуация понятна - вьюху и использующие её процедуры и триггеры нужо > будет перекомпиллить. Да говорю же, не обязательно. Только процедуры и триггера. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2009, 11:29 |
|
||
|
ASE 12.5: зависит ли view от индексов таблицы.
|
|||
|---|---|---|---|
|
#18+
MasterZiv, MasterZivОй, что-то я сильно сомневаюсь в правдивости этих слов. Согласен - план view не хранится в процедурном кеше.. Сохраняется только его резолюция. Потом при каждом запросе, использующего view - view либо выравнивается - подставляется в запрос (если view простой, и select его использующий не содержит join), Либо же идет оптимизация и компиляция вначале view отдельно от запроса.. и потом в момент компиляции запроса этот внутренний compiled view подставляется в запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2009, 12:09 |
|
||
|
ASE 12.5: зависит ли view от индексов таблицы.
|
|||
|---|---|---|---|
|
#18+
Я тут вспомнил, что есть хорошая процедура sp_recompile. Как я про эту процедуру мог забыть? :-) Т.е. если были какие-либо изменения в индексах таблицы, то можно просто выполнить sp_recompile таблица. После этого все зависимые от таблицы процедуры и триггеры должны будут перекомпиллиться перед 1м запуском. Кажется, что это хорошее решение, т.к. самому не надо заморачиваться что перекомпилять. Хотелось бы услышать мнение, насколько подобное решение надёжно. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2009, 18:26 |
|
||
|
ASE 12.5: зависит ли view от индексов таблицы.
|
|||
|---|---|---|---|
|
#18+
Kru пишет: > Хотелось бы услышать мнение, насколько подобное решение надёжно. Ну, если следовать документации, надо именно пересоздавать объекты. sp_recompile этого не делает. Она только очищает процедурный кэш от плана запросов всех объектов, зависящих от данного (как вычисляются зависимости, кстати, отдельный разговор, если по sysdepends, то надёжно это работать будет только для table & view.) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2009, 18:57 |
|
||
|
ASE 12.5: зависит ли view от индексов таблицы.
|
|||
|---|---|---|---|
|
#18+
MasterZiv Kru пишет: > Хотелось бы услышать мнение, насколько подобное решение надёжно. Ну, если следовать документации, надо именно пересоздавать объекты. sp_recompile этого не делает. Она только очищает процедурный кэш от плана запросов всех объектов, зависящих от данного (как вычисляются зависимости, кстати, отдельный разговор, если по sysdepends, то надёжно это работать будет только для table & view.) По зависимостям - зависимость вычисляется только для таблиц и только для триггеров и процедур из текущей базы. Как она её вычисляет я так и не смог понять. Там вызывается if (logexec() != 1). Что это за logexec() я так и не смог найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2009, 19:26 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=35894496&tid=2011105]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 170ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...