Skip to content

Новости за 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

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

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

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

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


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

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

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

Continue reading "Почему 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.
Continue reading "Когда планировщик запросов PostgreSQL плутует: погружение в оптимизацию запросов"

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

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


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

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

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

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

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


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



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



Continue reading "Как найти запросы с высокой загрузкой процессора в 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
Continue reading "Новости за 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 перемножение ряда значений в множественной парадигме было возможно, хотя и не совсем красивым. Рассмотрим сценарий, в котором необходимо перемножить множество значений по времени для расчета постоянно растущей мультипликативной метрики, такой как проценты или инфляция.
Continue reading "Как использовать новую функцию PRODUCT() в SQL Server 2025"

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

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


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


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

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

Continue reading "Понимание функциональных индексов в 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
Continue reading "Новости за 2025-09-06 - 2025-09-12"

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

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


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



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

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

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

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


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

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

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

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


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

Continue reading "Новости за 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 - это больше, чем просто транслятор запросов. Он оптимизирует ваш рабочий процесс, повышает безопасность и упрощает управление вашими ИИ-проектами.
Continue reading "Начинаем работать с Google MCP Toolbox для баз данных: практическое руководство"

Лучшее из двух подходов - реляционного и JSON - одновременно

Пересказ статьи Christopher Jones. The best of Relational and JSON — at the same time


Двойственные представления таблица-JSON в Oracle Database 23ai позволяют хранить данные в виде строк таблицы для получения преимуществ доступа SQL в реляционной модели, в то же время допуская доступ чтения и записи в виде документов JSON для тех же самых данных. Они могут использоваться из таких языков, как Node.js и ODP.NET. В этой статье показывается, как использовать новые представления в Python.

Реляционная модель великолепна: вы можете избегать дублирования данных; гарантируется согласованность данных; вы имеете доступ посредством очень мощного и очень эффективного языка - SQL. Но от разработчиков требуется определить реляционную схему - таблицы, столбцы и типы данных - прежде, чем начать писать код. Не так легко предсказать будущее использование системы, которое может вызывать затруднения для выбранной схемы.

Вот почему вы так любите JSON. Объект JSON может содержать информацию для одного случая использования без необходимости использовать SQL для соединения таблиц. Доступ через простой запрос или единичное обращение к API базы данных. JSON имеет гибкую схему, поэтому, поскольку ваши случаи использования меняются в процессе жизненного цикла системы, вы можете легко модифицировать приложения. Но есть и недостатки: единственная иерархия может подходить лишь нескольким случаям использования. В данных могут оказаться дубликаты, что не только влияет на занимаемое пространство, но делает очень сложным поддержание согласованности. Более трудной становится оптимизация. Поэтому на первый взгляд простая модель может вызывать сложности в долгосрочной перспективе. Continue reading "Лучшее из двух подходов - реляционного и JSON - одновременно"

Новости за 2025-08-23 - 2025-08-29

§ Изменения среди лидеров рейтинга

Рейтинг	Участник (решенные задачи)
21 gennadi_s (179)

§ Лидеры недели

	Участник		w_sel	all_sel	select	dml	Всего	Рейтинг
Belskiy V. (Gambit87) 13 56 21 0 21 976
DO R.M. (danchikPi) 3 9 5 0 5 2496
Vdovin S. (Rujan) 1 118 4 0 4 206
Блинов Р.К. (Blini) 2 47 4 0 4 1146

§ Претенденты на попадание в TOP 100

Рейтинг	 Участник (решенные задачи, время в днях)
137 Sa1avat (140, 151.500)
191 Tigra1 (126, 20.393)
206 Rujan (118, 359.116)
Continue reading "Новости за 2025-08-23 - 2025-08-29"