Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Не верный план при ипользовании view / 8 сообщений из 8, страница 1 из 1
20.06.2010, 10:38
    #36696798
cherrex_Den
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верный план при ипользовании view
ASE 15.

Есть приложение, которое делает запрос
Код: plaintext
select * from simple_view where....

Приложение разрабатывалось давно и это не наша разработка. Т.е редактировать его мы не можем. После очередного reorg rebuild/update statistics, запрос к view начал работать очень медленно, вернее вообще не работать. Если выполнить запрос с set forceplan on, все работает нормально.

Вопрос Можно ли, не затрагивая приложение, как-то поправить ситуацию???
...
Рейтинг: 0 / 0
20.06.2010, 14:02
    #36696909
Alexzzy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верный план при ипользовании view
Начиная с ASE 15.0.3 можно настроить опримизатор запросов на "старую работу". С новым оптимизатором без изменения приложения можно в ступор попасть. Даже если сегодня все работает, то завтра можно получить что-угодно...
...
Рейтинг: 0 / 0
20.06.2010, 17:07
    #36697042
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верный план при ипользовании view
cherrex_Den wrote:

> Вопрос Можно ли, не затрагивая приложение, как-то поправить ситуацию???

Да, можно использовать сохранённые планы запросов (abstract query plans).
читайте хэлп на

set plan dump on

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.help.ase.15.5/title.htm

Ну и P&TG, главы с 11 по 14.

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.help.ase.15.5/title.htm

В cлучае прямого запроса, кстати, это будет ещё и ускорение обработки запроса,
потому что фаза оптимизации сокращается очень значительно при использовании
сохранённых планов.

Но AQP надо уметь читать и писать, это достаточно сложно. Придётся почитать и
поучиться сначала.

Совет: (это впрочем одна из стандартных процедур, предлагаемых в P&TG)
сначала установите дапм планов запросов в ON и поймайте существующий действующий
план запроса, хотя бы и с set forceplan on (потому что чтобы план собрался,
запрос вообще-то должен выполниться). План НЕ БУДЕТ использоваться повторно
автоматов ASE-сервером, так что ничего страшного. Получите план и, возможно
подредактировав немного, сохраните в потоке чтения (а брать вы его будете из
потока записи). Тогда ASE начнёт его уже использовать. С нуля писать
абстрактные планы очень сложно, лучше редактировать существующий.
Но естественно надо понимать, что делаешь, сначала.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
20.06.2010, 19:38
    #36697188
cherrex_Den
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верный план при ипользовании view
Пока спасло delete statistics , но не знаю, как это отразиться на других запросов. Пробовал даже подпихнуть AP в view, но по ходу ASE раскручивает запрос не обращая внимание на план в view. Попробую завтра использовать plan dump, если что, отпишусь!
...
Рейтинг: 0 / 0
21.06.2010, 00:35
    #36697514
cherrex_Den
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верный план при ипользовании view
Первое что остановило от dump plan:

Код: plaintext
create plan "select * from simple_view where storage_id = 8" "<plan>"

а если надо чтоб where storage_id = 9? Еще один план создавать? Хотя мог просто этот момент не дочитать в P&TG!

Второе: У нас используется Statement Cache, а BOL пишет

Statements are not cached if the abstract plan dump or abstract plan load parameters are enabled. That is, you cannot enable the statement cache and enable the abstract plan load and abstract plan dump at configuration parameters the same time
...
Рейтинг: 0 / 0
21.06.2010, 09:43
    #36697664
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верный план при ипользовании view
cherrex_Den wrote:

> create plan "select * from simple_view where storage_id = 8" "<plan>"
>
>
> а если надо чтоб where storage_id = 9? Еще один план создавать? Хотя мог
> просто этот момент не дочитать в P&TG!

Я не очень понял, но думаю, что ты имеешь в виду, что тебе
надо план переложить из stdout-а в stdin. Это группы планов.
В stdout оптимизатор только пишет планы, а из stdin только читает.

> Второе: У нас используется Statement Cache, а BOL пишет
>
> Statements are not cached if the *abstract plan dump or abstract plan
> load* parameters are enabled. That is, you cannot enable the statement

Ну а разве это не одно и то же ? Я считал, что оно одно и то же,
только руками или автоматом управляется.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
21.06.2010, 13:54
    #36698309
cherrex_Den
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верный план при ипользовании view
MasterZiv,

Вопрос такой:

я имею план с запроса
Код: plaintext
select * from simple_view where storage_id =  8 

прибиваю его к запросу

Код: plaintext
create plan "select * from simple_view where storage_id = 8" "<plan>"

применит ли оптимизатор этот же план если запрос будет

Код: plaintext
select * from simple_view where storage_id =  9 
???
...
Рейтинг: 0 / 0
21.06.2010, 14:38
    #36698425
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не верный план при ипользовании view
cherrex_Den wrote:

> применит ли оптимизатор этот же план если запрос будет
>
> select * from simple_view where storage_id = *9*

Нет. Об этом чёрным по белому написано в P&T.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Не верный план при ипользовании view / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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