Смоделируем работу очереди, где задачи приходят в разное время и имеют разные уровни приоритета, нужно определить, кто будет обслужен раньше.
В этом посте:
• Разберём, как упорядочить поток задач так, чтобы высокий приоритет перехватывал очередь;
• Построим механизм, который при равных приоритетах будет соблюдать FIFO и не нарушать логику поступления задач;
• Получим итоговый порядок обработки.
Техника помогает понять, как моделировать поведение планировщиков, прогнозировать задержки и анализировать нагрузку.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍12❤7🤝1
Знали, как найти отличия между двумя версиями таблицы?
SQL умеет находить уникальные строки сам:
Получите все строки, которые появились или были изменены.
Нужно увидеть удалённые строки? Поменяйте местами таблицы:
Хотите собрать все расхождения одной командой - и добавленные, и удалённые:
🔥 Теперь видно список всех отличий с указанием, что именно произошло: добавилось или исчезло.
➡️ SQL Ready | #совет
SQL умеет находить уникальные строки сам:
SELECT * FROM snapshot_new
EXCEPT
SELECT * FROM snapshot_old;
Получите все строки, которые появились или были изменены.
Нужно увидеть удалённые строки? Поменяйте местами таблицы:
SELECT * FROM snapshot_old
EXCEPT
SELECT * FROM snapshot_new;
Хотите собрать все расхождения одной командой - и добавленные, и удалённые:
(
SELECT *, 'added' AS diff
FROM snapshot_new
EXCEPT
SELECT *, 'added'
FROM snapshot_old
)
UNION ALL
(
SELECT *, 'removed' AS diff
FROM snapshot_old
EXCEPT
SELECT *, 'removed'
FROM snapshot_new
);
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19👍12🔥11
Набор приёмов, которые помогают уменьшить размер базы, ускорить выборки и точнее управлять её поведением: компактные таблицы без rowid, выборочные индексы, указание нужного индекса, очистка и пересборка через VACUUM, настройка страниц и кэша, а также анализ плана выполнения запросов. Подходит для локальных систем, аналитики, мобильных и встроенных приложений.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥8❤7🤝1
Оптимизатор не исполняет запрос построчно, он перестраивает его, выбирая наиболее дешёвую стратегию по статистике и форме данных.
Сегодня в гайде:
• Почему SQL переставляет JOIN’ы и фильтры;
• Как нестабильные функции и устаревшая статистика меняют план;
• Где оптимизатор может дать неожиданный результат по производительности.
Понимание оптимизатора показывает, какие шаги реально выполняет база и почему выбран именно такой план.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥14❤7🤝2
MERGE: атомарная вставка или обновление!
Оператор
Создаём таблицу:
Подготавливаем входящие данные с помощью
Здесь мы формируем набор входных данных, который будет использован оператором
Теперь выполняем
Операция выполняется одной DML-командой, что исключает необходимость выполнять отдельный
Проверяем результат:
🔥 Пример выше предназначен для
➡️ SQL Ready | #практика
Оператор
MERGE позволяет реализовать обновление данных и вставку новых записей в рамках одной операции. Это особенно важно при обработке данных, поступающих из внешних систем, где часть ключей может совпадать, а часть — быть новыми.Создаём таблицу:
CREATE TABLE clients (
id NUMBER PRIMARY KEY,
name VARCHAR2(200) NOT NULL,
email VARCHAR2(200) UNIQUE NOT NULL,
updated_at DATE DEFAULT SYSDATE NOT NULL
);
Подготавливаем входящие данные с помощью
CTE:WITH incoming AS (
SELECT 10 AS id,
'Ivan Petrov' AS name,
'ivan@example.com' AS email
FROM dual
)
Здесь мы формируем набор входных данных, который будет использован оператором
MERGE как источник.Теперь выполняем
MERGE, используя CTE как таблицу-источник:MERGE INTO clients c
USING incoming i
ON (c.id = i.id)
WHEN MATCHED THEN
UPDATE SET
c.name = i.name,
c.email = i.email,
c.updated_at = SYSDATE
WHEN NOT MATCHED THEN
INSERT (id, name, email, updated_at)
VALUES (i.id, i.name, i.email, SYSDATE);
Операция выполняется одной DML-командой, что исключает необходимость выполнять отдельный
SELECT.Проверяем результат:
SELECT * FROM clients WHERE id = 10;
Oracle. Оператор MERGE также поддерживается в SQL Server, DB2, Snowflake, BigQuery и PostgreSQL 15+. Синтаксис в разных СУБД может отличаться.Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤7🤝7
Когда продукт недоступен, каждая минута стоит денег: падают заказы, транзакции не проходят, пользователи уходят.
Сегодня в задаче:
• Выделим непрерывные последовательности ошибок, чтобы отделить реальные инциденты от разовых сбоев.
• Посчитаем длительность каждого инцидента на основе временных меток, получим время недоступности сервиса.
• Оценим финансовый ущерб, умножив длительность простоя на среднюю выручку в минуту”.
Отчет позволяет не просто зафиксировать сбои, но и посчитать ущерб от каждого окна простоя.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍9🔥7🤝2