Skip to content

Использование гибридной транзакционной/аналитической обработки в PostgreSQL

Пересказ статьи Sheikh Wasiu Al Hasib. PostgreSQL Hybrid Transactional/Analytical Processing using




Что такое HTAP?


HTAP - это аббревиатура от гибридной транзакционной/аналитической обработки (Hybrid Transactional/Analytical Processing). Она характеризует системы баз данных, которые могут обрабатывать как транзакционные (OLTP), так и аналитические (OLAP) рабочие нагрузки одновременно на одном и том же наборе данных. Такая возможность позволяет выполнять аналитические запросы к текущим транзакционным данным без необходимости извлекать, преобразовывать и загружать (ETL) данные в отдельное хранилище для последующего анализа.

Продолжить чтение "Использование гибридной транзакционной/аналитической обработки в PostgreSQL"

Настройка конфигурации PostgreSQL: лучшие практики и инструменты для повышения производительности

Пересказ статьи Uzzal Kumar Hore. PostgreSQL Configuration Tuning Best Practices and Tools for Production-Ready Performance


PostgreSQL является одной из наиболее мощных и универсальных баз данных с открытыми кодами, но установка из коробки не является вполне оптимизированной. Если вас серьезно беспокоит производительность - будь то OLTP, OLAP, смешанная нагрузка или данные временных рядов - важным моментом является настройка параметров конфигурации PostgreSQL.

Эта статья посвящена лучшим практикам настройки ключевых параметров PostgreSQL, обоснованию главных параметров конфигурации и разнообразным инструментам (включая, но не ограничиваясь timescaledb-tune), чтобы помочь автоматизировать или усовершенствовать этот процесс.

Почему PostgreSQL требует ручной настройки


Настройки по умолчанию в PostgreSQL намеренно консервативны - они рассчитаны на выполнение при минимальных аппаратных ресурсах. В результате, если вы имеете современную инфраструктуру (многоядерный ЦП, SSD, много оперативной памяти), эти параметры по умолчанию не могут в значительной мере использовать возможности вашей системы.
Продолжить чтение "Настройка конфигурации PostgreSQL: лучшие практики и инструменты для повышения производительности"

Новости за 2025-09-20 - 2025-09-26

§ Усилена проверка задачи 20 (DML). Проверьте свои решения.

§ Пересчитана сложность задач обучающего этапа.

§ Популярные темы недели на форуме
Топик		Сообщений	Просмотров
7 (Learn) 12 16
191 (Learn) 11 5
264 (SELECT) 11 5
120 (Learn) 10 8
240 (SELECT) 6 3

§ Авторы недели на форуме
Автор		Сообщений
pegoopik 25
selber 12
rock_4 10
llol 6
_artist 6

Продолжить чтение "Новости за 2025-09-20 - 2025-09-26"

Почему PostgreSQL предпочитает MergeJoin вместо HashJoin?

Автор: Андрей Лепихов

8 июля 2024 года - Why PostgreSQL prefers MergeJoin to HashJoin?


Сегодняшняя статья вызвана загадочным наблюдением: пользователи, особенно те, кто использует уровень абстракции наподобие REST или библиотек ORM для взаимодействия с базами данных, часто отключают опцию MergeJoin во всём экземпляре базы данных. Они оправдывают это действие многочисленными случаями снижения производительности.

Учитывая, сколько интересных путей выполнения MergeJoin добавляет в систему, разрабатывая IncrementalSort или порядки сортировки, полученные из лежащего в основе IndexScan, это выглядит странно: ещё одна ошибка искажённого баланса стоимости внутри модели стоимости PostgreSQL?

Как разработчик, я отказался принять такую загадочную веру в злонамеренные алгоритмы и исследовал этот случай. Оказалось, что настоящая причина (или, по крайней мере, одна из них, но довольно частая) кроется в типичной проблеме, с которой сталкивается оптимизатор: соединение по нескольким условиям.

Продолжить чтение "Почему PostgreSQL предпочитает MergeJoin вместо HashJoin?"

