Oracle Developer👨🏻💻
رفتن به کانال در Telegram
🔝 канал о разработке в СУБД Oracle: SQL, PL/SQL, оптимизация, архитектура и другое... Backend-pro.ru - обучение по различным программам, связанных с backend-разработкой для ФЛ и ЮЛ. Основатель: @denis_dbd Кивилёв Денис Менеджер: @love_flowerrr Влада
نمایش بیشتر3 351
مشترکین
+224 ساعت
+247 روز
+2830 روز
در حال بارگیری داده...
کانالهای مشابه
ابر برچسبها
اشارات ورودی و خروجی
---
---
---
---
---
---
جذب مشترکین
ژوئیه '26
ژوئیه '26
+16
در 0 کانالها
ژوئن '26
+55
در 0 کانالها
Get PRO
مه '26
+41
در 0 کانالها
Get PRO
آوریل '26
+45
در 0 کانالها
Get PRO
مارس '26
+49
در 0 کانالها
Get PRO
فوریه '26
+72
در 0 کانالها
Get PRO
ژانویه '26
+32
در 2 کانالها
Get PRO
دسامبر '25
+42
در 0 کانالها
Get PRO
نوامبر '25
+84
در 0 کانالها
Get PRO
اکتبر '25
+50
در 0 کانالها
Get PRO
سپتامبر '25
+49
در 1 کانالها
Get PRO
اوت '25
+42
در 0 کانالها
Get PRO
ژوئیه '25
+42
در 0 کانالها
Get PRO
ژوئن '25
+97
در 0 کانالها
Get PRO
مه '25
+45
در 0 کانالها
Get PRO
آوریل '25
+48
در 0 کانالها
Get PRO
مارس '25
+46
در 0 کانالها
Get PRO
فوریه '25
+77
در 1 کانالها
Get PRO
ژانویه '25
+55
در 0 کانالها
Get PRO
دسامبر '24
+48
در 0 کانالها
Get PRO
نوامبر '24
+78
در 0 کانالها
Get PRO
اکتبر '24
+77
در 0 کانالها
Get PRO
سپتامبر '24
+70
در 1 کانالها
Get PRO
اوت '24
+58
در 1 کانالها
Get PRO
ژوئیه '24
+45
در 1 کانالها
Get PRO
ژوئن '24
+63
در 0 کانالها
Get PRO
مه '24
+59
در 0 کانالها
Get PRO
آوریل '24
+78
در 0 کانالها
Get PRO
مارس '24
+58
در 0 کانالها
Get PRO
فوریه '24
+73
در 0 کانالها
Get PRO
ژانویه '24
+72
در 0 کانالها
Get PRO
دسامبر '23
+54
در 0 کانالها
Get PRO
نوامبر '23
+67
در 0 کانالها
Get PRO
اکتبر '23
+90
در 0 کانالها
Get PRO
سپتامبر '23
+86
در 0 کانالها
Get PRO
اوت '23
+96
در 0 کانالها
Get PRO
ژوئیه '23
+68
در 0 کانالها
Get PRO
ژوئن '23
+54
در 0 کانالها
Get PRO
مه '23
+59
در 0 کانالها
Get PRO
آوریل '23
+76
در 0 کانالها
Get PRO
مارس '23
+59
در 0 کانالها
Get PRO
فوریه '23
+68
در 0 کانالها
Get PRO
ژانویه '23
+74
در 0 کانالها
Get PRO
دسامبر '22
+66
در 0 کانالها
Get PRO
نوامبر '22
+81
در 0 کانالها
Get PRO
اکتبر '22
+70
در 0 کانالها
Get PRO
سپتامبر '22
+72
در 0 کانالها
Get PRO
اوت '22
+74
در 0 کانالها
Get PRO
ژوئیه '22
+90
در 0 کانالها
Get PRO
ژوئن '22
+83
در 0 کانالها
Get PRO
مه '22
+73
در 0 کانالها
Get PRO
آوریل '22
+82
در 0 کانالها
Get PRO
مارس '22
+112
در 0 کانالها
Get PRO
فوریه '22
+79
در 0 کانالها
Get PRO
ژانویه '22
+96
در 0 کانالها
Get PRO
دسامبر '21
+102
در 0 کانالها
Get PRO
نوامبر '21
+140
در 0 کانالها
Get PRO
اکتبر '21
+73
در 0 کانالها
Get PRO
سپتامبر '21
+51
در 0 کانالها
Get PRO
اوت '21
+124
در 0 کانالها
Get PRO
ژوئیه '21
+144
در 0 کانالها
Get PRO
ژوئن '21
+150
در 0 کانالها
Get PRO
مه '21
+36
در 0 کانالها
Get PRO
آوریل '21
+48
در 0 کانالها
Get PRO
مارس '21
+159
در 0 کانالها
Get PRO
فوریه '21
+51
در 0 کانالها
Get PRO
ژانویه '21
+30
در 0 کانالها
Get PRO
دسامبر '20
+1 173
در 0 کانالها
| تاریخ | رشد مشترکین | اشارات | کانالها | |
| 04 ژوئیه | 0 | |||
| 03 ژوئیه | +3 | |||
| 02 ژوئیه | +8 | |||
| 01 ژوئیه | +5 |
پستهای کانال
Субботняя зарисовка преподавателя ☕️
Коллеги, всем привет! 👋
В рамках субботнего щитпостинга поделись небольшим наблюдением из жизни преподавателя.
За последние 6 лет через мои курсы прошло уже больше 300 человек. Обычно я даю выбор, как сдавать домашние задания: архивом, ссылка на Google Docs или через GitHub в виде Pull Request.
И знаете, что интересно? PR выбирают... буквально единицы.Думаю, причина понятна. В мире Oracle-разработки исторически не сложилась такая культура работы с Git, как, например, у Java-, .NET- или Python-разработчиков. SVN/Git есть, GitHub и GitLab есть, а вот привычки обсуждать код через Pull Request пока встречаются не так часто. Хотя именно такой формат, на мой взгляд, максимально удобен. Можно оставить комментарий прямо к конкретной строке, обсудить решение, посмотреть историю изменений. Это уже не просто «проверка домашки», а нормальный процесс code review. Например, на последнем потоке из более чем десяти человек только один отправлял домашнее задание через Pull Request. И, честно говоря, проверять его работу было гораздо комфортнее. При этом специально требовать Git от студентов я не хочу. На курсах и без того хватает нового материала, и заставлять человека параллельно осваивать еще один инструмент - не самая хорошая идея. Но когда разработчик уверенно пользуется Git и спокойно работает через Pull Request - это всегда большой плюс. Хорошей всем субботы! ☀️ #oracle #git #github #codeReview #разработка #Denis_Kivilev Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE
| 2 | Послевкусие после вебинара
Коллеги, это было супер! 4 часа погружения в тонкости по анализу планов запросов в Oracle.
Начали мы в составе 85 человек, а закончили примерно с 60(!).
Очень крутой результат. Спасибо вам за вашу поддержку, дорогие коллеги.
А самые терпеливые дождались бонусную тему: сравнение планов запросов Oracle и PostgreSQL.
Большинство проголосовало именно за эту тему 🤷🏻♂️
Разобрали: как получать планы запросов, как читать показатели в постгресовых планах, на что обращать внимание, как работает оптимизация в Pg и т.п.
Кстати, если тема с постгрей находит отклик, может и по ней вебинары делать. Накиньте в чатик.
Я обещал отправить ссылки
1️⃣ Тест для закрепления, всего 10 вопросов. Проверьте себя.
2️⃣ Экспресс-курс "Оптимизация Oracle SQL: Быстрый старт 🚀 "
3️⃣ Сервис по визуализации планов запросов в PostgreSQL
4️⃣ Забронировать участие в 3х месячном курсе "Оптимизация Oracle SQL"
Запись этого вебинара можно будет получить попав на следующий вебинар ✅
Расписание вебинаров
23.07 - Индексы и индексные доступы в Oracle
возможные бонусные темы на выбор:
🔸разбор индексов в PostgreSQL;
🔸устройство современного LSM-триггера как замена B-tree индекса;
🔸физически распотрошим блоки индекса в Oracle, посмотрим чего там прячут )
13.08 - Методы соединения таблиц
03.09 - Секреты работы с BigData/DWH
Ставьте напоминалки, бронируйте время, приглашайте коллег 👍🏻
С вами был Денис. Не переключайтесь 😉
#oracle #sql #optimization #execution_plan #вебинар #Denis_Kivilev
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE | 490 |
| 3 | پیام ویدیو | 507 |
| 4 | پیام ویدیو | 535 |
| 5 | Начинаем через 10 минут!
👉 ПРИСОЕДИНИТЬСЯ К ВЕБИНАРУ 👈 | 533 |
| 6 | Коллеги, напоминаем, что вебинар по оптимизации Oracle SQL уже через час 🔥
На вебинаре будем учиться читать планы запросов, присоединяйтесь, будет мегаполезно 😉
👉👉 ССЫЛКА НА ЭФИР 👈👈
#вебинар #Оптимизация
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE | 563 |
| 7 | پیام ویدیو | 593 |
| 8 | پیام ویدیو | 1 |
| 9 | Вебинар по оптимизации Oracle SQL уже завтра 🔥
Коллеги, всем привет! 👋
Завтра, 2 июля в 19:00 МСК, проведем вебинар по чтению планов запросов в Oracle. Это не обзорная лекция - это концентрированная практика на 2-3 часа с разбором реальных кейсов.
👉 Если вы работаете с Oracle и хоть раз ловили себя на мысли "смотрю в план и вижу фигу", этот эфир именно для вас.
Что разберём на вебинаре:
🔹 Что такое план запроса, какие виды бывают и зачем это знать в реальной работе - не в теории, а на живых примерах
🔹 Как правильно читать последовательность выполнения операций - это не так очевидно, как кажется большинству разработчиков
🔹 На какие колонки плана смотреть в первую очередь, а какие можно смело игнорировать
🔹 Разбор реальных кейсов: находим узкие места и объясняем, почему "вот здесь надо переписать"
🔹 Бонус, если останется время: сравним планы запросов Oracle и PostgreSQL ИЛИ как читать планы на 800 строк.
🧠 Умение читать планы - это не абстрактная теория, это нужно как на собеседованиях так и в реальной работе.
Приходите сами и зовите коллег, которые работают с Oracle или хотят разобраться в оптимизации SQL. Потом скажут спасибо 😉
Всем продуктивного вечера и до встречи на эфире! 🚀
#оптимизация_SQL #Oracle #базы_данных #вебинар #планы_запросов #обучение #карьера_в_IT
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE | 623 |
| 10 | Predicate Information - недооценённый блок 🔍
Друзья, всем привет! С вами Денис.
Казалось бы, блок Predicate Information в плане выполнения - штука всем известная. Но на практике его реальную силу многие недооценивают.
В новом видосе показал конкретный кейс (не выдуманный - взял прямо из нашего чатика 👇)
У Максима был запрос, и было не совсем очевидно, почему не работает секционирование. Хотя ключ секционирования участвует в предикатах.
Именно блок Predicate Information дал ответ.
Вот как один блок в плане запроса может сэкономить вам часы отладки.
И традиционно зову на бесплатный вебинар 🎓
📅 2-го числа - читаем и анализируем планы выполнения запросов в Oracle SQL
Буду стараться сжать материал, но честно предупреждаю - часа на 2-3 зависнем точно 😄
Так что запасайтесь водичкой и приходите. Будет интересно 🔥🔥🔥
Всех жду 🤝
#oracle #sql #optimization #execution_plan #вебинар #Denis_Kivilev
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE | 601 |
| 11 | Анонс вебинара по оптимизации Oracle SQL 🔥
Коллеги, всем привет! 👋
2 июля в 19:00 МСК проведу вебинар по чтению планов запросов в Oracle - концентрированная практика без воды, 2-3 часа реальных технических знаний.
Что будет на вебинаре ❓
Ведущий - Денис Кивилев. Программа:
📚 Что такое планы запросов, какие виды бывают и зачем они нужны в реальной работе
🤩 Как правильно читать последовательность выполнения операций - это не так очевидно, как кажется
👨💻 На какие колонки в плане обращать внимание, а какие можно игнорировать
💡 Разбор реальных кейсов - применим знания на практике
🔷 Расскажу про курс по Оптимизации
Если останется время и будет желание - сравним планы запросов в Oracle с PostgreSQL.
⚠️ Несмотря на сжатый формат, это реальная возможность прокачать навык, который постоянно нужен в работе.
Умение читать планы запросов - это не абстрактная теория, а конкретный инструмент, который помогает находить узкие места, ускорять запросы и объяснять коллегам, почему "вот здесь надо переписать".
Итак, коллеги, подытожим:
🗓 Вебинар пройдет 2 июля в 19:00 МСК - чтение планов запросов в Oracle.
Ссылка будет опубликована в канале 🔗
Если вы хотите разобраться в планах запросов системно и с конкретными примерами - приходите на вебинар.🔥
Это 100% вам пригодится в работе или на собесе.
Обязательно приглашайте коллег. Потом они вам спасибо скажут 😉
Всем продуктивной недели! 🚀
P.S. на скринах отзывы с предыдущих вебинаров и марафона
#оптимизация_SQL #Oracle #базы_данных #вебинар #планы_запросов #обучение #карьера_в_IT
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE | 793 |
| 12 | 🔥ТОП ПОСТОВ за ИЮНЬ месяц, которые вы могли пропустить
Коллеги, всем привет! 👋
Как и говорили ранее, каждое последнее воскресенье месяца мы будем публиковать обзоры на наши посты.
Хотим напомнить, что у нас на канале выходит очень много полезного и интересного материала, и вы 100% могли что-то пропустить.
Обязательно делитесь постами с коллегами и друзьями!
Впереди много интересного 🤗🔥
Посты про мок-собеседования и прочие темы
▫️ Мок-собеседование - это не экзамен. Это способ не провалить реальное интервью 🔥👌
▫️ Денис, а ты сам то учишься? Рассказ об обучении, которое проходит Денис.
▫️ Старт 5-го потока по Секционированию.
▫️ Oracle будет жить🔥
▫️ Рынок постепенно становится сеньорским
ТЕХНИЧЕСКИЕ ПОСТЫ
▫️ Курсоры в Oracle
▫️ Миф: явный курсор работает быстрее неявного
▫️ Блок Column Projection Information в плане запроса
▫️ Что означает колонка Starts в плане выполнения?
Информация о предстоящих мероприятиях:
▫️ Расписание вебинаров этим летом
Коллеги, не забываем записываться на мок-собеседование, это отличная возможность «потренироваться» и проверить свои знания 🔥
Записаться можно у Влады.
#обзорныепосты #топпостов
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE | 590 |
| 13 | Коллеги, всем привет! 👋
Сегодня пятница, а значит время расслабиться 🏝✨
Разбавим долгожданный конец рабочей недели пятничным юмором, ставьте реакции 😄👏
Также напоминаем, что уже 2.07 в 19:00 МСК пройдет вебинар по анализу планов запросов 📊💻.
Будем учиться читать планы запросов, ну и как всегда, будет моооре практики, не пропустите, всех ждём! 😉🚀
Ссылка на вебинар будет опубликована здесь 02.07, следите за анонсами 🔥🔗
Всем хороших выходных! 👍🌞 | 791 |
| 14 | Что означает колонка Starts в плане выполнения? 🤔
Коллеги, всем привет! 👋
С вами Денис.
Записал небольшое видео, где разбираю один из вопросов, который регулярно задаю на своих mock-собеседованиях по оптимизации Oracle.
Казалось бы, простой вопрос:
Что означает колонка Starts в таблице операций?
Но именно на таких вопросах очень быстро становится понятно, человек действительно умеет читать планы запросов или просто выучил теорию или нахватался "по верхам".
Одно дело - знать определения. Совсем другое - когда перед вами реальный план и нужно объяснить, что в нем происходит, почему именно так отработал оптимизатор и где искать проблему.
Честно говоря, иногда мне самому кажется, что я задаю слишком простые вопросы. Но практика mock-собеседований показывает обратное - даже на такой базе многие начинают путаться.
А ведь оптимизация - это один из ключевых навыков для Senior-разработчика. Если вы претендуете на сильные позиции, понимать планы выполнения нужно уверенно. Оптимизация - это ключ к Senior-позициям. Я нисколько не вру, помидоры в чате могут подтвердить 🍅
В видео как раз разбираю один из таких базовых вопросов.
—
📅 И напоминаю, что уже в следующий четверг пройдет вебинар по анализу планов запросов. Будем учиться читать планы так, чтобы понимать, что реально происходит внутри Oracle, а не просто смотреть на красивые строчки. Забейте 19:00 02.07 в свой календарь и поставьте напоминалку 🔔
Если же хотите проверить себя в условиях, максимально приближенных к настоящему техническому интервью, всегда можно записаться ко мне на mock-собеседование. Разберем ваши сильные и слабые стороны, и я дам рекомендации, что стоит подтянуть ✅
Всем хорошего дня! 🤝
#oracle #sql #performance #executionplan #оптимизация #собеседование #senior #Denis_Kivilev
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE | 914 |
| 15 | Блок Column Projection Information в плане запроса 📺
Коллеги, всем привет! 👋
С вами Денис.
В преддверии нашего вебинара по анализу планов запросов решил немного «разбудить ваш аппетит» и записал небольшое видео.
Разбираем два важных блока в плане: Predicate Information и Column Projection Information. Если совсем кратко:
🔹 Predicate Information — это про то, как данные фильтруются (Filter) и как происходит доступ (Access). То есть «как мы ищем».
🔹 Column Projection Information — это про то, что операция отдает «наверх». Какие конкретно колонки и данные участвуют в процессе.
Зачем это знать?
Эти блоки — настоящая кладезь при глубоком анализе. Например, они помогают ответить на вопросы:
❓ Почему здесь не подцепился индекс, который я ждал?
❓ Почему не сработал Index Fast Full Scan?
❓ Какие колонки были лишними и «раздули» план?
Посмотрите видео, там нагляднее.
🚀 И напоминаю: жду вас и ваших коллег на вебинаре 2-го июля. Как обычно, будет море практики, разберем хитрости и тонкости, о которых не пишут в учебниках. Залетайте, будет интересно!
Бонусом думаю сравнить планы в Oracle и PG. Если это кому-нибудь надо, конечно 😉
Всем оптимальных планов и хорошего дня! 🤝
#oracle #sql #performance #tuning #план_запроса #оптимизация #вебинар #Denis_Kivilev
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE | 929 |
| 16 | Рынок постепенно становится «сеньорским» 📊
Коллеги, всем привет! 👋
Этот пост для Oracle-разработчиков, которые хотят понять, куда движется рынок и что с этим делать.
Ещё несколько лет назад компании охотно брали джунов, обучали их под себя и терпеливо ждали результата. Сейчас картина другая.
👉
По данным исследований (SuperJob, hh.ru) за первый квартал 2026 года: объём найма сократился на 20% год к году, а число резюме на рынке выросло на 34% по сравнению с аналогичным периодом 2025-го
Конкуренция за вакансии растёт, а компании становятся всё более избирательными.
Что именно меняется:
🔹 Джунов берут неохотно. Бизнес не хочет тратить 6-12 месяцев на «доращивание» - слишком дорого и рискованно в текущих условиях.
🔹 Мидлы без чёткой специализации теряются. «Умею всего понемногу» - уже не аргумент. Работодатель ищет того, кто закроет конкретную задачу с первого дня.
🔹 Сеньоры с глубокой экспертизой в Oracle - в дефиците. Таких специалистов мало, и спрос на них устойчив даже на фоне общего охлаждения рынка.
Это не временный тренд. Рынок взрослеет: компании платят за результат, а не за потенциал. 🧠
Что это значит?
🧑🎓Если вы мидл - момент прокачаться до уверенного сеньора лучше, чем ждать, пока разрыв между вашим уровнем и требованиями рынка станет ещё больше.
⚠️ Конкретно: углубляйтесь в оптимизацию запросов, архитектуру БД, работу с большими объёмами данных, PL/SQL-паттерны. Это то, что реально отличает сеньора от мидла на собеседовании и в реальной работе.
Если хотите системно закрыть пробелы и выйти на уровень уверенного Senior Oracle-разработчика - заполните анкету предзаписи на наш курс 👇
👉 ЗАПОЛНИТЬ АНКЕТУ 👈
Это вопрос вашей выживаемости в профессии. Нужно становится Senior-специалистом.
Всем чистых запросов и стабильного прода! 🚀
#oracle #карьера_в_IT #базы_данных #рынок_труда #обучение #senior #PL_SQL
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE | 869 |
| 17 | Oracle будет жить 🔥
Коллеги, всем привет! 👋
Разговоры об уходе Oracle с российского рынка не утихают уже несколько лет. Но давайте смотреть на факты, а не на заголовки 🧐
👉 Реальность такова: огромный пласт критичных систем в России по-прежнему работает на Oracle - и никуда в ближайшее время не денется.
Что происходит на самом деле:
Да, импортозамещение идёт.
По данным Forbes, крупнейшие банки рассчитывают достичь 90% импортозамещения лишь к 2027 году. А по данным GlobalCIO, сам процесс займёт от 5 до 10 лет в зависимости от конкретных систем.
Это не абстрактные цифры. Это годы реальных проектов, поддержки, оптимизации и миграций - где нужны люди, которые глубоко понимают Oracle.
🔹 Там, где системы работают и приносят деньги, их не переписывают ради идеи.
🔹 Легаси на Oracle в банках, промышленности и госсекторе - это не технический долг, это действующий прод.
🔹 Специалистов, которые умеют с этим работать, на рынке меньше, чем открытых вакансий.
По данным Quick-Offer, Senior DBA с экспертизой в Oracle получает в среднем от 290 000 ₽. Потолок по прогнозам SuperJob - от 600 000 ₽ и выше
🧠 Парадокс момента: пока одни ждут, "когда Oracle совсем уйдёт", другие прокачивают экспертизу и становятся дефицитными специалистами именно на переходном периоде - самом длинном и самом оплачиваемом.
🔸 Oracle в России - это не прошлое, это настоящее ещё на много лет вперёд.
🔸 Переходный период создаёт спрос на тех, кто умеет оптимизировать и поддерживать существующие системы.
🔸 Прокачивать знания сейчас - значит быть востребованным именно тогда, когда рынок в этом больше всего нуждается.
Простая связь: теперь рынок сеньерский, чтобы им быть - нужно знать оптимизацию. Как им стать? Прокачивать себя любимого, вкладываться в своё образование.
⚠️ Если хотите системно разобраться с оптимизацией Oracle - мы открываем предзапись на 8-й поток курса. Заполните анкету, чтобы узнать детали и зафиксировать место 👇
ЗАПОЛНИТЬ АНКЕТУ
Удачи в проектах и пусть ваши запросы выполняются быстро! 🚀
#oracle #базы_данных #карьера_в_IT #оптимизация #DBA #импортозамещение #обучение
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE | 1 083 |
| 18 | Миф: явный курсор работает быстрее неявного 🧐
Друзья, всем привет!
С вами Костя Андронов 👋
Сегодня разберём миф, который дожил с 90-х: «явный курсор эффективнее неявного».
🕰 Откуда ноги растут
В 7 версии Oracle (PL/SQL 2.2) неявный курсор действительно был медленнее. По стандарту ANSI SQL запрос на одну строку обязан убедиться, что строка ровно одна — значит, делается второй FETCH, чтобы поймать TOO_MANY_ROWS. 2 FETCH вместо 1 — отсюда легенда.
В следующем релизе PL/SQL 2.3 неявные курсоры оптимизировали, и с тех пор они работают чуть быстрее явных. Но миф жив до сих пор 🤯
⚙️ Три варианта на примере
SELECT INTO — короткий, читаемый, но обязан получить ровно одну строку:
declare
v_name employees.last_name%type;
begin
select last_name
into v_name
from employees
where employee_id = 100;
exception
when no_data_found then
null; -- обработка
end;
OPEN/FETCH/CLOSE — больше кода, зато полный контроль: проверяем %NOTFOUND без exception:
declare
cursor c is
select last_name
from employees
where employee_id = 100;
v_name employees.last_name%type;
begin
open c;
fetch c into v_name;
if c%notfound
then
null; -- обработка
end if;
close c;
end;
Cursor FOR Loop — компактно для множества строк, Oracle сам открывает/закрывает:
begin
for r in (select last_name
from employees
where department_id = 10)
loop
dbms_output.put_line(r.last_name);
end loop;
end;
📊 Что говорят цифры
Steven Feuerstein (Oracle ACE, автор книг по PL/SQL) прогнал бенчмарк на 100 000 итераций (оригинальная статья тут) . Поиск одной строки, которая есть в таблице:
🔹 SELECT INTO — 4.703 сек
🔹 Cursor FOR Loop — 4.685 сек
🔹 OPEN/FETCH/CLOSE — 5.209 сек
А вот когда строки нет:
🔸 SELECT INTO — 6.372 сек (NO_DATA_FOUND стоит дорого)
🔸 Cursor FOR Loop — 4.560 сек
🔸 OPEN/FETCH/CLOSE — 4.703 сек
На «холостых» запросах генерация исключения NO_DATA_FOUND из SELECT INTO съедает всё преимущество.
🧭 Когда что выбирать
✅ SELECT INTO — одна строка, и она почти всегда есть. Дефолтный выбор.
✅ OPEN/FETCH/CLOSE — одна строка, и «не нашли» — частый случай. Избегаем дорогого NO_DATA_FOUND.
Но с точки зрения читаемости явные курсоры проигрывают: код громоздкий, сам запрос вынесен в секцию`declare` — и потом приходится возвращаться к нему глазами, чтобы понять, что за данные пошли в бизнес-логику. Плюс важно не забывать закрывать курсор — об этом разработчики регулярно забывают.
🤔А что насчёт цикла FOR для гарантированно одной строки?
Работает он быстро, но при чтении кода интуитивно сбивает: такой цикл обычно ассоциируется с многострочными запросами. Можно добавить явный exit; в конце цикла — тогда видно, что он отработает только для одной строки, но и не будет исключения если запрос вернет несколько строк и результат будет неожиданным. Использовать ли такой вариант — решайте сами, по производительности он не уступает.
Итог 🧩
«Явный курсор быстрее» — это про 7 Oracle из эпохи модемов. Сегодня правило другое: смотрите не на тип курсора, а на то, что вероятнее — найти строку или промахнуться.
А вообще производительность чаще страдает совсем не от выбора типа курсора — а от десятков других причин, которые разбираем на курсе по оптимизации.
А вы какой курсор используете по умолчанию? Делитесь в Чатике — обсудим ваши кейсы 💬
С вами был Костя. Хорошего дня и быстрых запросов! 🚀
#oracle #plsql #курсоры #оптимизация #базы_данных #Konstantin_Andronov
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE | 855 |
| 19 | Расписание вебинаров этим летом ☀️
Коллеги, всем привет! 👋
Летом мы НЕ планируем уходить в режим "почитаю потом". Наоборот - собрали серию вебинаров для разработчиков, QA, аналитиков и тех, кто хочет спокойнее проходить собеседования, разбираться в архитектурных решениях и меньше тушить пожары в проде.
👉 Чтобы не ловить анонсы вручную в ленте, лучше сразу подписаться на нашего бота. Он напомнит о вебинарах заранее и не даст пропустить их.
Что запланировали на лето
🌞 Июль - Вебинар на тему «Чтение планов запросов»
Разберем куда смотреть, какие выводы делать, как читать планы по 600-800 строк.
Бонус: сравним чтение планов в Oracle и PostgreSQL на парочке примеров.
☀️ Июль - Вебинар на тему «Методы индексного доступа»
Разберем наиболее популярные методы индексного доступа, посмотрим когда какой подходит, как правильно отвечать на вопросы на собесах.
Бонус: разберем устройство LSM-индекса, который может заменить привычный B-tree
☀️ Август - Вебинар на тему «Методы соединения таблиц»
Разберем все виды соединения таблиц, их особенности, когда/какие применять, на что обращать внимание в планах.
Бонус: сравним с PostgreSQL.
☀️ Август - Вебинар с приглашенным экспертом Любовью Прохоровой.
🍂 Сентябрь - Секреты работы с большими данными в DWH
Как ускорять запросы, какие техники применять, на что обращать внимания.
Бонус: поговорим о параллельных запросах и их возможностях
Как не пропустить?
✅ Подпишитесь на бота - туда будут приходить точные даты, время, ссылки вебинар и напоминания перед стартом.
✅ Если тема вам не подходит, просто пропустите конкретный вебинар.
✅ Если подходит - планируйте время заранее и обязательно приходите, тк записи мероприятий не будут публиковаться в общем доступе.
Лето можно провести без перегруза, но с пользой: по одному точному вебинару в нужный момент часто хватает, чтобы закрыть пробел или пересобрать подход к задаче.
Если хотите не пропустить анонсы - подпишитесь на бота по ссылке 👇
👉 ПОДПИСАТЬСЯ 👈
Будем разбирать практику без воды и магических рецептов. Оставайтесь с нами и обязательно приглашайте в канал ваших коллег 🙂
#вебинары #обучение_IT #карьера_в_IT #разработка #qa #аналитика #базы_данных
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE | 801 |
| 20 | Курсоры в Oracle
Друзья, всем привет! 👋
С вами Костя Андронов.
Один из популярных вопросов на собеседовании по Oracle:
Что такое курсор?
Курсор — это указатель на область памяти, в которой Oracle хранит результат SQL-запроса. Когда выполняется SELECT или DML, БД складывает строки в эту область, а курсор позволяет извлекать их в вызывающую среду.
В Oracle курсоры бывают двух видов: неявные и явные
🧩 Неявный курсор
Создаётся автоматически для любого SQL-запроса внутри PL/SQL-блока. Мы его не объявляем и не закрываем — Oracle делает всё сам.
Строго говоря, неявный курсор - это вообще любая SQL-команда: truncate, create, commit, select...
begin
delete
from dept_temp
where department_id = 10;
if sql%found then
dbms_output.put_line('Удалено строк: ' || sql%rowcount);
end if;
end;
🧩 Явный курсор
Объявляем сами, сами открываем, читаем построчно и закрываем. Даёт полный контроль над выборкой и умеет принимать параметры.
declare
cursor c_emp (p_dept number) is
select department_id,
department_name
from dept_temp
where department_id = p_dept;
v_rec c_emp%rowtype;
begin
open c_emp(10);
loop
fetch c_emp into v_rec;
exit when c_emp%notfound;
dbms_output.put_line(v_rec.department_name);
end loop;
close c_emp;
end;
Информацию о любом курсоре можно получить через его атрибуты, которые доступны через его имя (например c_emp) или через sql для неявных курсоров. Подробнее атрибуты курсоров разбирали в этом посте
❓ В чем сложность при работе с явными курсорами?
Если возникнет исключение между open и close (например, в fetch или в dbms_output), управление сразу уйдёт за пределы блока (или в exception-секцию, если она есть), и close c_emp; не выполнится.
Курсор останется открытым 😱
Почему это плохо:
🔸 Курсор занимает слот в open_cursors сессии, а они ограничены
🔸 Если такой блок вызывается в цикле или в процедуре, которая вызывается часто, рано или поздно можно поймать ORA-01000: maximum open cursors exceeded
🔸 В анонимном блоке верхнего уровня, после окончания вызова, Oracle сам подчистит сессионные ресурсы, но полагаться на это — плохая практика.
⚠️ Как с этим бороться?
1️⃣ Перехватить исключение в exception блоке
...
exception
when others then
if c_emp%isopen then
close c_emp;
end if;
raise;
end;
2️⃣ Использовать цикл FOR. Oracle сам объявит переменную типа %rowtype, откроет и закроет курсор (даже при исключении), будет извлекать строки по 1 на каждой итерации обязательного цикла:
begin
for rec in (select department_name
from dept_temp
where department_id = 10)
loop
dbms_output.put_line(rec.department_name);
end loop;
end;
📌 Зачем нужны курсоры?
✅ Неявный — когда достаточно выполнить запрос и узнать, что вышло: сколько строк затронуто, был ли результат
✅ Явный — когда нужны параметры, контроль над FETCH, обработка нескольких выборок одновременно или передача курсора между процедурами через REF CURSOR.
❤️ Если тема зашла — cтавьте 👍🏻, разберём, есть ли разница в производительности между явным и неявным курсором
С вами был Костя Андронов. Всем продуктивного дня! 🚀
#oracle #plsql #курсоры #Konstantin_Andronov
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE | 891 |
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
