Highload++ 2017 завершён!

Профессиональная конференция разработчиков высоконагруженных систем

СКОЛКОВО, Москва 7 и 8 ноября

11-я ежегодная конференция для разработчиков highload-систем, которая соберет   2 700 участников из разных регионов России и мира. Мероприятие направлено на обмен знаниями о технологиях, позволяющих одновременно обслуживать многие тысячи и миллионы пользователей.

Программа охватывает такие аспекты веб-разработок, как архитектуры крупных проектов, базы данных и системы хранения, системное администрирование, нагрузочное тестирование, эксплуатация крупных проектов и другие направления, связанные с высоконагруженными системами.

  • Главная
  • Базы данных и системы хранения

Оптимизация high-contention write в PostgreSQL
Базы данных и системы хранения

Доклад принят в Программу конференции
Postgres Professional

Имеет статус PostgreSQL major contributor, разработал следующие фичи СУБД PostgreSQL: команда CREATE ACCESS METHOD, generic WAL-интерфейс, lockfree Pin/UnpinBuffer, индексный поиск по регулярным выражениям в pg_trgm, сжатие и "быстрый поиск" по GIN-индексам, буферизованный алгоритм построения и улучшенное разбиение страниц для GiST-индексов, статистика и оценки селективности для массивов и диапазонных типов, улучшения в нечётком поиске строк, KNN-GiST с перепроверкой по heap. Защитил кандидатскую диссертацию, основанную на своём вкладе в развитие PostgreSQL.

Postgres Professional

Наиболее известный российский ведущий разработчик PostgreSQL, которым он занимается уже более 20 лет. Олегом разработана поддержка русского и других языков, полнотекстовый поиск (при участии Ф. Сигаева и др.), поддержка слабоструктурированных данных (совместно с Ф. Сигаевым и А. Коротковым), новые типы индексов и многое другое.

Тезисы

Оптимизация производительности – дело тонкое. Улучшая производительность системы при одной нагрузке, можно запросто ухудшить её при другой нагрузке. Основным мерилом производительности PostgreSQL в среде его разработчиков является pgbench. Как следствие, PostgreSQL стал "pgbench-optimized DBMS" (СУБД, оптимизированная для pgbench).

Одна из особенностей pgbench – это использование равномерного распределения значений по умолчанию. Как известно, распределения в реальной жизни редко бывают равномерными. Поэтому в большинстве распространённых бенчмарков используются другие распределения, например, распределение Зипфа. Особенность этого распределения в том, что на малую часть данных приходится большая часть запросов. Как следствие, возникает high-contention write (высококонкурентная запись).

На распределении Зипфа мы нашли в постгресе много скрытых проблем, которыми раньше мало занимались. В частности, недостаточно хорошо на такой нагрузке работали row-level локи (как light-weight, так и heavy-weight), возникали проблемы, связанные с MVCC. В результате мы наблюдали ситуацию, что на определённых типах нагрузки постгрес отставал от других Open-Source баз.

Результатом данной работы стал целый ряд патчей, улучшающих поведение постгреса при high-contention write, и, конечно же, патч, добавляющий поддержку распределения Зипфа в pgbench. В докладе мы детально расскажем о внутренних проблемах постгреса при high-contention, а также о том, как мы их преодолеваем.

PostgreSQL

Другие доклады секции
Базы данных и системы хранения

Rambler's Top100