Простой инструмент исторического анализа производительности - pg_profile
В поиске проблем производительности администраторам баз данных необходим инструмент исторического анализа нагрузки. Особенно важен подобный инструмент в случаях, когда было зафиксировано время нехарактерного снижения производительности системы, и вам надо выяснить что больше всего нагружало вашу СУБД в это время. Это и поиск ресурсозатратных запросов, и поиск активных и растущих объектов в схеме данных, статистики использования пользовательских функций и использования temp. Существует несколько инструментов, так или иначе решающих эту задачу. Я расскажу об одном таком инструменте, который легко устанавливается в виде расширения к СУБД Postgres, легко настриавается и позволяет получить отчет о нагрузке за некоторый период в прошлом, который будет неплохой начальной точкой дальнейшего расследования.
Слайды
Видео
Другие доклады
-
Олег Правдин Lingualeo CTO
Опыт плавной миграции высоконагруженного проекта (20+ млн. пользователей) c MySQL на PostgreSQL
Небольшая история о том, как переход на PostgreSQL увеличил на порядок эффективность работы компании:
- Программный код сократился в 50 раз, в команде разработки бэкенда вместо 15 человек осталось трое
- Сроки разработки нового функционала стали измеряться днями, а не месяцами
- Стоимость владения в расчете на 1 млн. пользователей снизилась в 20 раз
- Структура данных и документация существенно упростилась: вместо 100 тыс. таблиц со сложными связями стало 20 простых таблиц
- Повышение безопасности системы за счет запрета внешних SQL команд к базе данных
- Быстрый сбор аналитики по ключевым параметрам
- Без остановки работы бизнеса
-
Павел Конотопов inCountry DBA team leadЛеонид Альбрехт InCountry DBA
Строим энтерпрайз инфрастуктуру с PostgreSQL, как основу для системы хранения персональных данных
В своем докладе я расскажу, как мы строили географически распределенную систему хранения персональных данных на основе Open Source ПО и PostgreSQL. Концепция бизнеса «inCountry» состоит в предоставлении клиентам готовой к использованию инфраструктуры для хранения персональных данных. Чтобы пользователи были уверены в том, что персональные данные, которыми они оперируют, попадают в страну их происхождения и хранятся там безопасно, не пересекая границ государства, мы написали API и построили разнообразные сервисы. Наша система соответствуют общепринятым стандартам безопасности (SOC Type 1, Type 2, PCI DSS и т.д.). Мы строили нашу инфраструктуру с помощью Consul, Nomad и Vault, использовали PostgreSQL, ElasticSearch как системы хранения, Nginx, Jenkins, Artifactory, средства для автоматизации управления и развертывания. Собрали команду разработки, команды управления – DevOps, Security, мониторинга и DBA. Мы используем как облачных провайдеров, так и bare-metal сервера, расположенные в разных регионах мира. Разработка архитектуры системы и обеспечение устойчивости инфраструктуры, согласованной и безопасной работы всех ее компонент – главная задача, которая стоит перед нашими командами.
-
Брюс Момжиан EnterpriseDB Senior Database Architect
Non-Relational Postgres
Postgres has always had strong support for relational storage. However, there are many cases where relational storage is either inefficient or overly restrictive. This talk shows the many ways that Postgres has expanded to support non-relational storage, specifically the ability to store and index multiple values, even unrelated ones, in a single database field. Such storage allows for greater efficiency and access simplicity, and can also avoid the negatives of entity-attribute-value (eav) storage. The talk will cover many examples of multiple-value-per-field storage, including arrays, range types, geometry, full text search, xml, json, and records.
-
Брюс Момжиан EnterpriseDB Senior Database Architect
Unlocking the Postgres Lock Manager
Locking is critical for providing high concurrency for any database — you cannot fully utilize your hardware if locking is throttling its use. This talk explores all aspects of locking in Postgres by showing queries and their locks; covered lock types include row, table, shared, exclusive, and advisory lock types. The high concurrency provided by Multiversion Concurrency Control (MVCC) is also covered.
Slides are at https://momjian.us/main/writings/pgsql/locking.pdf