Оптимизация запросов к данным типа “множество” с помощью индексов GIN, GiST, и пользовательских расширений для индексирования
Очевидно, что множества удобно использовать в различных типах приложений. Хотя в PostgreSQL и нет встроенного типа для множеств, до некоторой степени их можно смоделировать с помощью встроенных типов “массив” и “JSONB”. Кроме того, возможность ускорения запросов с операциями вхождения уже встроена в реализацию индексов GIN.
После краткого обзора существующей функциональности, мы рассмотрим, как добавление пользовательских типов “множество” и, в частности, модификация кода на С ("классы операторов") для индексов GIN и GiST, может повысить производительность.
Слайды
Другие доклады
-
Дмитрий Лебедев BestPlace Разработчик-исследователь ГИС
Исследования геоданных при помощи PostGIS и смежных инструментов
Сегодня работая с открытыми данными можно сделать интересные исследования в области городской среды и географии, с перспективными и нетривиальными выводами. В докладе я дам примеры пространственных расчётов на PostGIS — фактическом пром стандартом в области.
Но одного PostGIS мало, и в работе требуются инструменты для импорта, проверки и визуализации данных. Кроме того критически важно видеть что происходит с нашими данными и сокращать итерации работы, о чём я подробно расскажу.
- Сбор данных; базы данных, открытые API, OpenStreetMap; ввод геоданных от пользователя.
- Применение сторонних API для расчётов и обработки.
- Вывод и визуализация результатов: QGIS, Matplotlib, Zeppelin — интеграция с PostGIS.
- Отладка расчётов - визуализация "на лету" (Arc, QGIS, NextGIS Web)
- Воспроизводимость и автоматизация действий: скриптинг и отслеживание зависимостей на Makefile, Gulp
-
Дмитрий Вагин Avito Lead Engineer
Мониторинг PostgreSQL в Авито, с примерами
Небольшой доклад о том как Avito собирает и мониторит нагрузку на базы данных. Отправка метрик из хранимых процедур в Graphite. Сбор метрик pg_stat* и отображение их в Grafana. Примеры из жизни.
ВИДЕО
-
Олег Иванов Postgres Professional Разработчик
Адаптивная оптимизация запросов в PostgreSQL
Оптимизация запросов является важной задачей, решение которой существенно влияет на производительность СУБД, особенно при выполнении сложных запросов. В докладе будет рассмотрен оптимизатор запросов PostgreSQL, и, в частности, задача определения мощности вершины с зависимыми условиями, которая является одной из самых известных проблем стоимостных оптимизаторов. Предлагается решение этой проблемы, использующее методы машинного обучения и доступное в виде расширения с патчем для PostgreSQL 9.6. В докладе приводятся результаты экспериментального исследования предложенного решения, обсуждаются его плюсы и минусы, а также область применимости.
ВИДЕО
-
Masahiko Sawada NTT OSS Center
Встроенный шардинг: текущее состояние и будущее
Шардингом базы данных называют распределение данных по большому количеству серверов для повышения производительности при работе с большими объемами данных. С появлением технологии Foreign Data Wrappers (FDW), стало возможным рассматривать шардинг в постгресе при разумном объеме изменений программного кода. Я занимаюсь улучшением инфраструктуры FDW, в т.ч. наследованием внешних таблиц и push-down запросов, что позволяет постгресу эффективно исполнять распределенные запросы через FDW. В этом докладе мы рассмотрим шардинг на FDW и его сценарии использования, затем я продемонстрирую, как организовать шардинг, и покажу, что для этого было сделано в постгресе. В заключение мы рассмотрим основные планы на будущее - в первую очередь, это асинхронное исполнение запросов и поддержка распределенных транзакций.