powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / странные тормоза на VIEW -- как бороться?
8 сообщений из 8, страница 1 из 1
странные тормоза на VIEW -- как бороться?
    #34556440
Vladimir Dyuzhev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выборка через некоторые вьюшки стали как-то безумно тормозить на ровном месте. Причем -- что важно! -- если взять текст view, и пересоздать с другим именем, то запрос через этот новый view исполняется мгновенно! (Разница -- 10 минут против 0.5 секунды). То есть view идентичен, но имеет другое имя. Мы в ступоре. Что это может быть?

План запроса анализировать нереально (для меня) -- он огромен. Да и по сути два одинаковых по тексту view должны давать одинаковый план. Не дают. Почему???

Немного бэкграунда:

DB2 8.x on AIX.

Есть кучка legacy views. Эти вьюшки используются приложением, коннектящимся к БД как юзер CBB. Схема же используется -- DB2IBBP. Схема CBB выставлена как alias для DB2IBBP.

Во view через раз таблицы то указаны с полной схемой (DB2IBBP.USER), то без схемы (например, просто CONTRACT). Для вторых, понятно, подставляется схема CBB. Поскольку CBB -- alias для DB2IBBP, то идем к тем же самым таблицам всё равно. Собственно, вся байда началась с попыток проставить везде полную схему, и с обнаружения, что новые вью работают во много раз быстрее. Но когда стали разбираться, и убрали квалификацию обратно, то новые вью по-прежнему работают быстро!

Шайтан-арба какая-то...
...
Рейтинг: 0 / 0
странные тормоза на VIEW -- как бороться?
    #34556793
RomanSavelyev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Планы можно легко проанализировать в QuestCentral (TuneSQL).
Что важно, то будет покрашено красным :)

И ещё. У вас статистика по таблицам и индексам обновляется регулярно? Не устарела ли случаем?
...
Рейтинг: 0 / 0
странные тормоза на VIEW -- как бороться?
    #34556887
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vladimir DyuzhevШайтан-арба какая-то...Да уж...
Вы рассказываете о DB2 действительно удивительные вещи:
1.
Как вам удалось создать алиас на схему?
В DB2 алиасы могут быть созданы на 4 вида объектов: table, view, nickame, alias.
Схемы среди них нет.
2.
View в DB2 не может в зависимости от имени пользователя обращаться к разным таблицам.
В момент создания view все неквалифицированные имена объектов квалифицируются. Для таблиц - это значение переменной current schema, установленное у пользователя в момент создания этой view.
Т.е., если у нас есть:
Код: plaintext
1.
create table user_a.tab ... ;
create table user_b.tab ... ;
и некто создает view:
create view some_schema.v as select * from tab;
то при
Код: plaintext
select * from some_schema.v;
фактически мы будем обращаться к tab в схеме, значение которой было прописано в переменной current schema у пользователя некто в момент создания view.
И такое положение вещей не зависит от того, какой пользователь (user_a, user_b или еще кто) делает запрос из view.

Так что, скорее всего, у вас есть таблицы одинаковой структуры в разных схемах, и в зависимости от того, кто создает эту view, у вас создаются фактически разные view, которые обращаются к разным таблицам...
...
Рейтинг: 0 / 0
странные тормоза на VIEW -- как бороться?
    #34559731
Vladimir Dyuzhev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinДа уж... Вы рассказываете о DB2 действительно удивительные вещи:

Ну, ничего удивительного -- я ж всё-таки жабокодер, а не DBA, мне позволительны некоторые пробелы. Однако суть от этого не меняется -- берется текст существующего view, создается его копия с другим именем -- и копия работает в сотни раз быстрее. Any ideas?

Про статистику -- это runstat? Гоняли вчерась. Безрезультатно.
...
Рейтинг: 0 / 0
странные тормоза на VIEW -- как бороться?
    #34559808
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если view удалить и создать заново с такимже именем? Скорость изменится?
...
Рейтинг: 0 / 0
странные тормоза на VIEW -- как бороться?
    #34560051
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Покажите оба плана запроса.
План в текстовом виде можно получить так:

db2expln -d your_db -u user-id password -q "select ... " -o bad_plan.txt -g -i
db2expln -d your_db -u user-id password -q "select ... " -o good_plan.txt -g -i
...
Рейтинг: 0 / 0
странные тормоза на VIEW -- как бороться?
    #34582197
Vladimir Dyuzhev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinПокажите оба плана запроса

Мне тут вежливо намекнули, что выкладывать план запроса и тем более текст самих view -- есть нарушение NDA, и лучше бы мне этого не делать. Но приглашенный DBA-аналитик ковырял проблему, говорил с IBM, и результат -- это, похоже, баг в оптимизаторе DB2:


During my investigation on slow response time reported by Vlad & Ujwal on SQL query, it has been identified that DB2 view CBB_GLOBALSTATUS is giving better response time when a query is calling a duplicate copy of this view and its dependent views, which is not correct way of doing it. I have discussed this matter with IBM and provided all required material (DB2 instance/database environment info) to IBM LAB. This kind of bug in DB2 is not reported by other users of UDB DB2 V8.1 FP11.

IBM support has created our database in their environment and replicate the problem. They has also tested this under FP14 but results are the same. It seams like that it is DB2 optimizer issue. I have been told by IBM that optimizer issues some time takes a bit longer( about a week) to find out the solution.
...
Рейтинг: 0 / 0
странные тормоза на VIEW -- как бороться?
    #34657645
Vladimir Dyuzhev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтобы закрыть тему -- есть такая песня, но by design. Не надо, типа, на одни и те же таблицы слишком много раз ссылаться.

IBM
Hi Om, as discussed, the nested use of the same view in a query causes a "common subexpression" (CSE). DB2 may or may not decide to use the CSE when applying the query predicates to produce the result set, depending on the various rules employed in optimizing the query. CSE's may be computed once and the same result set is used for other references. On the other
hand, DB2 may choose to reference the view separately. DB2 will choose
based on the various Optimizer and Query Rewrite rules. Based on these guidelines, DB2 chose to compute the CSE once for all references in this case. Unfortunately, this fell under an exception case which did not produce desirable results.

A rough guideline to use is if a CSE is referenced by more than 3 times or the total number of references to tables in the FROM clauses of the CSE is greater than 9. The view (or common subexpression, if you will) for this case in question is DB2IBBP.CBB_TO_BE_APPROVED_USER. It is referenced in the query 3 times (1 time directly in the FROM clause, 2 times from the view CBB_TO_BE_APPROVED_CONTRACT via view CBB_GLOBALSTATUS). So this condition is still okay (not more than 3 times).

However, CBB_TO_BE_APPROVED_USER has 14 references to tables. Count all the tables in the FROM clauses of the view definition including the FROM clauses of those subqueries in the output columns. And if any FROM clause references a view, further expand the view to all the tables in that view.
This exceeds the 9 references threshold.

Creating the replica views, DB2IBBP.CBB_TO_BE_APPROVED_USER_new and DB2IBBP.CBB_USER_new, and either changing DB2IBBP.CBB_GLOBALSTATUS view to use the new views or changing the query itself, provided the relief to this situation.

In summary, DB2 is working as designed. However, you can officially submit a redesign of this code component by submitting a Design Change Request
(DCR) with your IBM representative.

Regards,

Kheng M. Wah
<емыл вырезан -- зачем хорошего человека спаммить?>
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / странные тормоза на VIEW -- как бороться?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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