Oracle Developer👨🏻‍💻
3.24K subscribers
664 photos
90 videos
2 files
554 links
🔝 канал о разработке в СУБД Oracle:
SQL, PL/SQL, оптимизация, архитектура и многое другое...

Backend-pro.ru - обучение по различным программам, связанных с backend-разработкой для ФЛ и ЮЛ.

Отец-основатель: @denis_dbd Кивилёв Денис
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Зачем нужен Index Skip Scan? Продолжение

Друзья, всем привет! 👋
С вами Костя Андронов 🙂

В понедельник мы опубликовали вопрос про Index Skip Scan от одного из наших студентов с 6 потока по оптимизации

Что такое Index Skip Scan?🤔

Это один из методов доступа к данным через индекс. Обычно он используется, когда в таблице есть составной индекс, но в предикатах запроса отсутствуют лидирующие колонки.

Рассмотрим на примере. Пусть у нас есть таблица employees и индекс:
create index emp_name_ix on employees(last_name, first_name)


Как выглядят листовые блоки этого индекса?

В них хранятся все пары last_name, first_name в отсортированном виде, и для каждой — rowid строки. Пример:
...
'Ivanov', 'Alexander' - 'AAAR2TAAUAAAADtAAD'
'Ivanov', 'Michail' - 'AAAR2TAAUAAAADtAAz'
...
'Petrov', 'Alexander' - 'AAAR2TAAUAAAADtAAF'
'Petrov', 'Petr' - 'AAAR2TAAUAAAADtABB'
...


А теперь вопрос: как получить только те строки, где first_name = 'Alexander'?

Есть два пути:
🔹 Прочитать весь индекс и отобрать нужное.
🔹 Перебирать возможные значения last_name, подставлять их в комбинации и искать пары (last_name, first_name) — то есть ключ индекса.

И вот второй вариант как раз и называется Index Skip Scan. Подробнее — в этом посте.

В чем же проблемы такого подхода?
Всё зависит от количества строк и уникальных значений в last_name.
🔸 Если уникальных значений немного — Skip Scan может быть выгодным.
🔸 Если их много — придётся выполнять массу сканирований индекса, и тут уже проще прочитать весь индекс или даже таблицу.

А в чем подвох?⚡️
Чтобы составной индекс работал эффективнее, лидирующие колонки должны быть высококардинальными. Другими словами уникальных значений last_name обычно очень много — и тогда появление Index Skip Scan в плане превращается в «узкое горлышко» в плане запроса

Для тех кто хочет разобраться в нюансах оптимизации и не знает с чего начать - Анкета предзаписи на 7 поток по оптимизации

С вами был Костя Андронов. Всем отличного дня и приятного просмотра! 🚀

#oracle #оптимизация #index #sql #Konstantin_Andronov

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

Анкета предзаписи на 7 поток "Оптимизация Oracle SQL"
🔥11👍74
Правда, которую многие боятся признать

Всем привет, друзья 👋
Сегодня хотелось бы порассуждать про реальность, на которую многие не обращают внимание по-разным причинам (не хочется признаваться, все хорошо, я на позитиве, не замечаешь - того и нет и т.п.)

300 000 рублей в месяц — уже не большие деньги. Да, когда-то на эти суммы можно было чувствовать себя «королём жизни»: отдых за границей, техника, свободные траты без оглядки. Но это было 10 лет назад.

Сегодня 300к — это просто сумма, которой едва хватает на ипотеку, еду и редкие развлечения.

📊 Факт
5* all inclusive в Египет на 12 дней:
- в 2012 году тур стоил от 20-25 тысяч ₽.
- в 2025 году тот же отдых обойдётся в 180 тысяч ₽ и выше 😱

Разница в 8-10 раз! А ваша зарплата за это время выросла так же? Супер, если да 🔥
Если нет — значит, по факту вы беднее, чем 10 лет назад


🚨 И вот ещё хуже: если вы продолжаете думать, что 300 000 — это «потолок», вы уже отстали.

Молодые специалисты прокачивают навыки, учатся быстрее, берут на себя больше ответственности и готовы заменить любого, кто застрял в прошлом.

Каждый год цены растут, и если ваш доход остаётся прежним — вы все больше отстаете.

Это как стоять на эскалаторе, который едет вниз: чтобы подняться, нужно двигаться☝🏻

А как двигаться? Только через рост навыков: новые хард-скиллы, софт-скиллы, умение приносить ценность рынку выше конкурентов.

