PostgreSQL: архитектура и тюнинг SQL-запросов
Погрузись в архитектуру и прокачай оптимизацию запросов одной из самых популярных open source СУБД – PostgreSQL.
🌐 В программе курса:
🤩 Разберем, как работают СУБД вообще и PostgreSQL в частности: что такое MVCC, ACID, WAL, LRU, PPC/TPC и другие фундаментальные понятия архитектуры баз данных
🤩 Получите теорию и практику EXPLAIN и EXPLAIN ANALYZE на разных типа запросов: без индексов, с индексами, index only, нормализованные и документ-ориентированные данные и json-поля, изменение параметров сессии/конфигурации для ускорения запросов
🤩 Изучите архитектуру хранения данных в PostgreSQL, типы и особенности индексов, а также получите полезные советы и трюки оптимизации БД
🤩 Получите свой собственный выделенный облачный PostgreSQL-сервер (8 vCPU, 12G RAM, 100G NVMe) – предоставляется БЕСПЛАТНО на время обучения + готовый e-commerce датасет TPC-H (миллион пользователей, несколько миллионов заказов на десятки гигабайт)
🗓 Старт курса: 22 января. 5 недель обучения.
Изучить программу и записаться можно здесь.
🤩 Кто мы: R&D-центр Devhands, основатель школы Алексей Рыбак. Автор курса — Николай Ихалайнен, эксперт по СУБД (ex-Percona), со-основатель MyDB, энтузиаст открытого ПО.
Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2Vtzqug1BVk
Погрузись в архитектуру и прокачай оптимизацию запросов одной из самых популярных open source СУБД – PostgreSQL.
Изучить программу и записаться можно здесь.
Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2Vtzqug1BVk
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤4🖕1
💡 SQL-совет, который спасает от самой “хитрой” ошибки
Одна из самых коварных ситуаций в SQL - когда ты ожидаешь данные, а запрос возвращает 0 строк, хотя “всё правильно”.
Чаще всего причина - `NOT IN` + `NULL`.
Если в подзапросе есть хотя бы один
Правило:
- ❌ Не используй `NOT IN` с подзапросами
- ✅ Используй `NOT EXISTS` или
-- ❌ ПЛОХО: NOT IN ломается из-за NULL
-- ✅ ХОРОШО: NOT EXISTS безопасен
Одна из самых коварных ситуаций в SQL - когда ты ожидаешь данные, а запрос возвращает 0 строк, хотя “всё правильно”.
Чаще всего причина - `NOT IN` + `NULL`.
Если в подзапросе есть хотя бы один
NULL, то NOT IN ломает логику и не вернёт ничего.Правило:
- ❌ Не используй `NOT IN` с подзапросами
- ✅ Используй `NOT EXISTS` или
LEFT JOIN ... IS NULL-- ❌ ПЛОХО: NOT IN ломается из-за NULL
SELECT *
FROM users u
WHERE u.id NOT IN (
SELECT user_id
FROM banned_users
);
-- ✅ ХОРОШО: NOT EXISTS безопасен
SELECT *
FROM users u
WHERE NOT EXISTS (
SELECT 1
FROM banned_users b
WHERE b.user_id = u.id
);
👍8🔥6❤2