Когда планировщик запросов PostgreSQL плутует: погружение в оптимизацию запросов

Пересказ статьи Shailesh Kumar Mishra. When PostgreSQL Query Planner Goes Rogue: A Deep Dive into Query Optimization


Вы администратор баз данных, эксперт в PostgreSQL, специалист RDS/Aurora или архитектор решений, который борется с внезапным замедлением запросов? Узнайте, как воздействие на планировщик запросов PostgreSQL может преобразовать долгие минуты выполнения запросов в чудо-миллисекунды. Это исследование реального случая в PostgreSQL 14.2 должен помочь в вашем подходе к настройке запросов базы данных.

Вызов: когда быстрые запросы становятся медленными


Недавно я столкнулся со следующей ситуацией. Наша команда разработки приложений заявила о резком падении производительности запроса, который обычно выполнялся за секунды, но внезапно начал отрабатывать за несколько минут. Это исследование предлагает бесценные идеи тем, кто работает с PostgreSQL, вне зависимости от обслуживания локальных установок или же облачных решений типа Amazon RDS или Aurora.
Продолжить чтение "Когда планировщик запросов PostgreSQL плутует: погружение в оптимизацию запросов"

Почему следует избегать правил в PostgreSQL и использовать вместо них триггеры

Пересказ статьи Basant C. Why You Should Avoid PostgreSQL RULEs and Use Triggers Instead


PostgreSQL предлагает мощную - но часто неправильно воспринимаемую - возможность, называемую CREATE RULE, которая позволяет вам переписывать и дописывать под капотом запросы SQL. Эта система изначально была предназначена, чтобы сделать представления доступными для записи, но со временем некоторые пользователи попытались изменить ее назначение для общей автоматизации или управления доступом.

