|
ASE 15.5 слет плана оптимизации
|
|||
---|---|---|---|
#18+
День добрый всем. После перехода на 15.5 столкнулись с таким вот интересным поведением сервера. Иногда происходит слет плана оптимизации процедуры. (бывает на разных процедурах). В результате колво логических чтений может возрасти на 2-3 порядка. Так как таких процедур дергается много - сервер пригружается очень сильно. Достаточно просто перекомпилить ее (правда удается не сразу изза того что она используется) - все возвращается в норму. Сегодня утром поймали на одной из процедур. Она используется для заполнения локального кеша арма - выгребает изменения справочников. Процедура работает по таблицам справочников и их взаимосвязей. Изменения по этим таблицам идут весьма нечасто. То есть вариант съехавшей статистики из-за большого одномоментного изменения данных в одной из таблиц отпадает. Привожу примеры. Вот выборка из мон_дб по съехавшему вызову Код: plaintext 1.
Результаты SPIDInstanceID KPID ServerUserID BatchID SequenceInBatch SQLText 12330111359073684211"exec dbo.Cache_CompanyDebtParams 8196791'2011.09.07 07:42:02.283'" SPIDInstanceIDKPIDDBIDProcedureIDPlanIDBatchIDContextIDLineNumberCpuTimeWaitTimeMemUsageKBPhysicalReadsLogicalReadsPagesModifiedPacketsSentPacketsReceivedNetworkPacketSizePlansAltered RowsAffectedErrorStatusHashKeySsqlIdProcNestLevelStatementNumberDBNameStartTimeEndTime 12330111359073641850538695249533421100014000005120000011biplane09.09.2011 7:27:17.09009.09.2011 7:27:17.0901233011135907364185053869524953342113000000005120000012biplane09.09.2011 7:27:17.09009.09.2011 7:27:17.09012330111359073641850538695249533421140014000005120000013biplane09.09.2011 7:27:17.09009.09.2011 7:27:17.0901233011135907364185053869524953342112730001880005120000014biplane09.09.2011 7:27:17.09009.09.2011 7:27:17.09312330111359073641850538695249533421129889130380324925080005120300015biplane09.09.2011 7:27:17.09309.09.2011 7:28:46.00612330111359073641850538695249533421158000010005120000016biplane09.09.2011 7:28:46.00609.09.2011 7:28:46.0061233011135907364185053869524953342116200540200405120300017biplane09.09.2011 7:28:46.00609.09.2011 7:28:46.00612330111359073641850538695249533421179000000005120000018biplane09.09.2011 7:28:46.00609.09.2011 7:28:46.006123301113590736400421010052000005120000000biplane09.09.2011 7:27:17.09009.09.2011 7:28:46.010 Затем просто перекомпилировал ее и вызвал опять Код: plaintext 1.
SPIDInstanceID KPID ServerUserID BatchID SequenceInBatch SQLText 1218026214800391"exec dbo.Cache_CompanyDebtParams 8196791'2011.09.07 07:42:02.283'" И SPIDInstanceIDKPIDDBIDProcedureIDPlanIDBatchIDContextIDLineNumberCpuTimeWaitTimeMemUsageKBPhysicalReadsLogicalReadsPagesModifiedPacketsSentPacketsReceivedNetworkPacketSizePlansAltered RowsAffectedErrorStatusHashKeySsqlIdProcNestLevelStatementNumberDBNameStartTimeEndTime 121802621480041962539094145912916303804753501020480300015biplane09.09.2011 11:01:07.25309.09.2011 11:01:07.416121802621480041962539094145915800002000020480000016biplane09.09.2011 11:01:07.41609.09.2011 11:01:07.4161218026214800419625390941459162005404402020480300017biplane09.09.2011 11:01:07.41609.09.2011 11:01:07.41612180262148004196253909414591790000400020480000018biplane09.09.2011 11:01:07.41609.09.2011 11:01:07.416121802621480040090100520000020480000000biplane09.09.2011 11:01:07.25009.09.2011 11:01:07.42012180262148004196253909414591000140000020480000011biplane09.09.2011 11:01:07.25309.09.2011 11:01:07.2531218026214800419625390941459130000400020480000012biplane09.09.2011 11:01:07.25309.09.2011 11:01:07.25312180262148004196253909414591400140400020480000013biplane09.09.2011 11:01:07.25309.09.2011 11:01:07.2531218026214800419625390941459127000017100020480000014biplane09.09.2011 11:01:07.25309.09.2011 11:01:07.253 Вызов один и тотже. как видите логических чтений стало почти на 3 порядка меньше. В процедуре стоит форсплан и хинты на индексы. Что еще покрутить чтобы такого не было - даже не знаю. Может ктото сталкивался? Потому как возникает нередко. И несколько глупо ловить нагрузку, искать что поломалось и просто перекомпиливать. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 12:19 |
|
ASE 15.5 слет плана оптимизации
|
|||
---|---|---|---|
#18+
Код: plaintext
Adaptive Server Enterprise/15.5/EBF 18661 SMP ESD#4/P/x86_64/Enterprise Linux/asear155/2545/64-bit/FBO/Thu Jun 16 06:45:54 2011 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 12:20 |
|
ASE 15.5 слет плана оптимизации
|
|||
---|---|---|---|
#18+
On 09.09.2011 13:19, MichaelTim wrote: > Иногда происходит слет плана оптимизации процедуры. (бывает на разных > процедурах). В результате колво логических чтений может возрасти на 2-3 порядка. Что вы понимаете под "слет плана оптимизации процедуры" ? Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 13:59 |
|
ASE 15.5 слет плана оптимизации
|
|||
---|---|---|---|
#18+
MichaelTim, попробуйте убрать форсплан второй вариант : использовать abstract query plans ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 14:17 |
|
ASE 15.5 слет плана оптимизации
|
|||
---|---|---|---|
#18+
MasterZivOn 09.09.2011 13:19, MichaelTim wrote: Что вы понимаете под "слет плана оптимизации процедуры" ? То, что вместо 54к логических чтений происходит 32 млн. Время выполнения улетает в космос. План используется неправильный. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 15:59 |
|
ASE 15.5 слет плана оптимизации
|
|||
---|---|---|---|
#18+
komradMichaelTim, попробуйте убрать форсплан ну уже заметил что 15.5 нередко не обращает никакого внимания на форсплан :( 12.5.4 так никогда не поступала. Указан форсплан - джоинит таблицы в порядке. 15-шка както к этому порхладнее относится. komradMichaelTim, второй вариант : использовать abstract query plans Ну этот вариант я тоже уже думал. Но прописывать везде абстрактные планы....... Както уж совсем :( Надеялся всеже что можно както иным путем решить. Вот и обратился - сталкивался ктоот с этим или нет ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 16:02 |
|
ASE 15.5 слет плана оптимизации
|
|||
---|---|---|---|
#18+
On 09.09.2011 17:02, MichaelTim wrote: > То, что вместо 54к логических чтений происходит 32 млн. > Время выполнения улетает в космос. > План используется неправильный. Это происходит напропалую и в 12, и в 12.5, это вообще вполне себе нормальное явление. Не хватает места в процедурном кэше -- план вытесняется, вызывается процедура -- плана нет, строится новый, и он оказывается вдруг ДРУГИМ -- ах, какое горе-то. А старый строился -- ещё и статистика другая была, и данные в таблицах другие... > ну уже заметил что 15.5 нередко не обращает никакого внимания на форсплан :( > 12.5.4 так никогда не поступала. Указан форсплан - джоинит таблицы в порядке. > 15-шка както к этому порхладнее относится. forceplan -- это для Nested loop join-а только годится. 15-ка имеет в своём арсенале много других разных способов выполнения jOIN-ов, так что она может быть просто решает не использовать NL-JOIN. > Ну этот вариант я тоже уже думал. Но прописывать везде абстрактные планы....... > Както уж совсем :( А что вы думали. ASE -- это не игрушки. > Надеялся всеже что можно както иным путем решить. Вот и обратился - сталкивался > ктоот с этим или нет Крутите также optimizator goal или как его там (OLTP/DSS). set sortmerge on/off/ Вообще, можно было бы и запрос, и план выложить. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 18:49 |
|
|
start [/forum/moderation_log.php?user_name=Arhi9]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 752ms |
total: | 933ms |
0 / 0 |