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

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

Отец-основатель: @denis_dbd Кивилёв Денис
Download Telegram
🌐 Навигация по темам канала Oracle Developer

📘 Основы
#sql #plsql #теория #архитектура
#функции #секционирование #временныетаблицы
#транзакции #исключения #курсоры
#аналитическиефункции #иерархическиезапросы
#системныепредставления #компиляция #представления #коллекции #циклы

🛠 Практика и задачи
#задача #решениезадачи #asktom

🚀 Оптимизация и производительность
#оптимизация #nestedloops #индекс

🧩 Инструменты и технологии
#тестирование #postgresql #oracle #docker #oracle23c #ide #ai

💼 Карьера и Развитие
#карьера #собеседование #hr #тинькофф #magnit #вкусноиточка #leroymerlin#сбер #яндекс #Эффективность #КарьерныйРост #Denis_Kivillev #Работа

🎓 Дополнительные материалы
#видео #подкаст #аудиоподкаст #конкурс #марафон #юмор


В почти 700 (!) постах не мудрено заплутать. Поэтому решил сделать подобие навигации 😉
Не забывайте пользоваться обычным поиском, я не добавил сюда низкочастотные хештеги
.

Канал Oracle Developer | Чатик💬
Как проходит ваша суббота?

Друзья, привет ☀️

Кто чем занят в субботу? Надеюсь, отдыхаете и восстанавливаете силы 👍🏻

У меня выдался продуктивный день - сплавил жену с детьми к теще, записал в тишине новый видос по курсу Оптимизации - "Доступ к данным таблиц". Сейчас сижу в Adobe Premier спокойно монтирую без воплей "папа, она меня ударила!". У кого есть дети меня поймут 😄

До этого на трех потоках по оптимизации (прошло около 40 человек), я читал лекции сам. Каждый понедельник мы собирались в 19:15 и 1.5-2 часа тратилось на теорию.
Это прямо скажем, было не всегда удобно + долго.

В общем, за три потока материал устаканился. Я решил, что пора оцифровать теорию.
Собственно, новый 4️⃣й поток по "Оптимизации Oracle SQL", который стартовал в начале октября, уже учится по видео-лекциям.
Чем хороши видео-лекции? Сжатым таймингом, нет беканий/меканий, чистый концентрат знаний и можно посмотреть, когда тебе удобно. Если есть вопрос, то под видео есть FAQ или ТГ-чат с группой, где почти 24/7 можно задать вопрос и получить ответ.

На скрине показан процесс монтажа. Дело это довольно нудное и время затратное, каких-то помощников я привлечь не могу, хрен его знает, что они там намонтируют не понимая тему 🤷🏻‍♂️
С монтажем, в том объеме, в котором требуется мне, я уже давно освоился. Еще когда курс по PL/SQL делал. С каждым разом получается все более и более качественно.

Иногда смотрю свои видосы на ютубе, самые первые... волосы шевелятся от "качества" аудио и видео 😂

Кто думает, что "курсики стряпать дело 5 минут" не понимают процесса вообще 😊 На самом деле, довольно адский труд. Сделать хороший качественный продукт охренеть как сложно. Шанс слиться - 99% в первые 15 минут обдумывания идеи 😄😄

Вот так и проходят выходные 🤷🏻‍♂️

А у вас как? Тоже заняты чем-то по работе или может уделяете время хобби? Вообще, народ, чем кто занимается? Есть у кого-то хобби какое-то или увлечение? Рыбалка, может, или ИИ курочите 😄
Поделиться в чате 💬

#Denis_Kivillev #оптимизация
Канал Oracle Developer | Чатик💬
"Денис, ты что-то скрываешь"

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

Мне в личку написало несколько человек + в чатике задали аналогичный вопрос об обучении по Оптимизации Oracle SQL - "почему не было анонса осенней группы?" 🤔

Хочу объяснить: 4️⃣-й поток запустили для корпоративного обучения. У меня появилась опция оплаты от юр лиц. Несколько компаний заранее обратились ко мне для подготовки своих ребят 💼 Кстати, эту возможность уже можно обсудить с вашим отделом обучения 😉

Почему не анонсировал?
Этот поток был именно для компаний + было несколько человек из моих бывших студентов, кто хотел попасть на обучение. Но скоро откроется предзапись на 5️⃣-й поток, и этот набор будет для всех! 🎉

Важно
Мест будет немного, чтобы сохранить персональный подход. Исходя из реакций на марафоне по PL/SQL и обращений в личку, количество желающих больше чем количество доступных мест 😮 Если планируете записаться, не откладывайте!

Что нового?
Курс обновлен на 30%! 📈
🔸 записаны видео-уроки, изменен материал с учетом предыдущих потоков;
🔸 еще больше добавлено практики разного уровня сложности;
🔸 видео-нарезки с реальных собеседований по блоку оптимизации;
🔸 добавлены темы по карьерному росту, трудоустройству за рубежом;
🔸 психологическая поддержка, ориентация на рост в senior/тимлида.

