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