Как стать автором
Обновить
160.13

PostgreSQL *

Свободная объектно-реляционная СУБД

Сначала показывать
Порог рейтинга
Уровень сложности

Как расширенные статистики помогли раскрыть неочевидную аномалию в VACUUM PostgreSQL

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.9K

Эксперт Postgres Professional Андрей Зубков «нырнул» в глубины VACUUM и выяснил, что детализированная статистика может выявить глубинные проблемы, которые критически влияют на производительность. Расскажем о том, что скрывалось в глубине PostgreSQL

Читать далее

Новости

«Попал в Яндекс через опенсорс»: как коммиты в опенсорсные СУБД помогают развивать продукт и команду

Время на прочтение8 мин
Количество просмотров3.9K

Привет, Хабр! На связи Андрей Бородин, в Yandex Cloud я руковожу направлением разработки СУБД с открытым исходным кодом — и я попал в Яндекс через опенсорс. Я уже немного рассказывал, что и зачем мы делаем в опенсорсных БД с точки зрения облачных сервисов, где мы развиваем PostgreSQL, Greenplum, Cloudberry, Valkey и другие решения.

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

На масштабах Яндекса возникают нетривиальные задачи, которые интересно решать. А когда мы делимся решениями с сообществом, то можем получить от них новый взгляд на проблему, и продолжить совместную разработку новой фичи в удобном формате: с кем‑то на условиях независимого сотрудничества, а кого‑то можем позвать в команду (как это было и со мной).

В общем, если придерживаться опенсорс‑философии, может возникнуть ситуация win‑win. Сегодня с коллегами Леонидом Борчуком @leborchuk и Дмитрием Сарафанниковым расскажу пару историй про то, как это бывает с опенсорсными СУБД.

Читать далее

Внутристраничная очистка в индексах PostgreSQL

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров2K

Внутристраничная очистка (HOT cleanup) — это оптимизация, благодаря которой старые версии строк могут эффективно удаляться из блоков таблиц. Освобождённое место используется под размещение новой версии строки. Освобождается только место, занимаемое версиями строк, вышедшими за горизонт базы данных (xmin horizon). В статье рассматривается алгоритм работы аналогичной оптимизации для индексов. Если горизонт удерживается, то ни внутристраничная очистка, ни вакуум не могут освободить место, и тогда новая версия строки вставляется в другой блок. Увидим на примере стандартного теста pgbench, как сильно может снижаться производительность при удержании горизонта базы данных (в случае когда есть сессия с долгим запросом или транзакцией) и разберемся в причинах снижения производительности.

Читать далее

Семантический поиск по статьям Хабра в PostgreSQL + индексация текстов LLM в Ollama

Уровень сложностиСредний
Время на прочтение21 мин
Количество просмотров4.3K

Покажу вам практическую реализацию семантического поиска на основе векторных представлений - эмбеддингов из текста. Здесь я создам систему, которая анализирует статьи с Хабра, извлекает из них темы и ключевые слова с помощью локально работающих больших языковых моделей LLM, и на основе этих данных создает векторные представления для эффективного поиска по смыслу, а не по запросу на вхождение определенного текста.

Читать далее

Трассировка запросов в Postgres с расширением pg_trace

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров2.9K

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

Читать далее

Вся мощь открытого исходного кода в PostgreSQL

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров3.9K

PostgreSQL — одна из самых популярных СУБД, и это во многом благодаря открытому исходному коду. В статье рассказывается о том, как открытость кода влияет на развитие PostgreSQL и создание сообщества вокруг неё.

Читать далее

Как оптимизировать PostgreSQL и не лишиться сна: разбор для разработчиков

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров14K

Когда вы разворачиваете веб-приложение, чаще всего у вас веб-сервер, бэкенд, база данных и авторизация оказываются на одном сервере. Первые пользователи, обычно тестировщики и менеджер, счастливы — все летает. Но потом приложение выходит в продакшн и начинается боль. Запросы тормозят и отвечают по пять секунд, CPU не загружен даже на треть, веб-сервер швыряет 504 Gateway Timeout и т. д. И вот вы сидите ночью и чините прод, потому что PostgreSQL — не просто «табличка с данными», а сложный инструмент с кэшем, индексами, буферами и планировщиком запросов.

Привет, Хабр! Меня зовут Александр Гришин, я руководитель по развитию продуктов хранения данных в Selectel и отвечаю за облачные баз данных и объектное S3 хранилище. В работе я часто сталкиваюсь с вопросами о производительности PostgreSQL, поэтому собрал практические советы для разработчиков, инженеров и архитекторов облачной инфраструктуры. В статье рассмотрим, как правильно использовать индексы, анализировать планы выполнения запросов и избегать типичных ошибок при проектировании схемы. Погнали!
Читать дальше →