Материал подан еще лучше
лекции короче и насыщеннее 🎥, добавлены конспекты и FAQ 📚, создана удобная платформа для общения и поддержки. 🤝

В декабре я также планирую провести марафон по оптимизации Oracle 🏃‍♂️
Это будет интенсив на несколько дней для тех, кто хочет погрузиться в тему и быстро освоить основные знания.

Почему стоит участвовать?
1️⃣ Вы получите навыки, которые сможете сразу применять.
2️⃣ Станете ценнее как специалист.
3️⃣ Сможете решать задачи быстрее и эффективнее.
4️⃣ Перестанете бояться собеседований по оптимизации.
Как следствие повысите свою зарплату и сможете закрыть желанную цель/мечту💵

Следите за обновлениями и не пропустите анкету предзаписи! 😉

#Denis_Kivillev #оптимизация #курс #обучение
Канал Oracle Developer | Чатик💬
Please open Telegram to view this post
VIEW IN TELEGRAM
Как правильно подходить к процессу оптимизации

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

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

С чего начать?
Первым делом стоит понять, что за условной кнопкой в интерфейсе пользователя стоит довольно большое количество слоёв. Каждый из них может вносить свои задержки. Нас интересует слой базы данных.
База данных - это своего рода "черный ящик", который принимает наши запросы и возвращает результаты. За ее внутреннюю оптимизацию отвечают администраторы баз данных (DBA) и системные администраторы (настройка серверов). Наша задача, как разработчиков, писать эффективные и оптимизированные SQL-запросы 🔝

Когда задумываться об оптимизации?
Есть два случая:
1️⃣ Проактивная оптимизация - когда пишем новый код и хотим сделать его производительным, чтобы не замедлить приложение после обновления 🐌
2️⃣ Реактивная оптимизация - когда проблема уже возникла, и пользователи жалуются на медленную работу 🔍
На скрине - слайд из лекций.

Как действовать?

1️⃣ Проактивная оптимизация
▫️Анализируйте запросы при разработке, проверяйте планы выполнения, операции в них, другие показатели.
▫️Используйте лучшие практики написания SQL-запросов.
▫️Тестируйте в условиях, похожих на боевые.

2️⃣Реактивная оптимизация
▫️Найдите медленные запросы.
▫️Соберите данные по ним - планы, статистики выполнения и др.
▫️Проанализируйте, найдите узкие места.
▫️Измените запрос, структуры данных.
▫️Внедрите изменения в PROD-среду и отслеживайте результат.

Важно помнить
💡Если у вас нет явных проблем с производительностью, не стоит тратить время на оптимизацию ради оптимизации. Лучше сосредоточьтесь на текущих задачах и развитии функционала.
💡Однако, если вы пишете новый код, всегда держите в уме лучшие практики и стремитесь писать эффективные запросы с самого начала. 💡

Оптимизация в реальной жизни
В реальных проектах у нас часто нет времени "плевать в потолок" и заниматься оптимизацией без явной необходимости 📆 Важно уметь быстро реагировать и иметь в арсенале проверенные методы.

Оптимизация баз данных - это не разовая задача, а постоянный процесс, который требует внимания и знаний. Чем больше вы сталкиваетесь с реальными проблемами и находите их решения, тем опытнее становитесь. Главное — обеспечить стабильную и быструю работу пользователей 🎯

Как вы подходите к оптимизации в своих проектах? Поделитесь опытом в чатике 💬

#оптимизация #курс
Канал Oracle Developer | Чатик💬
Задача. Медленный запрос с продуктами

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

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

Дана таблица:
create table products (
product_id number(10) primary key,
product_name varchar2(100) not null,
price number(10, 2) not null,
category varchar2(50) not null
);


🔸Всего 1M строк.
🔸Уникальных category - 1000.
🔸Данные распределены примерно равномерно по категориям.

Аналитик Василий выполняет запрос и ждет его результатов, довольно, долго
select product_name
,price
from products
where category = 'Electronics'
and price > 100;


В конце концов, ему это надоело и он пришел к вам с просьбой его ускорить.

Что посоветуете сделать? Обсудить в чате 💬

#задача #оптимизация
Канал Oracle Developer | Чатик💬
Решение. Медленный запрос с продуктами.

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

Обсудим решение нашей простенькой задачки из предыдущего поста.

Итак, аналитик Василий обещал вам проставиться в пятницу бутылочкой вкусного пивка 🍺
А все потому, что вы ускорили его запрос!

К вам подошел коллега Игорь и решил поинтересоваться как вы справились с этой задачкой.

💭 "Игорь, это же элементарно! В предикатах участвуют два столбца category и price. Category имеет довольно разнообразное значение. Я где-то слышал, что такие значения называют высококардинальными значениями. И Price, само собой, тоже. Я подумал, что было бы круто создать составной индекс по этим двум полям. Отбираться будет меньше 5-15% от общего количества, а значит индекс будет эффективен", - довольно ответили вы 😊

