PostgreSQL в «Тензоре» — публикации за год (#2) +8



Добро пожаловать под кат, если вдруг вы пропустили какие-то из наших статей за прошедший год об интересных и полезных возможностях PostgreSQL, которые мы узнаем при разработке нашей системы полного цикла управления бизнесом СБИС — от кадрового учета, бухгалтерии, делопроизводства и налоговой отчетности, до таск-менеджмента, корпоративного портала и видеокоммуникаций.

Если не видели дайджест за первый год — время наверстать упущенное!


Анализ запросов в PostgreSQL

Как мы анализируем планы запросов, чтобы сделать их максимально быстрыми.

07.12 — One Tool to Analyze Them All (+18, ^13)

explain.tensor.ru поддерживает планы специфичных PostgreSQL-совместимых решенийTimescaleCitusGreenplum и Redshift.

15.06 — Анализируем «слона» вместе с коллегами (+7, ^20)

Теперь на explain.tensor.ru можно пригласить коллегу-иностранца, оперативно поделившись ссылкой в мессенджере, — ведь теперь на английский переведен весь интерфейс, включая подсказки по оптимизации плана.

13.09 — Кластеризуем миллионы планов PostgreSQL (+9, ^44)

Некоторые подходы, которые позволяют нам сводить миллионы планов в сутки всего лишь в десятки объектов, которые надо анализировать.


SQL Antipatterns и оптимизация SQL

Как поправить наиболее частые ошибки разработчиков при работе с базой.

14.12 — скованные одной цепью EXISTS (+10, ^39)

Разные варианты, как можно оптимизировать запросы с несколькими EXISTS.

13.07 — борем deadlock при пакетном UPDATE (+25, ^45)

Почему тривиальный запрос UPDATE tbl SET val = val + 1 WHERE id IN (1, 2, 3); приводит к deadlock, и как этого можно избежать.

17.08 — «слишком много золота» (+27, ^81)

Как получается, что между клиентским приложением и БД начинают летать мегабайты трафика: автогенерируемые запросы, INSERT вместо COPY, дублирующиеся параметры - все об этом.

24.08 — «где-то я тебя уже видел...» (+16, ^60)

Откуда в плане запроса возникают повторяющиеся блоки? LATERAL поможет улучшить производительность!


SQL HowTo

Учимся писать нетривиальные SQL-запросы для решения прикладных задач.

17.12 — префиксный FTS-поиск с релевантностью по дате (+8, ^29)

Как можно быстро найти записи по ключевым словам, если пользователь хочет видеть результаты с сортировкой по дате.

11.01 — рейтинг-за-интервал (+13, ^54)

Учимся строить "топ" товаров (или продавцов) "за текущий месяц".

20.04 — решаем головоломку «Небоскрёбы» почти без перебора (+32, ^61)

Разрабатываем сложный SQL-запрос на примере решения простой логической игры.

08.09 — три WHERE в одном запросе (+8, ^48)

Почему это может пригодиться для базы мониторинга?

16.11 — делаем из мухи слона (алгоритм Ли) (+20, ^52)

Используем волновой алгоритм для классической задачи Льюиса Кэррола.

22.11 — генерируем лабиринты (алгоритм Прима и геометрические типы) (+33, ^52)

Планарный граф укладываем на плоскость, и пошагали.


DBA

О базе надо заботиться, и делать это предельно аккуратно.

18.01 — Ночной Дозор (+19, ^39)

Как оптимизировать многогигабайтные посуточные секции append-only данных.

12.02 — «Кто-то слишком много ест!» (+29, ^68)

Находим слишком "раздувшиеся" таблицы, которым не может помочь autovacuum.

24.03 — когда почти закончился serial (+40, ^73)

С минимальными блокировками превращаем int4-PK в int8, пока база еще не "встала".

05.04 — меняем «слонов» на переправе (+10, ^22)

Как мы мигрировали базу мониторинга между версиями PostreSQL с помощью FDW.

12.05 — прибираем «мертвые души» (+17, ^39)

Если серверу PG внезапно стало плохо, на диске могут остаться "хвосты". Найдем и зачистим их.


Решения для PostgreSQL

Как можно решить разные возникающие "в энтерпрайзе" бизнес-задачи.

25.01 — Агрегаты в БД — зачем, как, а стоит ли? (+13, ^48)

Как и почему иногда агрегаты стоит оставить в базе, а не вытаскивать "наружу".

28.01 — Агрегаты в БД — эффективная обработка потока «фактов» (+13, ^41)

Собираем входящие данные для агрегирования так, чтобы не "лечь" под нагрузкой.

03.02 — Агрегаты в БД — многомерные суперагрегаты (+14, ^31)

Строим агрегаты сразу для разных разрезов.

08.02 — Агрегаты в БД — прокси-таблицы (+12, ^48)

Как можно снизить суммарные задержки на вставку множества изменений в таблицы агрегатов за счет использования промежуточных таблиц и внешней обработки.

15.03 — Случайности не случайны (+19, ^32)

Можно ли достоверно предсказать будущее хоть на немного вперед? Иногда - вполне, надо только много везения... или немного знаний.

25.05 — Множественные источники данных в интерфейсе — client-side «SQL» (+10, ^18)

Как сделать быстрый индексный выбор данных из нескольких источников в общий таймлайн.

19.08 — КЛАДРируем адреса произвольной формы (ч.1 — импорт) (+9, ^31)

Эффективно импортируем адресный справочник в свою базу. КЛАДР умирает, но дело его живет!

02.09 — КЛАДРируем адреса произвольной формы (ч.2 — подстрочный поиск) (+7, ^39)

Учимся быстро подсказывать адреса с помощью "двухмерного" LIKE.


Дайджесты и обзоры

26.11 — PostgreSQL в «Тензоре» — публикации за год (+23, ^60)

Путеводитель по статьям первого года.

01.04 — Энтерпрайз-домино. 0x13 вредных советов для ниндзя-разработчика (+21, ^39)

"Выращиваем" архитектуру бизнес-приложения, отбиваясь от вражеских агентов, тыкающих во все слабые места.

26.04 — Чего «энтерпрайзу» в PostgreSQL не хватает (+31, ^75)

Чего, по нашему опыту использования PostgreSQL в "кровавом энтерпрайзе" "Тензора"не хватает в этой СУБД.




Комментарии (0):