раздел 33

PostgreSQL с нуля

PostgreSQL для тех, кто ставит его впервые. Установка, psql и GUI-клиенты, типы данных и автонумерация, таблицы с ограничениями и внешними ключами, запросы от SELECT до оконных функций, изменение данных, транзакции и индексы. Дальше то, за что Postgres выбирают: JSONB, массивы, полнотекстовый поиск, PL/pgSQL. Финал про эксплуатацию: MVCC и VACUUM изнутри, партиционирование, репликация, пулы соединений и бэкапы.

40 уроков40 тем · 10 кластеров

Начать раздел
Хочу пройти

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

«PostgreSQL с нуля» покупается один раз и остаётся навсегда: 500 ₽. Оплата пока не подключена, доступ открывается промокодом. ввести промокод

Уроки раздела

  1. Что такое PostgreSQL и чем он выделяетсяJ~15 минкурс
  2. Установка и подключение к базеJ~20 минкурс
  3. psql и мета-командыJ~20 минкурс
  4. Создание базы, таблицы и GUI-клиентыJ~20 минкурс
  5. Числовые типы: integer, bigint, numericJ~20 минкурс
  6. Автонумерация: serial и identityJ~20 минкурс
  7. Текст и даты: varchar, text, timestamp, intervalJ~20 минкурс
  8. Булев, спецтипы и приведение типовJ~20 минкурс
  9. CREATE TABLE подробноJ~20 минкурс
  10. Ограничения целостностиJ~20 минкурс
  11. Внешние ключи и связи таблицJ~25 минкурс
  12. ALTER TABLE и нормализацияJ~25 минкурс
  13. SELECT, WHERE, ORDER BY, LIMITJ~30 минкурс
  14. Соединения таблиц: JOINJ~20 минкурс
  15. Агрегаты, GROUP BY и HAVINGJ~20 минкурс
  16. Подзапросы, CTE и оконные функцииJ~25 минкурс
  17. INSERT, UPDATE, DELETE и RETURNINGJ~25 минкурс
  18. UPSERT через ON CONFLICTJ~20 минкурс
  19. Транзакции и ACIDJ~20 минкурс
  20. Индексы, EXPLAIN и VACUUMJ~20 минкурс
  21. Работа с JSONBJ~25 минкурс
  22. Представления (VIEW)J~25 минкурс
  23. Функции и PL/pgSQLJ~30 минкурс
  24. Роли, права и резервные копииJ~25 минкурс
  25. Типы индексов: B-tree, Hash, GIN, GiST, BRINJ~25 минкурс
  26. EXPLAIN и EXPLAIN ANALYZE: читаем планJ~25 минкурс
  27. Стратегия индексирования: составные, частичные, по выражениюJ~20 минкурс
  28. Почему индекс не используетсяJ~25 минкурс
  29. JSONB: хранение и доступJ~30 минкурс
  30. Запросы и индексы по JSONBJ~30 минкурс
  31. Массивы в PostgreSQLJ~30 минкурс
  32. Полнотекстовый поиск: tsvector и tsqueryJ~25 минкурс
  33. MVCC изнутри: версии строк, xmin и xmaxJ~20 минкурс
  34. Мёртвые кортежи и раздувание таблицJ~20 минкурс
  35. VACUUM и autovacuumJ~20 минкурс
  36. Уровни изоляции и блокировки в PostgreSQLJ~25 минкурс
  37. Партиционирование таблицJ~20 минкурс
  38. Репликация: потоковая и логическаяJ~20 минкурс
  39. Пулы соединений и масштабирование чтенияJ~20 минкурс
  40. Бэкапы, расширения и мониторингJ~25 минкурс

Понятия курса

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

Введение в PostgreSQL

Типы данных PostgreSQL

Таблицы, ограничения и схема

Запросы и выборка данных

Изменение данных и производительность

  • Индексы, EXPLAIN и VACUUMЗачем индекс, CREATE INDEX, первый взгляд на EXPLAIN, Seq Scan против Index Scan, цена индекса на запись, мёртвые версии строк и VACUUM.урок 20 · Индексы, EXPLAIN и VACUUMопираются: урок 21
  • Транзакции и ACIDBEGIN, COMMIT и ROLLBACK в PostgreSQL, автофиксация, прерванная транзакция после ошибки, SAVEPOINT, транзакционный DDL и уровень изоляции по умолчанию.урок 19 · Транзакции и ACIDопираются: урок 20
  • INSERT, UPDATE, DELETE и RETURNINGВставка одной и многих строк, INSERT ... SELECT, UPDATE и DELETE с WHERE и без, UPDATE ... FROM, RETURNING вместо второго запроса, TRUNCATE.урок 17 · INSERT, UPDATE, DELETE и RETURNINGопираются: урок 18
  • UPSERT через ON CONFLICTON CONFLICT DO NOTHING и DO UPDATE, EXCLUDED, цель конфликта по ключу или ограничению, гонка «проверь, потом вставь» и MERGE.урок 18 · UPSERT через ON CONFLICTопираются: урок 19

Продвинутое и эксплуатация

Индексы и оптимизация запросов

JSONB, массивы и полнотекстовый поиск

  • Запросы и индексы по JSONBОператоры @>, ?, ?| и ?&, jsonpath и jsonb_path_query, GIN с jsonb_ops и jsonb_path_ops, B-tree по выражению для одного ключа, что ускоряется, а что нет.урок 30 · Запросы и индексы по JSONBопираются: урок 31
  • Массивы в PostgreSQLТип массива, литералы и ARRAY[], индексы с единицы, ANY, @>, && и unnest, array_agg, GIN по массиву, когда массив заменяет связующую таблицу, а когда нет.урок 31 · Массивы в PostgreSQLопираются: урок 32
  • Полнотекстовый поиск: tsvector и tsqueryПочему LIKE не поиск, лексемы и словари, to_tsvector и to_tsquery на русском, оператор @@, ранжирование ts_rank, подсветка ts_headline, GIN-индекс и генерируемая колонка.урок 32 · Полнотекстовый поиск: tsvector и tsqueryопираются: урок 33
  • JSONB: хранение и доступДвоичный формат jsonb против текстового json, нормализация ключей, извлечение по путям #> и #>>, изменение через jsonb_set, || и минус, jsonb_each и jsonb_array_elements, когда JSONB, а когда колонки.урок 29 · JSONB: хранение и доступопираются: урок 30

MVCC, VACUUM и обслуживание

Масштабирование, репликация и эксплуатация

  • Бэкапы, расширения и мониторингЛогический и физический бэкап, pg_basebackup и архив WAL, восстановление на момент времени, проверка восстановления, расширения и pg_stat_statements, что мониторить, обновление версии.урок 40 · Бэкапы, расширения и мониторинг
  • Партиционирование таблицДекларативное партиционирование по диапазону, списку и хешу, отсечение секций в плане, секция по умолчанию, отключение и удаление старых секций, ограничения ключей.урок 37 · Партиционирование таблицопираются: урок 38
  • Пулы соединений и масштабирование чтенияПроцесс на соединение и max_connections, пул в приложении и PgBouncer, режимы session и transaction, чтение с реплик и задержка, когда масштабировать вертикально.урок 39 · Пулы соединений и масштабирование чтенияопираются: урок 40
  • Репликация: потоковая и логическаяWAL как основа репликации, ведущий и реплики, синхронная и асинхронная, отставание реплики, логическая репликация через публикации и подписки, переключение при отказе.урок 38 · Репликация: потоковая и логическаяопираются: урок 39