И сразу же показали, скрипт создания индекса.

create index products_category_price_i on products (category, price);


А что бы убедить Игоря, показали explain план запроса (см скрин).

"Да! но как ты получил план запроса?", - спросил Игорь.
"А это уже профессиональная тайна", - довольно ответили вы 😊

Senior разработчик Кирилл, совершенно случайно услышавший ваш разговор, добавил: "вообще, можно было бы и одним полем обойтись" 😉

Обсудить в чате 💬

#решениезадачи #оптимизация
Канал Oracle Developer | Чатик💬
Друзья, всем привет! 👋

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

С чего начать?
Оптимизация — это не волшебство, а набор практик и инструментов, которые делают работу эффективнее. Простые приёмы могут значительно уменьшить нагрузку на базу и повысить производительность приложения 🚀

Используйте Explain Plan
Explain Plan — один из ключевых инструментов в оптимизации, показывающий, как база данных выполнит запрос, и помогает выбрать лучший путь. Важно проверять планы запросов на тех средах (Dev, Test, Prod), где они будут использоваться. 🧐

Обратите внимание на Execution Plan
Execution Plan показывает, как запрос действительно выполняется. На продакшене он позволяет выявить узкие места и понять, где можно улучшить запрос.

Хинты: за и против
Иногда используют хинты — указания для оптимизатора, как выполнить запрос. Но будьте осторожны! Хинты могут как улучшить, так и ухудшить выполнение, если применены неправильно ⚠️

Знание внутренних механизмов
Например, понимание child-курсов может помочь в сложных ситуациях. Дать понимание "почему же вдруг у моего запроса изменился план".

Обращаем внимание

1️⃣ Выбор методов соединения: понимание, когда и какой метод соединения использовать nested loops, hash join, ...
2️⃣ Порядок соединения таблиц: неправильный выбор очередности таблиц в соединение может драматически повлиять на выполнение.
3️⃣ Индексы: правильно созданные индексы ускоряют доступ к данным в определенных случаях.
На практике часто предлагают "построить индекс" при проблемах с производительностью, но это не всегда является решением. Вот у кого-то сейчас мозг взорвался "индексы же всегда помогают улучшать запрос!!!", а вот и ни фига подобного 😁 Важно понимать, что именно вызывает проблемы 🔍

Можно бесконечно перечислять на что стоит обратить внимание при написании оптимальных запросов.

Постоянное развитие
Оптимизация требует постоянного обучения. Чем больше знаете о внутренних механизмах базы, тем эффективнее сможете оптимизировать запросы.

Простые изменения и правильные инструменты помогут сократить затраты на ресурсы базы и улучшить производительность. Если хотите действительно понимать, а не тыкаться как слепой котёнок, записывайся на обучение. Анонс скоро будет 🎓

А какие фишки используете вы? Поделиться в чатике 💬

#оптимизация #курс
Канал Oracle Developer | Чатик💬
Марафон по оптимизации в декабре

Готовлю для вас марафон по оптимизации Oracle SQL, который стартует через месяц. 🏁

В прошлый раз, на марафоне по PL/SQL была какая-то запредельная нагрузка. На этот раз хочу подготовиться заранее и сделать всё максимально круто 💪

Напишите в комментариях, какие задачи и вопросы вы хотели бы разобрать на марафоне. Выберу самые интересные и включу их в программу! 🎯

Жду ваших предложений! Обсудить в чате💬

#оптимизация #марафон
Канал Oracle Developer | Чатик💬
This media is not supported in your browser
VIEW IN TELEGRAM
Друзья, всем привет! 👋

Активно готовлю 5️⃣-й поток курса по оптимизации Oracle SQL. Вроде выходные, но здоровый перфекционизм берет свое, и работа кипит 24/7. Хочу рассказать, почему курс стоит своих денег и поделиться отзывами участников, которые окупили его стоимость уже в первые месяцы 💰

Что вас ждет в 5-м потоке?

1️⃣ Четкая структура: все темы разбиты на модули, с подробным планом обучения.
2️⃣ Готовые шаблоны и заметки: экономим время — конспекты уже сделаны.
3️⃣ Море практики: разбираем реальные задачи, с которыми вы столкнетесь.
4️⃣ Экономия времени вашей жизни: знания и инструменты, которые сразу можно применять.
5️⃣ Аналогов на рынке нет: курсов либо вообще нет, либо качество их извините... "освой оптимизацию за 4 дня" это что за п*** 🤬🤬
6️⃣ Карьерный консультант и реальные примеры собеседований: увеличение навыков прохождения собесов и приемы увеличения з/п в 1,5-2 раза.
7️⃣ Психологическая поддержка: поможет быстрее достичь результатов. Чем выше должность, тем больше ответственности, а "какой солдат не мечтает стать генералом?"

Буквально выжимка из отзывов
💬 "за две недели получил несколько офферов, и через месяц после поисков вышел на позицию почти x2 от предыдущей";
💬 "хочу похвастаться, что у меня уже курс окупился, значит всё было не зря";
💬 "да, твой курс уже наполовину окупился, эта штука мне в сумме пару недель жизни бы сэкономила";
💬 "15 минут, а столько нужной информации, что просто капец. вот хрен же кто такому научит".
Видео-отзывы: 1 поток, 2 поток, 3 поток, отзывы-скриншоты.

Почему это выгодная инвестиция?

Монополия знаний: аналогов нет — вы получаете конкурентное преимущество.
Практическая ценность: навыки, которые реально важны для бизнеса.
Быстрая окупаемость: многие ощутили эффект в первые месяцы благодаря новым возможностям и повышению зарплаты. 💎

Цена выросла?
Да, стоимость повысилась, но курс остается уникальным. Все знания основаны на реальных кейсах, моем опыте и опыте предыдущих потоков. Это вложение в себя окупится многократно! 📚

Почему сейчас идеальное время присоединиться?
Ограниченные места: внимание каждому участнику, поэтому группы небольшие.
Постоянное обновление: курс адаптируется, улучшается.
Сообщество единомышленников: поддержка и обмен опытом. 🤝

Не упустите возможность инвестировать в себя! Уже скоро опубликую анкету предзаписи 🚀

Вопросы? Пишите, с радостью отвечу 💬

#оптимизация #курс
Канал Oracle Developer | Чатик💬
Друзья, всем привет! 👋

Сегодня поговорим о том, какие задачи решает оптимизация и почему она важна для каждого разработчика.

Проблема №1: "Всё стало тормозить!"

Знакомо? Пользователи жалуются, начальство нервничает, и вам срочно нужно найти решение 😅
Представьте: вам приходит срочное сообщение от вашего тимлида или второй линии поддержки — "Вася, всё тормозит, срочно решай!". Ладошки потеют, мысли путаются. Что делать? Куда бежать? 😱😨

Если база данных ваша, и у вас есть доступ, то уже легче. Но что, если это база заказчика, например, банка, и доступа нет? Тут стресс усиливается вдвойне.

Проблема №2: Как написать оптимальный запрос с нуля

Важно сразу писать эффективные запросы, чтобы потом не пришлось исправлять и бегать с "горящей пятой точкой". Зная, как анализировать и понимать планы запросов, вы сможете сразу писать код, избегая потенциальных узких мест.


Как подойти к решению проблемы 1 и 2?

Многие начинают вслепую оптимизировать то, что им знакомо, даже если это не причина проблемы. Это как блуждать по темному лесу без фонарика и карты🌲

Только системный подход к решению проблем даст эффект. Именно ему, мы учим на курсе.
1️⃣ Диагностика: Как найти медленные запросы? Где узкие места? 🔍
2️⃣ План запроса: Что это такое и как его получить? 📋
3️⃣ Чтение и анализ плана: Что означают операции? Если не умеете читать план, не сможете решить проблему. 📖
4️⃣ Анализ: Где проблема? 🤔
5️⃣ Внедрение изменений: Как исправить и поставить в продакшн, если система работает 24/7? 🛠

Итог
После курса такие проблемы, как "всё тормозит" или "кнопка раньше работала за секунду, а теперь за минуту" станут для вас легко решаемыми. Вы сможете быстро находить и устранять узкие места, писать оптимальные запросы с нуля и чувствовать себя уверенно в любой ситуации 💪

А у вас бывали проблемы с запросами? А в 3 часа ночи? А в банке, в который вы поставили изменения в новом патче?
У меня бывало 😆 У кого какие треш-истории были?
Обсудить в чате 💬

#оптимизация #курс
Канал Oracle Developer | Чатик💬
Как справляться с высокими нагрузками на базу данных?

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

Сегодня поговорим о том, как оптимизация помогает справляться с высокими нагрузками на базу данных — тема, актуальная для многих разработчиков и DBA.

Что такое высокая нагрузка?

Высокая нагрузка может проявляться по-разному:

1️⃣ Много пользователей - когда большое количество пользователей одновременно обращаются к базе данных, даже простые запросы могут создать существенную нагрузку 👫👫👫

2️⃣ Тяжелые запросы - даже если пользователей немного, но каждый из них выполняет ресурсоемкие операции, нагрузка на базу данных возрастает. 🐘

Почему это важно?
База данных — это как автобус с ограниченным количеством мест. 🚌 Если слишком много пассажиров (запросов) или они слишком "тяжелые" (неоптимизированные), автобус не сможет быстро и эффективно доставить всех к месту назначения.

Как оптимизация помогает?

