Skip to content

Instantly share code, notes, and snippets.

@mizhka
Last active January 29, 2025 07:46
Show Gist options
  • Save mizhka/e795d65cda08a203d6e48ab71d493e6e to your computer and use it in GitHub Desktop.
Save mizhka/e795d65cda08a203d6e48ab71d493e6e to your computer and use it in GitHub Desktop.
Тестовое задание

Задача

Сделать отчёт о производительности вставки данных в СУБД PostgreSQL

  • написать на любом языке программу вставки данных в PostgreSQL
  • выполнить замер на 10 минут, собрать метрики, сделать профилирование и составить отчёт о производительности вставки
  • тест проведен на OS Linux (Debian/Ubuntu) и PostgreSQL 16
  • отчёт в формате Markdown

Базовые требования

  • Можно вставлять любые фейковые данные
  • Приложение должно принимать два параметра:
    • количество параллельных потоков
    • длительность вставки
  • Отчёт должен содержать выводы (не только метрики)

Будем плюсом

  • Профилирование с помощью Perf / eBPF с построение flame graph-ов
  • Отсутствие воды в отчёте
  • Профилирование операций ввода-вывода с помощью blktrace или другого механизма
  • Предложена оптимальная конфигурация PostgreSQL

Требования к коду:

  • Язык разработки: любой (Java, C, Go, Rust...)
  • Библиотеки можно использовать любые
  • Реляционная СУБД: PostgreSQL
  • Код должен быть выложен на Github с Readme файлом с инструкцией по запуску и примерами. Важно, чтобы по инструкции можно было запустить код и он работал
  • При возникновении вопросов по ТЗ оставляем принятие решения за кандидатом. Желательно отразить в Readme какие вопросы возникали и какие решения были приняты
@mizhka
Copy link
Author

mizhka commented Jan 28, 2025

Шаги:

  • postgresql 17 + SQL файл для генерации данных
  • задачки:
    - ускорить select c1 from t where id = ? (без индекса)
    - ускорить select max(t.id) from t left join s where t.c1 = s.c1;
    - ускорить select с коррелировавнным (not) exists - (анти) join
    - ускорить использование subtransactions больше 100 штук

Кураторы:

  • Миша Сироткин (perf, системное программирование)
  • Паша Сафонов (а он готов? perf, go/ansible программирование)
  • Дима Новицкий (???, ansible автоматизация)
  • Дима Муравский (???, исследования, запуски)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment