powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Кеширование запросов, как почистить?
8 сообщений из 8, страница 1 из 1
Кеширование запросов, как почистить?
    #36404069
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполняю запрос первый раз - 2 с лишним минуты, выполняю второй раз - 6 сек
Очевидно, что что-то закешировалось. Как очистить это что-то? А то я не могу понять насколько у меня запрос улучшился. Перегружать сервер не хотелось бы
...
Рейтинг: 0 / 0
Кеширование запросов, как почистить?
    #36404260
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. deactivate db -yourdb-
activate db -yourdb-

2. drop bufferpools -yourtbbpool-
create bufferpools -yourtbbpool-

____________________
Sincerely yours, MDanial
....................................
Блог кодографа , блог по db2 .
...
Рейтинг: 0 / 0
Кеширование запросов, как почистить?
    #36404316
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да это фактически та же перезагрузка, хоть и побыстрее.

(После чтения Кайта) я думаю, что надо следить не столько за временем выполнения запроса (которое может очень сильно варьировать, особенно на нагруженном сервере), сколько за некоторыми другими вещами.

Особенно за количеством логических чтений (logical reads в терминологии Oracle; к сожалению, я уже не помню DB2-шный аналог), т.е. чтений либо с диска, либо с буферного пула. Это куда более стабильная величина. А чем меньше логических чтений, тем выгоднее запрос. Потому что в наихудшем случае (когда в буферном пуле данных нет) он даст наименьшую нагрузку на диск, а также меньше вероятность того, что он вытеснит из буферного пула другие данные, которые могут понадобиться другим запросам.

(Это - считая, что диски - главный тормоз. С распространением и широким использованием быстрых SSD ситуация может поменяться).
...
Рейтинг: 0 / 0
Кеширование запросов, как почистить?
    #36404336
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как часто бывает - написал, отправил... и понял, что наврал.

Поскольку логические чтения могут относиться к одному и тому же блоку, их количество не связано прямо с использованием буферного пула, и их надо учитывать раздельно. Оптимизировать количество логических чтений важно именно тогда, когда буферный пул достаточно велик, чтобы удерживать все данные.
...
Рейтинг: 0 / 0
Кеширование запросов, как почистить?
    #36404341
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощение, Вы об этом Кайте говорите?
И если, честно я не особо понял Ваши комментарии по поводу логического чтение и буферпуллов. Если есть время, не могли бы, более точнее расписать. =)
____________________
Sincerely yours, MDanial
....................................
Блог кодографа , блог по db2 .
...
Рейтинг: 0 / 0
Кеширование запросов, как почистить?
    #36404349
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, Кайт кучу книжек написал, а ещё сайт ведёт ( http://asktom.oracle.com ).

Логическое чтение - фактически это обращение к буферному пулу (которое приведёт к "физическому" чтению с диска, если соответствующих данных в буферном пуле нет). Разумно ожидать, что это куда более стабильная величина, чем время исполнения.
...
Рейтинг: 0 / 0
Кеширование запросов, как почистить?
    #36404354
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю! Уже сам докумекал)) Просто вечер, первый день на работе после новогодних - тугодумный я сегодня.

А Кайта почему спросил - удостовериться хотел, что именно о том Кайте я подумал =). Еще раз спасибо.
____________________
Sincerely yours, MDanial
....................................
Блог кодографа , блог по db2 .
...
Рейтинг: 0 / 0
Кеширование запросов, как почистить?
    #36404869
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Абсолют1. deactivate db -yourdb-
activate db -yourdb-
В db2 нет явной команды сброса буферных пулов на диск.
Такой сброс происходит при выходе последнего пользователя из базы , если при этом база не была ранее явно активирована командой activate db.
Если база была ранее активирована командой activate db, то при выходе последнего пользователя из неё деактивация не происходит, и для деактивации надо явно выдать команду deactivate db.

mwolf,

Что значит "насколько у меня запрос улучшился"?
Если вы ничего не меняли, то всё улучшение (если, конечно, это не связано с параллельной активностью других сессий) заключается только в кэшировании.
В любом случае удобно пользоваться утилитой db2batch для тестирования запроса.
Типа такого что-то (в batch.sql - ваш запрос с символом ; в конце):
db2batch -d your_db_name -f batch.sql -r batch.res -c off -i complete -g off -msw all on -o r 0 p 5 e yes -s on
после этого можно посмотреть план запроса (если 'e yes' как в примере):
db2exfmt -d your_db_name -g -o exfmt.txt -n %% -s %% -# 0 -w -1
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Кеширование запросов, как почистить?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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