Оптимизация позволяет "усушить" тяжелые запросы, сделав их более легкими и быстрыми. Это как помочь полным пассажирам похудеть, чтобы в автобус вместилось больше людей без увеличения его размера, но при этом сохранить эффективность пассажиров. 🏋️‍♂️

Вертикальное масштабирование vs Оптимизация

Вертикальное масштабирование (добавление hardware-ресурсов) имеет пределы, может быть дорогостоящим 💰 При это навалив в два раза больше CPU вы, не получите увеличения скорости работы системы в 2 раза.
Оптимизация фокусируется на улучшении существующих запросов без дополнительных затрат на оборудование 🛠

Простой пример
Представьте метро в час пик 🚇 Люди толпятся, создается хаос. Если правильно организовать потоки пассажиров, установить указатели и разделить входящие и исходящие потоки, пропускная способность увеличивается без расширения станции. Аналогично и с базой данных: оптимизация запросов позволяет обработать больше операций за то же время.

Скинуть чуть позже еще один примерчик 😉

Почему компании инвестируют в оптимизацию?

🔸 Улучшение производительности: быстрые ответы базы данных повышают удовлетворенность пользователей.
🔸 Снижение затрат: нет необходимости тратить деньги на дополнительное оборудование.
🔸 Конкурентное преимущество: быстро работающие приложения привлекают больше клиентов.

Как вы справляетесь с высокими нагрузками в своих проектах? Поделитесь опытом в чатике 💬

#оптимизация #производительность
Канал Oracle Developer| Чатик 💬
Пример. Пуш-уведомления 📲

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

Ситуация. Вы совершаете платеж, и вам нужно получить пуш-уведомление с кодом подтверждения. Обычно оно приходит мгновенно. Но что, если уведомление задерживается на минуту или даже больше? 😱

Вы только представьте сколько слоёв приложений, запросов в базы данных, очередей, сетевых коммуникаций проходит сигнал нажатия кнопки "Оплатить" в вашем мобильном приложении до получения ПУШ-уведомления?
Огромное количество, в том числе не только на нашей стороне (например, Google Firebase).

Предположим, один из запросов в базу данных выполняется медленно. Вместо обычных 20ms, выполняется за секунду. Казалось бы мелочь - всего секунда. А таких запросов может и десяток набраться. Backend-разработчики, мне прекрасно понимают 😉 Короче, это всё влияет на время доставки пуша.

Пользователь недоволен, оплатить не может, бизнес теряет деньги 💸

Почему скорость важна?

SLA (Service Level Agreement): многие компании устанавливают строгие требования к времени отклика систем. Например, пуш должен быть доставлен не позднее 3 секунд.
Пользовательский опыт: Задержки снижают доверие к сервису.

Как оптимизация в слое БД решает проблему?

🔸Уменьшение времени выполнения запросов: оптимизированные запросы выполняются быстрее, что сокращает общую задержку.
🔸Снижение нагрузки на систему: эффективные запросы потребляют меньше ресурсов, позволяя обслуживать больше пользователей одновременно.

Что будет, если не оптимизировать?

1️⃣ Потеря клиентов: никто не будет ждать минутами подтверждения платежа.
2️⃣ Ущерб репутации: замедление сервисов подрывает доверие к компании.
3️⃣ Финансовые потери: нет клиентов, не могут оплатить - минус доход.

Оптимизация — это не просто улучшение кода, это стратегический инструмент для поддержания конкурентоспособности и удовлетворения потребностей пользователей. 🚀

А у вас были случаи, когда медленные запросы приводили к проблемам? Делитесь историями в чатике 💬

#оптимизация #производительность
Канал Oracle Developer | Чатик 💬
Как знания оптимизации Oracle помогают расти по карьерной лестнице
Кивилев Денис
Как знания оптимизации Oracle помогают подниматься по карьерной лестнице?

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

Сегодня у меня для вас не просто пост, а история, которая, возможно, заставит вас иначе взглянуть на оптимизацию Oracle как ключ к карьерному успеху. Расскажу, как одна книга и немного смекалки помогли мне не просто спасти ситуацию, но и укрепить свою позицию, стать важным специалистом и подняться на следующую карьерную ступень 📈.

Представьте: банк, проблемы с производительностью, и на кону доверие заказчика. Команда в растерянности, но тут на помощь приходит знания. Именно они превращают вас в специалиста, к которому идут за помощью — а дальше это открывает двери к росту и уважению.

В подкасте я делюсь этой историей и объясняю, почему оптимизация — ваш скрытый козырь. Хотите узнать, как стать ключевым игроком в команде?
Слушайте и делитесь своим опытом — уверен, будет что обсудить в чатике 💬

Длительность: 6 минут. на x1.2 вполне отлично 😉

Если аудио зашло, ставьте 👍🏻

#оптимизация #Denis_Kivillev #карьера #подкаст #аудиподкаст
Канал Oracle Developer| Чат 💬
Друзья, всем привет!

