Мониторим и оптимизируем запросы PostgreSQL оптом и в розницу.
Строим сложные системы для бизнеса. Придумываем алгоритмы и реализуем в коде.
Нетривиальные подходы к решению тривиальных задач.
Дайджест:
—
PostgreSQL в «Тензоре» — публикации за год Анализ запросов в PostgreSQL:
—
One Tool to Analyze Them All —
Анализируем «слона» по частям —
PostgreSQL Query Profiler: как сопоставить план и запрос —
Правильно [c]читаем параллельные планы PostgreSQL —
Вооруженным глазом: наглядно о проблемах PostgreSQL-запроса —
Понимаем планы PostgreSQL-запросов еще удобнее —
Рецепты для хворающих SQL-запросов (видео) —
Массовая оптимизация запросов PostgreSQL (видео) —
О чем молчит EXPLAIN, и как его разговорить PostgreSQL Antipatterns и оптимизация SQL:
—
скованные одной цепью EXISTS —
DBA-детектив, или Три дела о потерянной производительности —
работаем с отрезками в «кровавом энтерпрайзе» —
убираем медленные и ненужные сортировки —
«Бесконечность — не предел!», или Немного о рекурсии —
уникальные идентификаторы —
«Должен остаться только один!» —
SELF JOIN vs WINDOW —
накручиваем себе проблемы —
насколько глубока кроличья нора? пробежимся по иерархии —
навигация по реестру —
вычисление условий в SQL —
сражаемся с ордами «мертвецов» —
сказ об итеративной доработке поиска по названию —
меняем данные в обход триггера —
ударим словарем по тяжелому JOIN —
редкая запись долетит до середины JOIN —
обновляем большую таблицу под нагрузкой —
передача наборов и выборок в SQL —
сизифов JOIN массивов —
статистика всему голова —
вредные JOIN и OR —
CTE x CTE SQL HowTo:
—
рейтинг-за-интервал —
префиксный FTS-поиск с релевантностью по дате —
ломаем мозг об дерево — упорядочиваем иерархию с рекурсией и без —
PostgreSQL 13: happy pagination WITH TIES —
курсорный пейджинг с неподходящей сортировкой —
красивые отчеты по «дырявым» данным — GROUPING SETS —
1000 и один способ агрегации —
пишем while-цикл прямо в запросе, или «Элементарная трехходовка» —
собираем «цепочки» с помощью window functions —
рисуем морозные узоры на SQL DBA:
—
Ночной Дозор —
кто скрывается за блокировкой —
в погоне за пролетающими блокировками —
мониторинг базы PostgreSQL — кто виноват, и что делать —
грамотно организовываем синхронизации и импорты —
находим бесполезные индексы —
перенос значений SEQUENCE между базами PostgreSQL —
когда пасует VACUUM — чистим таблицу вручную —
вычищаем клон-записи из таблицы без PK Решения для PostgreSQL —
Телепортация тонн данных в PostgreSQL —
У меня зазвонил телефон. Кто говорит?.. Поможет «слон» —
Классифицируем ошибки из PostgreSQL-логов —
Как мы в СБИС автоматический расчет себестоимости делали (видео) —
Экономим копеечку на больших объемах в PostgreSQL —
Пишем в PostgreSQL на субсветовой: 1 host, 1 day, 1TB —
Фантастические advisory locks, и где они обитают —
PubSub почти бесплатно: особенности NOTIFY в PostgreSQL —
БД мессенджера (ч.2): секционируем «наживую» —
БД мессенджера (ч.1): проектируем каркас базы Решения для NodeJS —
Первый парсер на деревне —
Immutable Trie: найди то, не знаю что, но быстро, и не мусори —
Динамическая балансировка нагрузки в pull-схеме —
Хеш+кэш: оптимизация «потоковой» обработки —
Большие аппетиты маленьких Buffer в Node.js —
Микропост: режем UNICODE-строки для PostgreSQL