Вопрос не в том, сможете ли вы прожить на 300к. Вопрос в том, сколько ещё лет вы согласны беднеть, пока другие растут?

Анкета на следующий поток уже открыта. Заполняйте сейчас, если не хотите оказаться тем, кого инфляция и конкуренты оставят позади. Это не шутка 🤷🏻‍♂️

#oracle #оптимизация #карьера

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

Анкета предзаписи на 7 поток "Оптимизация Oracle SQL"
😁76👍5🤷‍♂2
Por que Brasil 🇧🇷?

Друзья, всем привет!

На связи Денис, время субботнего щитпостинга 😁
Речь пойдёт про Бразилию.
Неинтересно? Не читай. Скипай. В понедельник будет технический пост 🤖

Как вы уже наверное в курсе, я с семьёй перебрался на другой континент аж в Бразилию 🇧🇷
Ни разу не ближний свет.
Ребята задают вопросы в личку: как там? как с детьми? опасно ли? и так далее.

Я начал записывать видос и... офигел от его длины получилось часа на полтора. Ну, нет, такое вы смотреть не будете. В общем, решил пойти другим путём. В этом видосе я рассказал, зачем мы сюда поехали и почему именно Бразилия. Все остальное расскажу потом, но только на интересующие вас вопросы. Поэтому смело задавайте в
чатик или личку и я отвечу именно на них. Попробуем сэкономить ваше время ⌛️

Немного цифр
1️⃣ Население: Россия ~146 млн, Бразилия ~217 млн
2️⃣ Территория: Россия 17,1 млн км², Бразилия 8,5 млн км² (5 страна в мире)
3️⃣ Государственный язык: Бразилия — португальский
4️⃣ Религия: Россия ~70% православные, Бразилия ~60% католики
5️⃣ Часовые пояса: Россия 11, Бразилия 4

Сила паспорта
🇧🇷 Паспорт Бразилии: безвиз или виза по прилёту ~163 стран, ~43-е место в мире. Безвиз с Евросоюзом, Британией, Японией и т.д.
🇷🇺 Паспорт России: безвиз или виза по прилёту ~125 стран, ~88-е место в мире.

Сравнение здесь

Все вопросы и ответы в этих видосах

➡️➡️ Youtube ⬅️⬅️
➡️➡️ Rutube ⬅️⬅️

Продолжительность видео: 17 минут. Приятного просмотра 🤝

Если у вас будут вопросы, обязательно задавайте в
комментариях ⬇️ Буду рад ответить в следующем видео 👌🏻

Всем хороших выходных 👯‍♀️

#oracle #путешествия #digitalnomad #Denis_Kivilev #видео

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

Анкета предзаписи на 7 поток "Оптимизация Oracle SQL"
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥7👍6🤷‍♂1
This media is not supported in your browser
VIEW IN TELEGRAM
Происшествие с индексом

Друзья, всем привет! 👋
С вами Костя Андронов.

Сегодня разберём интересную ситуацию, которую я показывал на одной из практик курса «Оптимизация Oracle SQL».

Есть табличка employee1, у неё есть индекс по колонке department_id.

Пишем простой запрос:
select ...
from employee1 e
where department_id = 11;


Селективность этого предиката - 1,6% от общего количества строк в таблице.

Помните правило: индекс обычно используется, когда выбирается менее 15% строк.
В нашем случае 1,6% - прямо идеальные условия для применения индекса! ⚙️

Но если заглянуть в план выполнения, то видим неожиданное - Table Access Full 😱
Получается, индекс есть, но СУБД всё равно делает полный просмотр таблицы. Почему так происходит? 🤔

Кстати, отличный вопрос для собеседования 😉

Ответ кроется в нюансах оптимизатора Oracle, который иногда решает, что полное сканирование будет быстрее, чем обращение к индексу.

Почему так - разберём в четверг 🎓
Пишите ваши гипотезы в чатик 💬

Всем продуктивной рабочей недели! 💪

#oracle #performance #sql #оптимизация #Konstantin_Andronov

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

Анкета предзаписи на 7 поток "Оптимизация Oracle SQL"
🔥103👍2🤩2
Media is too big
VIEW IN TELEGRAM
Квантовый скачок, который мог быть быстрее

Друзья, всем привет! 👋
Денис на связи.

Хочу рассказать вам одну историю из своего студенчества. Когда я учился в университете, всё давалось нелегко, а особенно программирование. Почти полтора года я мучился с заданиями: то не понимал, как подступиться, то просто сдавал чужие работы, а иногда даже заказывал проекты, когда совсем не знал, с чего начать 🙈