У меня для вас отличные новости!

Уже скоро откроется анкета предзаписи на обновленный курс "Оптимизации Oracle SQL" 🎉
Если вы хотите прокачать свои навыки и стать экспертом в этой области, не пропустите этот шанс!

А пока я активно работаю над подготовкой марафона по оптимизации, который планирую провести совсем скоро. 🏃‍♂️ Это будет интенсив, где за несколько дней мы глубоко погрузимся в тему и разберём реальные кейсы.

Почему это важно?

1️⃣ Практические навыки: получите знания, которые сразу сможете применять в работе.
2️⃣ Профессиональный рост: станете ценнее как специалист и откроете новые карьерные возможности.
3️⃣ Эффективность: научитесь решать задачи быстрее и качественнее.
4️⃣ Комьюнити: общение с единомышленниками и обмен опытом. 🤝

Следите за обновлениями, чтобы не пропустить анкету предзаписи и анонс марафона! 😉

Обсудить и задать вопросы можно в чатике 💬

#оптимизация #курс #марафон
Канал Oracle Developer| Чатик 💬
Задача. Хороший ли план?

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

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

В Oracle существуют explain (оценочный) и execution (реальный) планы запросов.
Получить explain-план, например, можно в любой IDE, которая поддерживает подключение к СУБД Oracle.

Теперь представьте, что у вас есть следующая таблица:
-- таблица
create table DEMO
(
key CHAR(4) not null,
value VARCHAR2(20 CHAR)
);

-- вставка
insert into demo
select 'K' || lpad(level, 3, '0'), level
from dual
connect by level < 1000;

-- ключи / индексы
create index DEMO_VALUE_IX on DEMO (VALUE);
alter table DEMO
add constraint DEMO_PK primary key (KEY)
using index;

-- запрос
select *
from demo
where value = 900;

План запроса на скрине ⬆️

Вопрос: насколько этот план хорош и почему?

Ответ на задачку - сегодня вечером 🎓

Обсудить в чате 💬

#оптимизация #задача
Канал Oracle Developer| Чат 💬
Решение задачи. Хороший ли план?

Постановка: в посте выше.

Анализ
В скрипте создания и наполнения таблицы присутствует создание индекса DEMO_VALUE_IX на поле value.
Разработчик, зная об этом, ожидает, что в приведённом запросе доступ к данным будет осуществляться посредством индекса.
С точки зрения селективности выборки, индекс оправдан, т.к. мы извлекаем одну запись из 1000.
Однако вместо этого происходит полное чтение таблицы - Table Access Full.

Причина в том, что тип данных в столбце value отличается от предиката.
Как это узнать?
Вариант 1 - вы на опыте и уже сталкивались с таким. Вариант 2 - копнув план запроса чуть глубже.

Для операции 1 в плане запроса будет указано следующее:
Predicate Information (identified by operation id):
------------------------------------------
* 1 - filter(TO_NUMBER("VALUE")=900)


Т.е. Oracle выполняет неявное преобразование каждого значения поля value к числу, чтобы сравнить его с переданным значением.
Поэтому вместо индексного доступа оптимизатор выбрал полное чтение таблицы. Ну, нет у нас подходящего индекса 🤷🏻‍♂️

Что можно сделать?
1️⃣ Использовать строковый литерал в предикате
-- запрос
select *
from demo
where value = '900';


2️⃣ Выполнить преобразование числового литерала к строке
-- запрос
select *
from demo
where value = to_char(900);


3️⃣ Построить индекс по to_number(value) не меняя изначальный запрос.
Будет функциональный индекс, который будет использован в первоначальном запросе.
Так делать не принято, но вдруг у вас нет доступа к кодовой базе, зато индекс вы создать можете.

План для первого решения на скриншоте ⬆️

Эти и другие тонкости работы с запросами мы проходим с ребятами на курсе "Оптимизация Oracle SQL". Велком 👌🏻


Коллеги, эта задача была составлена преподавателем нашей школы - Павлом Долгановым. Он ведет практики в нашей школе (три потока по PL/SQL и четвертый поток по "Оптимизации Oracle SQL").
Опытный разработчик, имеет огромный багаж знаний. Его посты будут периодически появляться у нас на канале 😉


Если понравилась задачка от Паши - ставьте 🔥 , ему будет приятно. До встречи 🖐🏻

Обсудить в чате 💬

#оптимизация #решениезадачи #Pavel_Dolganov
Канал Oracle Developer| Чат 💬
Что делать, если ваши запросы работают медленно?

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

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

Почему запросы тормозят? 🤔

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

Популярные ошибки при оптимизации запросов 🚧

1️⃣ Отсутствие системного подхода: Разработчики часто действуют наугад, не имея чёткого плана действий.

2️⃣ Непонимание плана выполнения: Получить план запроса — это одно, а вот правильно его прочитать и проанализировать — совсем другое.

3️⃣ Слепое создание индексов: Многие думают, что добавление индекса решит все проблемы. Но это не всегда так и может даже ухудшить ситуацию.

4️⃣ Игнорирование архитектуры приложения: Без учёта общей структуры и объёмов данных оптимизация отдельных запросов может быть бесполезной.

Как правильно подойти к оптимизации? 📝

Оптимизация — это поэтапный процесс. Вот 5 ключевых шагов:

1️⃣ Поиск медленных запросов: Сначала нужно выявить, какие именно запросы тормозят систему.

2️⃣ Получение плана выполнения: Далее необходимо получить план выполнения этих запросов для анализа.

3️⃣ Анализ плана: Научиться читать и понимать план выполнения — критически важно для выявления проблем.

4️⃣ Выявление узких мест: Определить операции, которые занимают больше всего ресурсов и времени.

5️⃣ Внедрение изменений и проверка: Внести необходимые корректировки, запустить их в продакшн и оценить результат.

На моём курсе мы детально разбираем каждый из этих этапов, учимся использовать эффективные методы и инструменты для оптимизации запросов в Oracle. 🎓

Почему это важно? 🌟

Ускорение работы приложений: Быстрые запросы делают приложение более отзывчивым и улучшают пользовательский опыт.

Повышение квалификации: Глубокие знания в оптимизации делают вас ценным специалистом на рынке. 💼

Карьерный рост: Способность решать сложные задачи открывает двери к более высоким позициям и зарплатам. 💰

Не упустите возможность! 🚀

Уже завтра откроется анкета предзаписи на мой курс по оптимизации Oracle SQL! 🎉

Учтите, что мест немного, чтобы обеспечить качество обучения и индивидуальный подход. Если вы хотите прокачать свои навыки и научиться эффективно оптимизировать запросы, это ваш шанс! 😉

Задавайте вопросы и делитесь своими мыслями в чатике 💬

#оптимизация #курс
Канал Oracle Developer | Чатик 💬
Отзывы студентов по оптимизации
Oracle DBD
Друзья, всем привет! 👋

У меня для вас отличные новости! 🎉

Открыта анкета предзаписи на мой обновленный курс "Оптимизация Oracle SQL. Основы" - 5-й поток! 🎓

И чтобы вы не думали, что это просто слова, я прикрепил аудио с отзывами от ребят, которые уже прошли обучение. Послушайте сами — они рассказывают, почему стоит записаться на курс и пройти его 🎧

Почему нужно записаться прямо сейчас?

🔸 Мест всего 15 — я делаю акцент на индивидуальной работе с каждым участником. В прошлый раз желающих было более 50 человек, так что места разлетелись очень быстро. 🚀
🔸 Анкета предзаписи будет открыта ровно на неделю!

О курсе
🔥 Продолжительность: 3 месяца основного курса + 1 месяц поддержки после прохождения.
🔥 Обновление: внесено более 30 правок и дополнений для повышения эффективности обучения.
🔥 Практика: ещё больше практических заданий, которые можно выполнять в свободное время.
🔥 Формат: видео-лекции на обучающей платформе, выполнение ДЗ, еженедельные встречи в Zoom для обсуждения вопросов и разбор кейсов.
🔥 Время в неделю: ~8 часов, включая занятия и выполнение заданий.
🔥 Стенд для практики: предоставляется доступ к Oracle 19c.

Цели курса
🎯 Довести вас до уровня уверенного специалиста, способного решать 80-90% типовых проблем с оптимизацией SQL-запросов и успешно проходить собеседования на позиции с ЗП от 300К.

🔹 Научиться находить и решать проблемы в PROD среде.
🔹 Научиться писать сразу оптимальные запросы.
🔹 Успешно проходить блок по оптимизации на собеседованиях.
🔹 Систематизировать знания и уверенно расти по карьерной лестнице.

Содержание курса
1️⃣ Выявление проблемных запросов — методы поиска и диагностики проблемных SQL.
2️⃣ Чтение и понимание планов запросов — как получать и интерпретировать планы выполнения.
3️⃣ Анализ планов запросов — как правильно читать и анализировать планы в Oracle.
4️⃣ Решение проблем — методы поиска проблем в SQL и способы их устранения.
5️⃣ Внесение изменений — практика оптимизации в базах данных OLTP и DWH системах.

🎁 Бонусы
Секреты работы с DWH, адаптивная оптимизация, статистика, трассировка оптимизатора и многое другое.

Блок для успешного прохождения собеседований и психология карьерного роста
🔸 Продвижение по карьерной лестнице внутри компании.
🔸 Рекомендации для успешного взятия самых сладких вакансий.
🔸 Зарубежный рынок, особенности и советы.
🔸 Как преодолеть препятствия на пути к роли ТимЛида.

