title

text

Дмитрий Руденко
Дмитрий Руденко Тинькофф Центр Разработки Ведущий инженер баз данных
14:30 09 апреля
20 мин

Что в черном ящике? Или как помочь разработчику понять, что требует оптимизации в БД

Всем нам хочется быть немножко Шерлоками и расследовать интересные и запутанные дела. Жизнь, однако, вносит свои коррективы и большинство задач на выходе имеют банальные решения вроде - добавьте индекс по такому-то полю. Обилие баз и команд приводит к постоянному фону таких задач. Ситуацию усложняет повсеместное использование всякого рода ORM. И сами разработчики и ORM, зачастую не особенно беспокоятся вопросами эффективного доступа к данным (построение запросов, наличие и оптимальность состава индексов итд). В докладе рассматривается инструмент мониторинга и анализа состояния баз данных Postgres созданный на основе Grafana. Особенно подробно рассмотрены части, которые помогают разработчикам самостоятельно понять, где и каким образом образуются слабые места в его взаимодействии с базой.

Слайды

Слайды доступны участникам мероприятия, выполнившим вход в личный кабинет.

Видео

Видео доступно участникам мероприятия, выполнившим вход в личный кабинет

Другие доклады

  • Александр Котин
    Александр Котин Postgres Professional Старший технический менеджер продукта
    40 мин

    Управление планами запросов - новые возможности

    Расскажем о новых возможностях и продвинутых техниках управления планами запросов (совместное использование AQO, sr_plan и pg_hint_plan)

  • Владлен Пополитов
    Владлен Пополитов Postgres Professional разработчик программного обеспечения
    40 мин

    Зачем мне векторная база данных, если уже есть PostgreSQL?

    В 2023 году было анонсировано рекордное количество новых векторных баз данных. Mы расскажем о феномене векторных баз данных, раскроем суть этого явления и продемонстрируем, как векторные СУБД решают проблему производительности операций с векторами больших размерностей, и что препятствует реляционным базам данных конкурировать с ними в настоящее время. Несмотря на общий интерес к векторным базам данных, есть мнение о том, что существующие реляционные СУБД скоро смогут эффективно поддерживать операции с многомерными векторами, сохраняя традиционно богатый функциональный набор, что особенно важно для корпоративных пользователей. Например, для PostgreSQL уже созданы несколько расширений для работы с многомерными векторами, таких как pgvector, diskann, а также несколько коммерческих вендоров PostgreSQL объявили о поддержке работы с векторами. Мы рассмотрим используемые в этих расширениях алгоритмы, остановимся на недостатках и покажем возможные пути их улучшения.

  • Николай Шаплов
    Николай Шаплов Postgres Professional Fuzzing Engeener
    40 мин

    Fuzzing-исследование PostgreSQL. Как мы искали и что мы нашли

    Фаззинг-исследование, это когда мы подаем в программу (или ее часть) случайные входные данные (на самом деле случайность весьма условна) и смотрим что из этого получится. И так много раз на многих процессорах.

    Фаззинг исследование большого монолитного программного комплекса всегда не простая задача требующая неординарных решений. В этом докладе я расскажу что и как мы искали при помощи фаззинга и к каким результатам оно привело.

    Исследование функций парсинга типов данных (input-функции): для разогрева;
    Исследование функций реализующих операции между типами (op-функции): тут лучше учитывать структуру;
    Фаззинг сетевой подсистемы: давайте притворимся, что мы POSIX-вызовы, так дешевле;
    Восстановление дискового контекста: нужен день сурка.
    

  • Леонид Борчук
    Леонид Борчук Яндекс Разработчик
    20 мин

    Планы выполнения в pg_stat_statements

    Есть много opensource (и еще больше проприетарных) форков pg_stat_statements, которые позволяют смотреть планы выполнения запросов:

    pg_stat_plans https://github.com/2ndQuadrant/pg_stat_plans
    pg_store_plans https://github.com/ossc-db/pg_store_plans
    pg_stat_monitor https://github.com/percona/pg_stat_monitor

    Все они мне чем-то не подошли и я написал свое https://github.com/postgredients/pg_stat_query_plans. Расскажу что и как сделал, и что хотелось бы добавить в оригинальный pg_stat_statements, чтобы мое расширение было не нужно