И вот на 2м курсе поменялся препод и началось ООП, в голове что-то щёлкнуло. Всё, что я раньше учил, пробовал, ошибался — вдруг сложилось в систему. Накопленные знания превратились в осознанное понимание. Наступил тот самый квантовый скачок, когда начинаешь видеть, как всё взаимосвязано: логика, циклы, рекурсия, функции, программный код. С этого момента учёба перестала быть хаосом и стала осмысленным процессом 🚀

Кстати, если у вас была такая же история поделитесь в чатике. Будет интересно почитать 😉

💡 И вот с тех пор я твёрдо знаю: пройти этот путь можно гораздо быстрее, если рядом есть грамотный наставник. Настоящий ментор не просто объясняет материал, а помогает увидеть связи, понять, почему всё работает именно так. С ним обучение превращается из бесконечной теории в осознанную практику.

📚 Хороший наставник не решает всё за ученика, а направляет — показывает, где искать ответы и как думать системно. Он помогает пройти через моменты, когда кажется, что ничего не получается. Именно тогда и рождается настоящее понимание.

Так что если вы чувствуете, что «застряли» — не спешите сдаваться. Это не тупик, а момент роста. Главное — не останавливаться и искать смысл в процессе.

Всем хорошего дня! 👍🏻

#обучение #наставник #программирование
#oracle #performance #sql #оптимизация #Denis_Kivilev

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

Анкета предзаписи на 7 поток "Оптимизация Oracle SQL"
👍15🔥104
Media is too big
VIEW IN TELEGRAM
⚙️ Готовим новый вебинар. Немного закулисья.

Друзья, всем привет 👋
На связи Денис.

Мы с командой уже активно готовим для вас новый бесплатный вебинар по оптимизации Oracle SQL, который пройдёт 28 октября. Процесс идёт полным ходом — и я хочу немного приоткрыть закулисье 🫣

Хочу начать с того, что я не из тех, кто делает все эти бесплатные вебы для галочки. Нет такого, что я просто включаю ноутбук и начинаю «что-то там на камеру говорить». Для начала я выстраиваю смыслы, логику, полностью продумываю структуру, чтобы человек в конце концов не «просто послушал» и ушел, а чтобы что-то в голове у него отложилось 🧠 и осталось приятное послевкусие 🍷

Сейчас я выстраиваю скелет вебинара: какие вехи пройдём, где будет польза, а где практика.

👉 Одна из целей рассказать, зачем вообще нужна оптимизация — и Oracle-разработчику, и Java-разработчику, и аналитику.

Будем также разбирать реальные ситуации из жизни:

🔹какие виды оптимизации бывают
🔹что делать, если у вас возникла проблема на PROD
🔹как правильно отвечать на вопросы по Оптимизации на собесах

Ну и разберем, конечно же, тот самый вопрос на собесах: «У вас база тормозит. Что будете делать?» Расскажу вам, как правильно на него отвечать 😉

Очень часто вижу такую картину: человек опытный, навыки на высоте, но на собесах теряется 🤷‍♂️
Потому что нет структуры мышления. Вот над этим и будем с вами работать)

Плюс — проведём МОК-собеседование в прямом эфире.
Добровольцы попробуют поотвечать, а мы вместе разберём ошибки и сильные стороны. Вот это, мне кажется, станет для вас реальной прокачкой 🔥

Конечно, будет и техническая часть — "с чего начать оптимизацию".

А еще будем разбирать кейс из процессинга - регистрацию клиента и типичных «боевых» ситуаций.
То, с чем сталкивается каждый, кто работает с Oracle.

💻 Вебинар будет полностью бесплатный, поэтому прийти может любой желающий. Он продлится 2–3 часа и подойдёт не только Oracle-разработчикам, но и Java-разработчикам, аналитикам и DBA.

Пока я всё это рисую: схемы, стрелки, логику – уже вижу, как это сложится в целостную историю. И обещаю: скучно нам точно не будет 😉

Сейчас самое время вписаться в эту тему. Не потом, не «когда появится время». А потому что, как я уже много раз говорил, тот, кто «делает сейчас», всегда оказывается впереди тех, кто откладывает на потом ☝️

28 октября в 19.00 по МСК жду всех, кто жаждет новых знаний и высоких результатов. А вебинар у нас будет просто мясо – без результатов остаться невозможно 🚀

Если есть вопросы задавайте в комментариях с радостью на все отвечу.