Резервирование кластера Greengage DB (на базе Greenplum OSS)

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров1K

Greengage DB — это массивно-параллельная реляционная СУБД на базе Greenplum OSS, которая подходит для хранения и обработки данных. Позволяет выполнять сложные аналитические запросы над большими объёмами данных, предоставляя к ним гетерогенный доступ за счёт различного рода коннекторов и средств интеграции.

Но помимо функциональных возможностей, есть и ряд других необходимых вещей, таких как мониторинг, аудит, резервирование и пр. Они требуются для обеспечения полноценной и надёжной работы системы, особенно если речь идёт о промышленной эксплуатации. В рамках данной статьи как раз хочется обсудить подход к резервированию кластера Greengage: какие тут есть возможности, каковы подводные камни и многое другое.

Читать далее

Все, что нужно PostgreSQL: быстрые диски, дорогой процессор и терабайты RAM

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров16K

В облачном мире PostgreSQL возникает много вопросов. Какую конфигурацию выбрать для старта кластера? Сколько оперативной памяти и ядер CPU нужно под мою базу данных? Нужны ли под такой профиль нагрузки высокочастотные процессоры? Какое должно быть соотношение RAM к Storage в кластере? Хватает ли ресурсов и на системные службы, и на кэширование запросов? Не переплачиваю ли я?

Всем привет! Меня зовут Гришин Александр, я руководитель по развитию продуктов хранения данных в Selectel, отвечаю за объектное S3-хранилище и облачные базы данных. В этой статье я поделюсь своими практическими рекомендациями и ориентирами по планированию использования ресурсов кластера в PostgreSQL — в зависимости от типа и профиля нагрузки, размера данных и характера доступа к ним. Погнали!
Читать дальше →

Pytest-xdist: как распараллелить тесты без конфликтов в базе

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров2.1K

Привет! Я Андрей Сташок, бэкенд-разработчик в KTS. В этой статье я расскажу о запуске параллельных тестов через pytest-xdist.

Почему это важно?

Объясню на нашем примере. При разработке продуктов мы постоянно выполняем юнит-тестирование. Раньше мы проверяли все последовательно, и с расширением тестовой базы время проведения испытаний заметно возрастало. Распараллеливание через pytest-xdist помогло нам сильно ускориться, и сегодня я хочу поделиться этим трюком с вами.

Я расскажу, как запускать параллельные тесты для реляционной БД PostgreSQL (с драйверами asyncpg и psycopg2) и key-value БД Redis. Для подключения к реляционной БД мы будем использовать SQLAlchemy, а для Redis — библиотеку redis. Кроме того, я рассмотрю, как автоматизировать выполнение миграций при каждом запуске тестов с использованием alembic.

Читать далее

Работа с длинными строками в PostgreSQL

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров5K

Если в таблицах БД PostgreSQL есть поля большого размера, при выгрузке часть строк таких таблиц может не выгружаться с выдачей ошибки ERROR: out of memory. Столкнуться с подобной ситуацией можно, например, при выгрузке утилитой pg_dump таблиц, в которых хранятся XML-документы, или при выгрузке таблицы public.config системы «1C:Предприятие». В статье рассматриваются причины возникновения подобных ошибок и способы решения проблемы.

Читать далее

Правильный порядок колонок в B-tree индексах PostgreSQL или правило ESR

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров6.4K

Когда в проекте используется составной B-tree индекс, важно не просто "создать индекс", а сделать это правильно — иначе запросы могут не только не ускориться, но и начать работать медленнее. Возникает логичный вопрос: как выбрать порядок колонок, чтобы индекс действительно работал эффективно? Брутфорсом? По интуиции? По селективности?

В этой статье я расскажу, как подходить к построению составных индексов в PostgreSQL, на что реально влияет порядок колонок. Также разберём простое правило ESR, которое помогает упростить выбор и получать стабильный прирост производительности на всех стендах.

Читать далее

Секционируй и властвуй: делимся нетайными знаниями о секционировании в Postgres Pro

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров2.2K

В арсенале Postgres Pro есть мощное, но порой недооцененное оружие — декларативное секционирование. Оно только звучит сложно, а на деле позволяет элегантно «нарезать» гигантские таблицы, превращая их из неповоротливых монстров в управляемые и быстрые структуры. Делимся нетайными знаниями, которые помогут оптимизировать запросы и упростить жизнь. 

Читать далее

Ближайшие события