Именно здесь начинаются неприятности. :-(

В этой статье мы разберемся с тем, что делает CREATE RULE, как он работает изнутри, и почему почти всегда лучше вместо этого использовать триггеры. Попутно мы увидим реальные примеры ошибок и раскроем скрытые опасности, таящиеся в автоматизации на основе правил. Продолжить чтение "Почему следует избегать правил в PostgreSQL и использовать вместо них триггеры"

Как найти запросы с высокой загрузкой процессора в PostgreSQL

Перевод статьи: How To Find High CPU Utilization Query In Postgresql


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



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



Продолжить чтение "Как найти запросы с высокой загрузкой процессора в PostgreSQL"

Новости за 2025-09-13 - 2025-09-19

§ Ввиду простой подгонки решения задачи 191 (обуч.этап), под тем же номером опубликован ее клон.
Имеющиеся решения этой задачи удалены.


§ Популярные темы недели на форуме

Топик		Сообщений	Просмотров
20 (DML) 28 9
29 (DML) 3 4
191 (Learn) 3 2
779 (SELECT) 2 7
30 (DML) 2 4

§ Авторы недели на форуме

Автор		Сообщений
pegoopik 19
selber 6
rock_4 5
Rujan 4
Umrikhina 4
Продолжить чтение "Новости за 2025-09-13 - 2025-09-19"

Как использовать новую функцию PRODUCT() в SQL Server 2025

Пересказ статьи Edward Pollack. How to Use the New PRODUCT() Function in SQL Server 2025


С каждой новой версией SQL Server всегда появляются новые возможности, которые радуют нас тем, что наконец-то мы получили доступ к полезной функции, которая уже повсюду имеется.

Введенная в SQL Server 2025 CTP 1.3 функция PRODUCT() действует подобно SUM(), но не суммирует значения, а перемножает их. Это агрегатная функции в SQL Server и, следовательно, она работает с набором данных, а не с отдельными значениями.

Вычисление произведения без PRODUCT()


До появления этой функции написание на T-SQL перемножение ряда значений в множественной парадигме было возможно, хотя и не совсем красивым. Рассмотрим сценарий, в котором необходимо перемножить множество значений по времени для расчета постоянно растущей мультипликативной метрики, такой как проценты или инфляция.
Продолжить чтение "Как использовать новую функцию PRODUCT() в SQL Server 2025"
Категории: T-SQL

Понимание функциональных индексов в PostgreSQL

Пересказ статьи abdelrahman yasser. Understanding Functional Indexes in PostgreSQL


Что такое функциональный индекс?


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

Как работают функциональные индексы?

Продолжить чтение "Понимание функциональных индексов в PostgreSQL"

Новости за 2025-09-06 - 2025-09-12

§ Новая задача DML и перестановки:
новая заждача DML (1 балл) -> 20 -> 7 -> (-6).

Новая задача выставлена на обучающий этап под номером 191 (сложность 1 балл).


§ Популярные темы недели на форуме

Топик		Сообщений	Просмотров
308 (SELECT) 9 4
Guest's book 7 11
4 (DML) 3 7
22 (DML) 2 7
Продолжить чтение "Новости за 2025-09-06 - 2025-09-12"

Упражнение по запросу: исправить такой вычисляемый столбец

Пересказ статьи Brent Ozar. Query Exercise: Fix This Computed Column


Возьмите базу данных Stack Overflow любого размера и посмотрите на столбец WebsiteUrl в таблице Users:



Иногда там попадается NULL, иногда пустая строка, иногда содержится неверный URL.

Скажем, наконец, кто-то решил попросить ChatGPT построить функцию для проверки валидности URL веб-сайтов, а затем использовал этот код для добавления нового столбца IsValidUrl в таблицу Users (и да, реальный клиент вдохновил меня на это пример): Продолжить чтение "Упражнение по запросу: исправить такой вычисляемый столбец"

Снизить блокирование в SQL Server с помощью READ_COMMITTED_SNAPSHOT

Пересказ статьи Jared Westover. Reduce SQL Server Blocking with READ_COMMITTED_SNAPSHOT


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

В этой статье исследуется, как включение READ_COMMITTED_SNAPSHOT для вашей базы данных может облегчить чрезмерное блокирование. Сначала мы рассмотрим пример блокировок в нагруженной среде с уровнем изоляции по умолчанию Read Committed. Затем посмотрим на то, как включение уровня изоляции на основе версий строки снижает число блокированных чтений. К концу статьи вы будете готовы к тестированию этой возможности в вашей текущей среде.
Продолжить чтение "Снизить блокирование в SQL Server с помощью READ_COMMITTED_SNAPSHOT"

Новости за 2025-08-30 - 2025-09-05

§ Новая задача от selber на футбольную тему выставлена под номером 308 для обсуждения; сложность задачи 1 балл.
Задача 303 (SELECT) перенесена в отрицательные номера (-19).
Новая задача DML (1 балл) заменила задачу под номером 4, которая была перенесена в отрицательные номера (-5).


§ Поскольку решения задач DML с отрицательными номерами не требуется при получении сертификата, они стали доступны для решения получившим бан (при наличии оплаты участия в рейтинге). Пока таких задач немного, но их количество будет расти. Сегодня их уже стало на одну больше. :-)

Продолжить чтение "Новости за 2025-08-30 - 2025-09-05"

Начинаем работать с Google MCP Toolbox для баз данных: практическое руководство

Пересказ статьи Gary Svenson. Getting Started with Google MCP Toolbox for Databases: A Practical Guide


Что такое MCP Toolbox?


MCP Toolbox от Google является бесплатной утилитой с открытыми кодами, которая действует как мост между вашими приложениями ИИ и базами данных. Можно представить ее как универсальный транслятор: ваш ИИ может делать простые запросы, а MCP Toolbox преобразует их в запросы к базе данных (например, SQL), используя протокол MCP (Model Context Protocol) - стандартизованный способ взаимодействия инструментов и моделей.

Зачем использовать MCP Toolbox?


MCP Toolbox - это больше, чем просто транслятор запросов. Он оптимизирует ваш рабочий процесс, повышает безопасность и упрощает управление вашими ИИ-проектами.
Продолжить чтение "Начинаем работать с Google MCP Toolbox для баз данных: практическое руководство"