С вами был Денис Кивилев. Всем добра ❤️

#oracle #оптимизация #карьера

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

Анкета предзаписи на 7 поток "Оптимизация Oracle SQL"
🔥29👍65
This media is not supported in your browser
VIEW IN TELEGRAM
Происшествие с индексом. Ответ

Друзья, всем привет! 👋
С вами Костя Андронов 🙂

В понедельник мы опубликовали пост с интересной ситуацией, которую я показывал на одной из практик курса «Оптимизация Oracle SQL».

Несмотря на идеальные условия для применения индекса (селективность предиката — всего 1,6%), Oracle выбирает Table Access Full вместо Index Range Scan 😱

Разбираемся, почему это произошло.

📌 Как Oracle выбирает метод доступа к данным?

На этапе hard-parse оптимизатор строит планы с разными методами доступа и оценивает их «стоимость» для конкретного запроса.

Получается, он решил, что обойти всю таблицу «дешевле», чем использовать индекс. Но почему? 🤔

Чтобы понять это, надо заглянуть в статистику объектов — таблицы и индекса.

🔍 Clustering Factor

Это один из ключевых параметров индекса. Он показывает, насколько упорядочены данные в таблице относительно порядка в индексе (в индексе они всегда отсортированы).

Как его интерпретировать?

📦 Листовые блоки индекса содержат ключи и rowid соответствующих строк.
Если при чтении индекса каждый новый rowid будет указывать на другой блок таблицы — значит, данные не упорядочены.

📈 Clustering Factor в таком случае будет большим — а это сигнал для оптимизатора, что доступ по индексу приведёт к хаотичному чтению блоков.

🧠 Почему это может быть неэффективно?

Oracle работает с блоками данных, а не с отдельными строками.

И если даже небольшой процент строк попадает под условие запроса, но все они разбросаны по разным блокам, то:
🔹 Нужно будет читать почти все блоки таблицы,
🔹 Плюс часть блоков самого индекса,
🔹 И в сумме Index Range Scan может оказаться «дороже», чем простое Table Access Full.

🎥 В видео к этому посту мы подробно разбираем пример такого поведения на одной из встреч 6 потока курса по оптимизации и обсуждаем, что с этим делать.

Хочешь научиться разбираться в таких нюансах сам?
👉 Записывайся на 7 поток по оптимизации: Анкета. 📋
Обсудить нюансы использования индексов и оптимизации в Oracle - велком в Чатик 💬

С вами был Костя Андронов. Всем отличного дня и приятного просмотра! 🚀

#oracle #оптимизация #index #sql #Konstantin_Andronov

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

Анкета предзаписи на 7 поток "Оптимизация Oracle SQL"
🔥153👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Как Валерия после 3-летнего перерыва вернулась в IT и стала увереннее, чем раньше

🔹33 года. Десять лет опыта. Но три года в декрете — и всё будто стерлось.
🔹PL/SQL, триггеры, API, запросы — всё знакомо и в то же время чужое.
🔹Ощущение, что за это время мир убежал вперёд, а ты застрял в прошлом.

Но потом Валерия решилась пойти на курс, чтобы не просто “вспомнить синтаксис”, а вернуть уверенность. И спустя пару месяцев — снова пишет код, понимает, почему так, оптимизирует, спорит на равных с коллегами и снова чувствует себя специалистом, а не человеком “после декрета”.

🔥 История Валерии — про то, как не бояться начинать заново, даже если кажется, что время ушло. Про то, как системное обучение возвращает не только знания, но и уверенность.

👉🏻 Прочитайте полную историю здесь

#oracle #оптимизация #index #sql #Konstantin_Andronov

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

Анкета предзаписи на 7 поток "Оптимизация Oracle SQL"
👍85🆒1
This media is not supported in your browser
VIEW IN TELEGRAM
Parallel DML на таблице с триггером

Друзья, всем привет! 👋
С вами Костя Андронов.

Продолжаем серию обсуждений интересных кейсов с практик последнего потока курса «Оптимизация Oracle SQL»

В DWH-среде для ускорения тяжёлых запросов часто применяется параллельный SQL

Например, если нам нужно вставить данные из таблицы client_data в client_data_tst, то и чтение, и вставка могут выполняться в нескольких параллельных сессиях.

Но есть нюанс ⚠️
Если на целевой таблице (client_data_tst) есть триггер, Oracle автоматически отключает PDML (параллельные DML-операции) для этой таблицы.

👉 И что же тогда делать, если хочется вставлять быстро, но триггер мешает параллелизму?