Как заставить вашу базу данных летать, а не ползать. Часть 1 масштабирование и репликация

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров11K

Всем привет! Меня зовут Илья Криволапов, тружусь системным аналитиком в SENSE на проекте одного из цветных банков РФ. В профессии я уже пятый год и, несмотря на фамилию, ломал прод всего лишь несколько незначительных раз (надеюсь). 

На досуге я преподаю в университете дисциплину «Хранение и обработка больших объемов данных» и за все время у меня накопилось много полезной информации. Непростительно хранить такой клад у себя в столе, поэтому я подготовил для читателей Хабра ультимативный гайд по оптимизации или хорошему такому, грамотному проектированию баз данных с расчетом на масштабирование.

Всего в цикле будет 3 статьи. В первой поговорим о двух разных подходах масштабирования БД и о том, как лучше его делать и как лучше не делать (Никогда. Пожалуйста). 

Кому будет полезно? Всем отвечающим за «здоровье» базы данных: DBA, архитекторам, DevOps-инженерам, аналитикам и разработчикам. 

Согласны? Узнали? Тогда поехали!

Читать далее

PGConf.Russia 2025 Москва — Непал

Время на прочтение10 мин
Количество просмотров1.5K

PGConf.Russia 2025 прошла в месте историческом: в Центре Международной Торговли. История её короткая, но эффектная: построили в конце 70-х, ЦМТ был сначала Совинцентром, потом «Хаммеровским центром» - это было в то время такое окно в Европу. Через окно входили и выходили технологии и бизнес. Скульптура Меркурия перед фасадом мелькала тогда то и дело в новостях. Бизнес, судя, например, по машинам на парковке, это здание (комплекс зданий) отнюдь не позабыл. Хотел написать (и, как видите, написал) круче только в Кремлёвском Дворце Съездов эту конференцию провести, но и не так, и КДС тут не при чём. Но я был впечатлён и вспоминал с некоторыми коллегами былые технологические события, проходившие здесь во времена, когда таких мест было раз два и обчёлся, а может и раз - без два.

Читать далее

Зачем нужен fillfactor в PostgreSQL

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров4.2K

Привет, Хабр!

Один параметр PostgreSQL может похоронить вашу производительность, если вы о нём забудете — это fillfactor. Почему однократная настройка числа приводит к неожиданным page split, bloat и мучительному откату запросов? Давайте разбираться.

Читать далее

Как мы под Новый Год загрузили в PostgreSQL петабайт данных и что из этого вышло

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров15K

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

А началось всё просто: пока все вокруг спорят как настраивать железо и тюнить операционные системы дабы выжать лишних TPS, мы решили проверить как отреагирует движок PostgreSQL если загрузить в него действительно большой объём данных. Например, давайте сделаем базу размером один петабайт и посмотрим как он это переживёт.

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

Читать далее

Шардированный не значит распределённый: что важно знать, когда PostgreSQL становится мало

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров11K

Шардирование, двухфазный коммит и распределенные транзакции окружены определенными мифами и заблуждениями. Например, может быть достаточно неочевидно, что двухфазный коммит обеспечивает только атомарность транзакций, но не их изоляцию. Поэтому мы решили написать пост, который бы помог разобраться в этих сложных вещах и сделать правильный выбор, когда Postgres'а Вам станет мало и Вы столкнётесь с шардированием.

Читать далее

Picodata: вторая жизнь in-memory баз данных

Уровень сложностиСложный
Время на прочтение17 мин
Количество просмотров5K

Привет, меня зовут Костя Осипов, и я занимаюсь разработкой СУБД. На Хабре есть несколько моих статей про MySQL, Tarantool и про всякое-разное. Кроме того, я веду Telegram-канал, где делюсь инсайтами в области управления базами данных. Сегодня я выступаю в роли основателя компании Picodata, создающей одноимённую открытую СУБД, и управляющего директора ПАО Arenadata по исследованиям и разработке. Ниже — вольный пересказ моего недавнего доклада на HighLoad. Он про то, что нас ждёт в мире СУБД завтра, и, в частности, про место резидентных СУБД в архитектурах будущего.

Читать далее

Задачи на собеседованиях. Денежные переводы в SQL. Обновление счетов и уровни изоляций

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров24K

Задачи на собеседованиях. Денежные переводы в SQL. Обновление счетов и уровни изоляций

Задача перевода денег в первом приближении сводится к обновлению пары строк и кажется простой — но обеспечение корректности при параллельном доступе может быть неожиданно сложным для только знакомящихся с уровнями изоляций БД.

Читать далее
1
23 ...