Введение и цели 0:06 Обсуждение фич двенадцатого релиза PostgreSQL. Автор, Олег Бортунов, является разработчиком и генеральным директором компании. Цель - углубленное рассмотрение фич, доступных на конференции.
Изменения в работе с SQL и новые индексы 1:03 В двенадцатом релизе PostgreSQL кардинально изменились умолчания для работы с SQL. Введение новых индексов, таких как каверы, улучшающие производительность. Поддержка гисте и новые сторожи для оптимизации задач.
Эволюция баз данных и вклад PostgreSQL 3:00 Эволюция баз данных от примитивных до графовых. Вклад PostgreSQL в развитие баз данных, начиная с 2003 года. Введение языка JSONPath для навигации по структурам JSON.
JSONPath и его возможности 4:14 JSONPath позволяет выделять и индексировать нужные части JSON-дерева. JSONPath - это стандарт, поддерживаемый PostgreSQL. Примеры использования JSONPath для фильтрации и индексирования данных.
Поддержка JSONPath в PostgreSQL 6:11 JSONPath реализован как тип данных в PostgreSQL. Поддержка фильтров и операций над JSON-объектами. Различие между режимами Lax и Strict в JSONPath.
Примеры использования JSONPath 9:20 Примеры запросов с использованием JSONPath. Визуализация JSON-дерева и выделение нужных элементов. Преимущества использования JSONPath для логической и понятной структуры запросов.
Введение в функции JSONPath 11:55 В JSONPath можно искать строки с подстроками, используя две звездочки. В версии 11.0.0 добавлены функции для проверки существования ключа и выполнения запросов. Функции имеют одинаковую сигнатуру и позволяют передавать переменные.
Примеры использования функций JSONPath 13:29 Примеры использования функций JSONPath включают операторы exist и match. Операторы можно ускорять с помощью индексов, поддерживаемых JSONPath. Для сложных операций сравнения и включения доступно расширение JSONPath.
Оптимизация и будущее JSONPath 14:53 В будущем планируется поддержка новых функций и улучшений для JSONPath. В текущей версии 12.0.0 подавляется арифметические ошибки в фильтрах. Введено множество материалов и документации по JSONPath.
Использование CTE в SQL 15:50 CTE используется для создания временных таблиц, которые не оптимизируются. CTE позволяет писать сложные выражения, которые не оптимизируются оптимизатором. CTE может быть опасным, так как использует ворк-мем и может привести к свапу.
Примеры использования CTE 17:37 CTE может быть эквивалентно подзапросу, но выглядит лучше. Выражения в CTE не оптимизируются, что может привести к разным результатам. Пример использования CTE для рисования фрактала Мандельброта.
Интересные факты о CTE 19:18 CTE всегда исполняются, даже если не вызываются. В PostgreSQL до версии 11 CTE могли быть медленнее, чем SELECT. В версии 12 CTE теперь могут быть материализованы или не материализованы по умолчанию.
Материализация CTE 20:46 По умолчанию CTE не материализуются, что улучшает оптимизацию. Если CTE используется несколько раз, оно будет материализовано. Для предотвращения материализации нужно явно указать NOT MATERIALIZE.
KNN поиск ближайших соседей 22:40 KNN позволяет находить ближайшие объекты, используя индексы. В PostgreSQL KNN реализован эффективно и позволяет избежать хаков. KNN ускоряет запросы, особенно для больших баз данных.
Covering Index 24:51 Covering Index позволяет строить индексы для сложных запросов. В PostgreSQL 12 Covering Index поддерживается для GIST и SPHINX. Covering Index уменьшает трафик WAL и улучшает производительность.
Оптимизация индексов 26:50 В PostgreSQL 12 оптимизирована запись индексов, что уменьшает трафик WAL. Это улучшает производительность и снижает нагрузку на диск. Поддержка Covering Index доступна для GIST, SPHINX и JSON.
Репорт: прогресс 27:53 В PostgreSQL 12 можно отслеживать прогресс операций с индексами. Это помогает DBA управлять операциями и планировать ресурсы. Поддержка репорта: прогресс доступна для всех типов индексов.
Плаг и сторож 28:33 Плаг был сторожем, который хранил все версии данных в одном месте. Это приводило к раздуванию таблиц, что было решено изменением архитектуры. Теперь все версии данных хранятся в одном месте, что улучшает производительность.
Партишниг 31:32 Теперь можно использовать выражения для границ партиций. Ранта партишин прунинг позволяет откидывать ненужные партиции во время исполнения. Это улучшает производительность, особенно при работе с большими таблицами.
Тост декомпрессия 34:09 Тост декомпрессия позволяет эффективно работать с большими записями. Частичная декомпрессия ускоряет доступ к данным, особенно для префиксного поиска. Эксперименты показали значительное улучшение производительности при использовании тост декомпрессии.
Хранение данных в базе 36:53 Не стоит хранить много данных в базе, особенно если они редко используются. Пример: ID и JSON данные, которые можно хранить отдельно для оптимизации запросов. Идея: переписать TOAST для контроля хранения данных и их компрессии.
Новые функции в PostgreSQL 12 38:46 В PostgreSQL 12 добавлены новые функции, такие как MVCC и документация с фигурками. Вопрос о медленных функциях и их решении. Решение: использование индексов и поддержка в последних версиях.
Контроль целостности данных 41:20 В PostgreSQL 12 улучшен контроль целостности данных с помощью чек-сумм. Утилита для работы с чек-суммами в офлайн режиме. Вопрос о транзакциях REDON и их оптимизации.
Заключение и благодарности 46:12 Благодарность за вопросы и выбор лучшего вопроса. Обещание рассказать больше о PostgreSQL и других темах.