Почему стоит выбрать этот курс?
Практический опыт с первого урока.
Реальные кейсы и сценарии из реальной жизни.
Индивидуальная поддержка и внимание к каждому участнику.
Ускоренное обучение с ментором.
Увеличение зарплаты через смену работы или рост в текущей компании.

Отзывы участников
💬 "За две недели получил несколько офферов и через месяц вышел на позицию почти x2 от предыдущей."
💬 "Окупил курс во время обучения в первый же месяц. Сейчас мой доход составляет 500К и выше."
💬 "Благодаря практике быстро освоил материал и начал помогать коллегам на работе, начальство заметило и повысило ЗП."
💬 "Единственный курс, который стоит очень дешево по сравнению с тем, что получаешь после прохождения."

🎥 Видео-отзывы: 1 поток, 2 поток, 3 поток, отзывы-скриншоты.


🍒 Вишенка на торте: Официальный сертификат о доп образовании и возможность получить налоговый вычет 🎓

Не откладывайте на потом — заполните анкету предзаписи уже сегодня! 📋

Бронируй место пока не поздно 👍🏻

Если есть вопросы, пишите в поддержку — вам с радостью ответят! 💬

#оптимизация #курс #предзапись
Канал Oracle Developer | Чатик 💬
Почему код начинает снова тормозить спустя некоторое время после оптимизации?

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

Вы наверняка сталкивались с ситуацией, когда после тщательной оптимизации система работает шустро, пользователи довольны, а вы можете выдохнуть. Но проходит некоторое время — неделя, месяц, полгода — и всё возвращается на круги своя: те же тормоза, жалобы и срочные звонки от начальства. Что же происходит? 🤔

Основные причины "тормозов":

1️⃣ Изначально некорректно написанный код с багами 🐞

Почему так происходит?
🔹 Недостаток опыта: разработчик мог быть новичком или не обладать достаточными знаниями в области оптимизации Oracle. В результате код содержит неэффективные алгоритмы и ошибки.
🔹 Сжатые сроки разработки: давление со стороны бизнеса или менеджмента может привести к тому, что код пишется наспех, без должного тестирования и оптимизации.
🔹 Отсутствие код-ревью и стандартов: без проверки кода коллегами и отсутствия общих стандартов качества легко пропустить баги и неэффективные решения.

Как справиться?
🔹 Провести аудит кода: регулярно анализируйте существующий код на наличие ошибок и неэффективных участков. Используйте инструменты статического анализа.
🔹 Рефакторинг: исправляйте и оптимизируйте проблемные места. Это может потребовать времени, но результат окупится повышением производительности.
🔹 Обучение: инвестируйте в повышение своей квалификации разработчика.
🔹 Внедрение процессов код-ревью: это поможет выявлять ошибки на ранних стадиях и повышать общий уровень качества кода.

2️⃣ Рост объёма данных 📈

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

3️⃣ Изменения в бизнес-логике 🔄

Добавление новых функций, изменение алгоритмов, новые отчёты — всё это влияет на нагрузку системы. Разработчики могут внедрять новые запросы без учёта оптимизации, что постепенно "засоряет" систему.

4️⃣ Обновления ПО и конфигураций 🛠

Обновление версии Oracle, патчи, изменения настроек сервера — всё это может влиять на работу оптимизатора и производительность системы в целом.

5️⃣ Устаревшая статистика 📊

Статистика данных устаревает, и оптимизатор начинает строить неэффективные планы выполнения. Регулярное обновление статистики — важный аспект поддержания производительности.

6️⃣ Фрагментация и проблемы с хранением данных 🗄

Фрагментация индексов, таблиц, заполнение дискового пространства — эти технические моменты могут негативно сказываться на быстродействии.

Что делать?

🔹 Мониторинг и профилактика: регулярное отслеживание производительности системы, использование инструментов мониторинга (AWR, ASH, OEM) для раннего выявления проблем.

🔹 Плановые оптимизации: не ждать, пока всё "сломается", а проводить периодические ревизии наиболее критичных запросов и процессов.

🔹 Обновление статистики: автоматизировать сбор и обновление статистики, чтобы оптимизатор всегда имел актуальные данные.

🔹 Анализ изменений: перед внедрением новых функций или изменений тщательно анализировать их влияние на систему.

🔹 Обучение: повышать квалификацию разработчика и DBA в области оптимизации, чтобы вы и ваше начальство понимали важность производительности.

Заключение

Оптимизация — это не разовое мероприятие, а постоянный процесс. Мир не стоит на месте: данные растут, бизнес меняется, технологии развиваются. Чтобы система оставалась производительной, необходимо постоянно уделять внимание её здоровью и качеству кода. 🩺 Этому я и учу у себя на курсе по оптимизации Oracle SQL.
Бронируй место пока не поздно 👍🏻

А как вы справляетесь с повторяющимися проблемами производительности? Делитесь опытом в чатике 💬

#оптимизация #производительность #Oracle
Канал Oracle Developer | Чатик 💬