Варианты, конечно, есть — один из них разберём уже в четверг на практике 🎓
А пока — кидайте свои идеи и гипотезы в чатик 💬

Всем продуктивной недели и быстрых загрузок! 💪🚀

#oracle #оптимизация #sql #performance #Konstantin_Andronov

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

Анкета предзаписи на 7 поток "Оптимизация Oracle SQL"
👍83🔥3
Про страх быть «не тем». Ну или про то, почему 40-летние боятся, а 25-летние рвут рынок

Привет, на связи Денис Кивилёв 👋

Сегодня поговорим про вещь, которая ломает даже самых опытных специалистов. Про страх быть «не тем», ну или про синдром самозванца. Очень многие с этим сталкиваются на сегодняшний день.

Ты можешь иметь 10, 15, да хоть 20 лет опыта, работать честно и усердно. Но при этом ты зарабатываешь 80-120к. В то же время 25-летний парень, с двумя годами практики уже получает 250–300 тысяч (например, кейс Паши)

Да как вообще такое может быть, когда эта молодежь и половины не знает из того, что знаю я?

У вас же сейчас возник подобный вопрос в голове?) 👆🏻

❗️Зато тот самый парень с двухлетним опытом, зарабатывающий 300к, знает, что ему нечего терять в то время как ты сидишь и боишься.

Мы, поколение 80–90-х, воспитаны иначе. Нас учили быть правильными, удобными, послушными, не накручивать опыт, быть максимально честным с работодателем, так ведь?)

Вспомните, что говорили вам старшие: «Не высовывайся и не позорься»,«Да будь ты как все нормальные люди, а то будешь белой вороной».

Нас просто так воспитали. А, возможно, и вы сейчас говорите то же самое своим детям, просто задумайтесь)

Только вот мир изменился, и такие установки уже перестают работать. А с нынешней молодежью, стремящейся вперед, к новым результатам, они только тащат вас вниз.

Сегодня выигрывает тот, кто идёт вперёд, несмотря на страх, и просто делает. А те, кто так и продолжают сидеть в уголочке и не высовываться, потому что так учили, остаются ни с чем 🤷‍♂️

Синдром самозванца — это не про неуверенность. Это про зависимость от чужого одобрения. Ты боишься, что тебя осудят, вечно думаешь: «А что люди-то скажут?»
И вместо того чтобы податься на новую позицию, предложить новую идею или поднять чек, ты продолжаешь сидеть на месте с мыслями по типу «Ой, да мне-то куда?»

Я видел десятки сильных ребят 35+, 40+ с реально крутым опытом. Но все они тормозили на одном и том же: на страхе показаться не тем. Они не шли на собеседования, не брали новые задачи, не выходили на рынок. Потому что где-то внутри звучала мысль: «Да кому я там нужен?»

Ты нужен — но только если решишь, что ты сам себе не помеха. Потому что сегодня побеждает не тот, кто умнее, а тот, кому нечего терять ☝️

Почему? Да потому такие люди не боятся ошибаться и начинать заново. А это как раз наша нынешняя молодежь.

Пока ты выверяешь каждый шаг, думаешь, «достаточно ли ты хорош», рынок уходит дальше.
Молодые лезут вперёд, потому что у них нет страха «а что скажут». Они просто делают, наплевав на мнение остальных. И в этом их плюс. Поэтому они на шаг впереди.

Стоит один раз перестать ждать одобрения и начать просто делать, как сразу ты почувствуешь, что «дышать стало легче»

Я видел, как парни 40+ заходили в IT с нуля. И да, у них были такие же установки в голове, с которыми они справились. Впоследствии через полгода-год вышли на глобально новый уровень – нашли новую работу, выросли в доходе 💰

📌 Если ты читаешь это и чувствуешь, что застрял —
значит, пора выйти из этого круга. С каждым днем ты становишься все дальше и дальше от сегодняшнего рынка, потому что кто-то в это время просто делает, не задумываясь ни о чем.

🚀 Если ты готов не просто «существовать» на опыте, а реально расти и возвращать уверенность — заполняй анкету предзаписи на следующий поток по оптимизации Oracle SQL.

Делитесь в чатике, что думаете по этому поводу. Часто ловите себя на таких «блок-мыслях»?

С вами был Денис Кивилев. Всем высоких результатов и легких запросов 😉

#oracle #оптимизация #карьера

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

Анкета предзаписи на 7 поток "Оптимизация Oracle SQL"
👍97🔥6