Под занавес уходящего года предлагаю традиционно вспомнить, про какие интересные возможности и особенности работы с PostgreSQL мы рассказали в нашем блоге.

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


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

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

Мы можем предложить наш комплекс по мониторингу серверов PostgreSQL, анализу запросов и визуализации их планов как для корпоративного использования на ваших мощностях, так и для интеграции в ваши системы управления - пишите на kilor@tensor.ru.

01.11 — PostgreSQL, что в логе твоем? (+29, *67)

В демо-режиме комплексного анализа логов PostgreSQL, вы можете загрузить лог своего сервера и наглядно увидеть, чем он у вас занимается.

20.07 — Self-hosted EXPLAIN: наглядно и безопасно (+32, *53)

Теперь вы можете развернуть наш визуализатор планов explain.tensor.ru на собственной площадке и больше не переживать о вопросах безопасности.

26.04 — Псс, парень… индекс нужен? (+22, *120)

Как с помощью explain.tensor.ru по плану запроса легко понять, каких именно индексов не хватает базе и почему.

13.04 — «Импортозамещаем» анализ планов PostgreSQL (+40, *63)

В связи с "самоизоляцией" explain.depesz.com от RU-пользователей рекомендуем использовать для анализа планов запросов PostgreSQL сервис explain.tensor.ru.


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

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

01.12 — простой(?) INSERT… VALUES (+35, *64)

Как больно наступить на грабли в совсем простом, казалось бы, запросе? Допустим, у вас есть табличка статистики, куда вы периодически скидываете таймстамп последнего "текущего" состояния в паре координат - например, (ID организации, ID сотрудника)...

29.07 — где скаляру в GiST место? (+10, *35)

Куда поставить идентификатор сегмента, если интервалы надо искать с ограничением по нему - до интервала или после?

07.07 — куда крутить NULLS (+21, *37)

NULLS FIRST или NULLS LAST - когда как правильно?

11.05 — когда мешает внешний ключ (+24, *73)

При использовании foreign keys можно легко хлебнуть горя, если не позаботиться о правильных индексах.

05.05 — в этом плане кто-то лишний (+10, *38)

Когда в запросе возникают избыточные сортировки и агрегации - это не здорово.

14.02 — рекурсивные грабли на ровном месте, или Сказка о потерянном времени (+17, *45)

Простое добавление даже неиспользуемой рекурсии в запрос может внезапно затормозить его в сотни раз.

31.01 — делаем группировку быстрее от 0.1 до 5 раз (+13, *73)

Не все группировки одинаково полезны - иногда в результате нескольких оптимизаций запрос может стать... медленнее!


SQL HowTo

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

13.07 — наперегонки со временем (+11, *70)

Как за ограниченное время выполнения заставить запрос вернуть хоть какую-то полезную информацию.

29.06 — обход дерева иерархии «по курсору» через двойную рекурсию (+15, *70)

Как можно обходить иерархию в стиле "бесконечного списка".

30.05 — «Ленивый сахар» PostgreSQL (+42, *151)

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

29.03 — разные варианты работы с EAV (+22, *52)

Модель Entity-Attribute-Value удобна для разработчика, но не для базы. Если поменять ее невозможно, то можно хотя бы выжать из нее максимум производительности.

11.02 — «простое» прогнозирование (+15, *60)

Как на основе данных за предыдущие периоды построить адекватный прогноз.

19.01 — считаем «уников» на интервале (+10, *39)

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


DBA

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

08.12 — хранение списков — таблица, массив, строка? (+14, *46)

Мини-холивар на тему эффективного хранения небольших списковых структур.

17.01 — Реверс-инжинирим структуру БД PostgreSQL по плану запроса к ней (+16, *50)

Как по плану запроса восстановить схему БД с помощью explain.tensor.ru.

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