4. 4
Темы презентации
Реляционные структуры данных
Доступ к данным
Управление транзакциями
Организация хранения данных
Экземпляр системы: процессы, память
Администрирование системы
5. 5
Таблицы и типы данных
Категории типов данных
Числовые
Символьные
Бинарные
Дата, время, интервал
Логический тип
Перечисления
Геометрические
Сетевые адреса
Битовые строки
UUID
Типы текстового поиска
XML
JSON, JSONB
Массивы
Составные типы
Диапазоны
Псевдо типы
Домены
Пользовательские типы
6. 6
Ограничения целостности
Виды ограничений
Первичный ключ (PK)
Уникальный ключ (UK)
Внешний ключ (FK)
Обязательность заполнения (NOT NULL)
Проверка (CHECK)
Проверка значений столбцов для одной строки
Исключения (EXCLUDE)
Проверка значений столбцов для разных строк
Пример. Проверка на пересечение диапазонов
Могут быть отложенными (DEFERRED)
Добавление ограничений без проверки существующих записей (NOT
VALID)
7. 7
Индексы
Уникальные
По выражению (функциональные)
Частичные (WHERE)
Методы индексации
B-tree Оптимален в запросах на равенство и диапазоны (= > <).
Используется по умолчанию.
Hash Только для запросов на равенство.
GiST Обобщённое поисковое дерево: R-Tree, RD-Tree, Signature tree и
вариации. Поддерживается поиск ближайших соседей (KNN).
SP-GiST Для работы с несбалансированными структурами: K-D-tree,
Quadtree
GIN Обобщенный обратный индекс
BRIN (9.5) По диапазонам страниц
8. 8
Таблицы
Временные
Отдельная таблица для каждой сессии
Запись в системный каталог
Нежурналируемые (UNLOGGED)
Не реплицируются
Содержание не сохраняется при сбое сервера
Наследуемые (INHERITS)
Наследуют все столбцы и ограничения родительской таблицы
При запросе к родительской таблице, данные выбираются также из дочерних
Используются при секционировании
Внешние (fdw)
Подключение внешних источников данных
Возможность записи во внешнюю таблицу
Возможность создавать триггеры
Как секции в секционированной таблице (9.5)
9. 9
Секционирование
Реализация
Секции – это дочерние таблицы, наследуемые (inherits) от
родительской таблицы с ограничениями (check) на допустимые
значения
Триггер на родительскую таблицу для разнесения DML операций
по детальным таблицам
Параметр CONSTRAINT_EXCLUSION=ON
Расширение pg_partman позволяет автоматически управлять
секционированием, включая вложенные секции
Секции могут быть внешними таблицами (9.5)
Дополнительно
10. 10
Представления
Обычные
Реализация через правила (rules)
Временные
Обновляемые
Ограниченно
Материализованные
Обновление только через REFRESH MATERIALIZED VIEW
WITH CHECK OPTION
WITH (security_barrier)
Триггеры INSTEAD OF
15. 15
Темы презентации
Реляционные структуры данных
Доступ к данным
Управление транзакциями
Организация хранения данных
Экземпляр системы: процессы, память
Администрирование системы
17. 17
Планировщик запросов
Построение планов на основе собранной статистики
Нет подсказок планировщику
- есть параметры, влияющие на работу планировщика
- расширение pg_hint_plan
Запрос не может выполняться параллельно
- пока
Нет фиксации плана, переноса на другой сервер
- в Postgres Pro есть рабочий прототип, идет сбор требований
18. 18
Хранимые функции
Большой выбор ЯП
C, SQL, PL/pgSQL
В базовой поставке: PL/Perl, PL/Tcl, PL/Python
Дополнительно: PL/Java, PL/PHP, PL/Py, PL/R, PL/R, PL/Ruby, PL/Scheme, PL/sh
Интерфейс для подключения новых
Только функции, нет пакетов
Отдельные схемы для группировки функций
Нет зависимостей от объектов БД
Есть сторонние расширения
Нельзя сделать COMMIT
Можно SAVEPOINT .. ROLLBACK TO SAVEPOINT
Нет ORA-01555 "Snapshot too old"
Нет глобальных переменных (PL/pgSQL)
20. 20
Темы презентации
Реляционные структуры данных
Доступ к данным
Управление транзакциями
Организация хранения данных
Экземпляр системы: процессы, память
Администрирование системы
21. 21
Транзакции
Полная реализация ACID
Atomicity, Consistency, Isolation, Durability
Многоверсионность (MVCC)
читатели не блокируют писателей
писатели не блокируют читателей
Все уровни изоляции транзакций
28. 28
Темы презентации
Реляционные структуры данных
Доступ к данным
Управление транзакциями
Организация хранения данных
Экземпляр системы: процессы, память
Администрирование системы
31. 31
Организация данных
Размер файлов данных по умолчанию 1GB
Страница = блок (по умолчанию 8кб)
Fillfactor (PCTFREE)
TOAST
когда для строки 8кб мало
Сжатие данных
для столбцов с типом данных переменной длины
32. 32
Темы презентации
Реляционные структуры данных
Доступ к данным
Управление транзакциями
Организация хранения данных
Экземпляр системы: процессы, память
Администрирование системы
33. 33
Процессы и память
OSPostgreSQL
клиент postmaster
postgres
(серверный процесс)
fork()
общая память
shared buffers wal buffers clog buffers
locks shared cache invalidation ...
temp buffers
sorts, hashes
catalog cache
plan cache
...
служебные
процессы
background writer
wal writer
checkpointer
stats collector
autovacuum
syslogger
wal archiver
wal sender
wal receiver
fork()
кэш
34. 34
Процессы и память
Процессы
postmaster — основной процесс
backend — серверный процесс
utility processes — служебные процессы
Память
Разделяемая память: shared_buffers
Память backend (work_mem, max_connections)
Кэш операционной системы
Библиотечный кэш — на уровне backend
35. 35
Экземпляр и БД
Экземпляр системы (память, процессы) обслуживает
несколько БД
Табличное пространство может содержать объекты разных
БД
Роли, табличные пространства — общие объекты кластера
БД
36. 36
Темы презентации
Реляционные структуры данных
Доступ к данным
Управление транзакциями
Организация хранения данных
Экземпляр системы: процессы, память
Администрирование системы
37. 37
Пользователи и схемы
Роли: пользователи, группы
Суперпользователи
Схема <> Пользователь
Каждый объект БД имеет: схему, владельца (роль)
Нет синонимов → search_path
Псевдороль PUBLIC, схема PUBLIC
Существенные привилегии по умолчанию
42. 42
COPY
Выгрузка данных
COPY tbl TO ['file'|'program'|stdout] ...
Загрузка данных
COPY tbl FROM ['file'|'program'|stdin] ...
На клиенте (psql)
COPY ...
Существенно быстрее, чем INSERT
Нет аналога INSERT /*+ APPEND */
43. 43
pg_dump
Логическое копирование БД
Перенес в другую архитектуру
Переход на новую версию
Восстановление: psql, pg_restore
Возможности
Сжатие данных
Выгрузка и загрузка в несколько потоков
Консистентная выгрузка в несколько потоков
Выгрузка всего кластера: pg_dumpall
44. 44
Мониторинг
Коллектор статистики
Параметры для настройки
Сброс по требованию
Сторонние расширения
pg_stat_statements: статистика по отдельным запросам
pg_stat_plans: статистика по планам запросов
pg_buffercache: статистика по буферам
pg_stat_qcache: статистика на уровне кэша ОС
...
Плагины к системам мониторинга
Nagios, Zabbix, Munin, Cacti
Интегрированные системы мониторинга:
PoWA (PostgreSQL Workload Analyzer)
OPM (Open PostgreSQL monitoring)
Журнал сервера
Параметры для настройки
Ротация журнальных файлов
48. 48
Заключение
1. Вы найдете причины, чтобы не использовать PostgreSQL
2. Вы найдете возможности выполнить проект на PostgreSQL
Справедливы оба утверждения
Выбор за вами
49. 49
Контакты
Postgres Professional
Курсы по PostgreSQL
Авторизованный учебный центр ФОРС
Для вузов читаем бесплатно
Материалы будут доступны на нашем сайте
Документация на русском языке
www.postgrespro.ru/doc
Замечания, предложения:
edu@postgrespro.ru
p.luzanov@postgrespro.ru