Функции с кэшированием результатов - result_cache
Всем привет!
Я решил сделать видео на тему, занявшую второе место в голосовании, которое было три недели назад.
В нем, я расскажу, что такое функции с кэшированием результатов - result_cache, рассмотрим концепцию и разберем подробней на простеньких примерах. Материал относится к advanced-уровню и я надеюсь, вы уже знаете, что такое функции в Oracle 😉
🎥 Смотреть видео - 6 мин
#видео #plsql #функции #result_cache
Всем привет!
Я решил сделать видео на тему, занявшую второе место в голосовании, которое было три недели назад.
В нем, я расскажу, что такое функции с кэшированием результатов - result_cache, рассмотрим концепцию и разберем подробней на простеньких примерах. Материал относится к advanced-уровню и я надеюсь, вы уже знаете, что такое функции в Oracle 😉
🎥 Смотреть видео - 6 мин
#видео #plsql #функции #result_cache
YouTube
Oracle функции с кэшированием результатов (result_cache) за 6 минут
В этом видео, я расскажу что такое функции с кэшированием результатов - result_cache, рассмотрим концепцию и разберем подробней на простеньких примерах. Материал относится к advanced-уровню и я надеюсь, вы уже знаете, что такое функции в Oracle.
https:/…
https:/…
Задача: смотрите пост вторника.
Решение:
1. Добавим в запрос условие rownum <= p_count_rows.
Сократит итоговый набор строк получаемых запросом с ”всех что есть в таблице”, до "меньше либо равно p_count_rows". Этого вполне хватит, чтобы понять, есть ли в таблице требуемое количество или его нет.
2. Сократим “портянку” с if. Вернем сразу результат условия. Такие мелкие “хитрости” я буду показывать в своем курсе “Oracle PL/SQL.Основы”
В итоге получится:
Данная функция, при условии не частого изменения таблицы xxx_tab, отличный кандидат на кэширование результата (result_cache). О подобного рода функциях я уже делал видос.
Если задача понравилась - 👍
#решениезадачи #plsql #result_cache
Решение:
1. Добавим в запрос условие rownum <= p_count_rows.
Сократит итоговый набор строк получаемых запросом с ”всех что есть в таблице”, до "меньше либо равно p_count_rows". Этого вполне хватит, чтобы понять, есть ли в таблице требуемое количество или его нет.
2. Сократим “портянку” с if. Вернем сразу результат условия. Такие мелкие “хитрости” я буду показывать в своем курсе “Oracle PL/SQL.Основы”
В итоге получится:
create or replace function is_xxx_has(p_count_rows number) return boolean isДополнительное условие:
v_cnt number;
begin
select count(*) cnt into v_cnt
from xxx_tab t
where rownum <= p_count_rows;
return v_cnt = p_count_rows;
end;
/
Данная функция, при условии не частого изменения таблицы xxx_tab, отличный кандидат на кэширование результата (result_cache). О подобного рода функциях я уже делал видос.
Если задача понравилась - 👍
#решениезадачи #plsql #result_cache
❤1👍1
Техническое собеседование в Тинькофф. Ответы
Список вопросов см. в посте вторника.
1️⃣ Секционирование
Одна из базовых тем для разработчика. Знать обязан каждый.
По тегу #секционирование можно найти несколько постов. Видов секционирования больше чем в этом посте. В 2021м я даже проводил обучение. Кстати, если наберется группа из 10 человек проведу еще. Кому интересно пишите в личку.
2️⃣ Индексы
🔹 про виды индексов было в посте на прошлой неделе.
🔹 как правильно выбирать столбцы: зависит от системы olt/dwh -> физической организации индекса B-tree, bitmap. Для B-tree важный критерий уникальность значений (дб максимальна), для bitmap - наоборот (пример, пол). + фишки с лидирующим столбцом. Как раз в курсе оптимизации будем разбирать.
3️⃣ Вопросы связанные с механизмом многоверсионности (UNDO)
🔹 помним, что измененные блоки/строки попадают в UNDO. При выполнении запроса - с UNDO выгребаются данные соответствующие определенным критериям.
🔹 два поста на классические ошибки - пост1, пост2 нужно понимать почему они возникают и как с ними бороться.
4️⃣ Блокировки
select for update + опции, dbms_lock, lock table, стратегии оптимистичная/пессимистичная, защелки в SGA.
5️⃣ Транзакции
вот прям по тегу #транзакции учим наизусть и этого хватит на все собеседования.
6️⃣ Многопоточность
Oracle это все же не Java. Тут нет такого многообразия механизмов. Все ограничивается набором из dbms_job, dbms_scheduler, dbms_parallel, хинт parallel.
7️⃣ Кэширование
Различные виды кэшей - кэши в SGA, #result_cache, #deterministic и самописные решения на основе коллекций + состояние пакета.
8️⃣ Оптимизация
Удивился когда обнаружил 37 постов по тегу #оптимизация В них есть частичный ответ на извечный вопрос “что делать, если запрос начал тормозить”. Опять же не рекламы ради скажу, что будем разбирать подробно это на курсе по оптимизации.
Пост получился длинноват. При том, что я не очень подробно ответил на все вопросы. Каждый можно знатно помусолить. Это, всего лишь, направления.
Не факт, что у вас будут те же вопросы 😉
Палец вверх, если зашло 👍
Обсудить в чатике 🫂
#решениезадачи #тинькофф #собеседование
Oracle Developer
Список вопросов см. в посте вторника.
1️⃣ Секционирование
Одна из базовых тем для разработчика. Знать обязан каждый.
По тегу #секционирование можно найти несколько постов. Видов секционирования больше чем в этом посте. В 2021м я даже проводил обучение. Кстати, если наберется группа из 10 человек проведу еще. Кому интересно пишите в личку.
2️⃣ Индексы
🔹 про виды индексов было в посте на прошлой неделе.
🔹 как правильно выбирать столбцы: зависит от системы olt/dwh -> физической организации индекса B-tree, bitmap. Для B-tree важный критерий уникальность значений (дб максимальна), для bitmap - наоборот (пример, пол). + фишки с лидирующим столбцом. Как раз в курсе оптимизации будем разбирать.
3️⃣ Вопросы связанные с механизмом многоверсионности (UNDO)
🔹 помним, что измененные блоки/строки попадают в UNDO. При выполнении запроса - с UNDO выгребаются данные соответствующие определенным критериям.
🔹 два поста на классические ошибки - пост1, пост2 нужно понимать почему они возникают и как с ними бороться.
4️⃣ Блокировки
select for update + опции, dbms_lock, lock table, стратегии оптимистичная/пессимистичная, защелки в SGA.
5️⃣ Транзакции
вот прям по тегу #транзакции учим наизусть и этого хватит на все собеседования.
6️⃣ Многопоточность
Oracle это все же не Java. Тут нет такого многообразия механизмов. Все ограничивается набором из dbms_job, dbms_scheduler, dbms_parallel, хинт parallel.
7️⃣ Кэширование
Различные виды кэшей - кэши в SGA, #result_cache, #deterministic и самописные решения на основе коллекций + состояние пакета.
8️⃣ Оптимизация
Удивился когда обнаружил 37 постов по тегу #оптимизация В них есть частичный ответ на извечный вопрос “что делать, если запрос начал тормозить”. Опять же не рекламы ради скажу, что будем разбирать подробно это на курсе по оптимизации.
Пост получился длинноват. При том, что я не очень подробно ответил на все вопросы. Каждый можно знатно помусолить. Это, всего лишь, направления.
Не факт, что у вас будут те же вопросы 😉
Палец вверх, если зашло 👍
Обсудить в чатике 🫂
#решениезадачи #тинькофф #собеседование
Oracle Developer
👍47❤1