Skip to content

Вредят ли производительности подтранзакции в PostgreSQL?

Автор: Shane Borden, Do PostgreSQL Sub-Transactions Hurt Performance?


Краткий ответ всегда: «возможно». Однако в этой статье я надеюсь продемонстрировать, что создаёт подтранзакции и что происходит с использованием общих идентификаторов транзакций (XID), когда они вызываются. Я также покажу, как на производительность влияет большое количество подключений, создающих и потребляющих подтранзакции.


Продолжить чтение "Вредят ли производительности подтранзакции в PostgreSQL?"

T-SQL в SQL Server 2025: конкатенация строк

Пересказ статьи Steve Jones. T-SQL in SQL Server 2025: Concatenating Strings


Как и многие из вас, я часто соединяю строки (конкатенирую) при помощи простого арифметического оператора +. У нас есть еще и другие способы соединения строк, но в SQL Server 2025 появился еще один новый оператор. Это оператор двойной трубы (||). В этой статье мы разберемся, как он работает, и сравним с другими вариантами.

Новый оператор


Он действительно документирован, хотя и после || в MS Learn. Идея состоит в том, что соединяться будут: Продолжить чтение "T-SQL в SQL Server 2025: конкатенация строк"
Категории: T-SQL

Где же мой кластерный индекс в PostgreSQL?

Автор: Klaus Aschenbrenner, Where is My Clustered Index in PostgreSQL?


Каждый специалист по SQL Server рано или поздно достигает точки, когда внутреннее устройство хранения перестаёт быть абстракцией. Вы узнаёте, что таблица — это не просто логический контейнер, а физическая структура, и эта структура определяется кластерным индексом. Строки находятся на листовом уровне B-дерева, ключ кластеризации определяет физический порядок, и каждый некластерный индекс в конечном итоге ссылается обратно на этот ключ. Как только эта модель укореняется, настройка производительности начинает казаться почти интуитивной. Сканирование диапазона ведёт себя предсказуемо, поиск по закладкам (bookmark lookups) обретает смысл, а фрагментация становится ожидаемым следствием того, как хранятся данные.



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



Правда же заключается в том, что в PostgreSQL не отсутствуют кластерные индексы. Он сознательно выбрал иную основу.

Продолжить чтение "Где же мой кластерный индекс в PostgreSQL?"

Уменьшаем ошибки оценки количества строк в PostgreSQL

Автор: Shinya Kato, Reducing row count estimation errors in PostgreSQL


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



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

Продолжить чтение "Уменьшаем ошибки оценки количества строк в PostgreSQL"

Важность настройки контрольной точки в PostgreSQL

Автор: Jobin Augustine, Importance of Tuning Checkpoint in PostgreSQL


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


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


Продолжить чтение "Важность настройки контрольной точки в PostgreSQL"

Эффективные стратегии для хранения и парсинга JSON в SQL Server

Пересказ статьи Edward Pollack. Effective Strategies for Storing and Parsing JSON in SQL Server


Подобно XML, JSON является открытым стандартным форматом хранения данных, метаданных, параметров или других неструктурированных или полуструктурированных данных. Из-за его активного использования в современных приложениях он обречен попасть в базы данных, где его необходимо будет хранить, сжимать, изменять, выполнять поиск и извлекать.

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

Эта статья посвящена тому, как хранится JSON в SQL Server и разным способам, с помощью которых он записывается, читается и обслуживается. Продолжить чтение "Эффективные стратегии для хранения и парсинга JSON в SQL Server"
Категории: T-SQL

Новости за 2026-01-31 - 2026-02-06

§ Очередное усиление проверки задачи 20 (DML) данными от saphirion.

Автор добавил данные для проверки задачи 42 (DML).


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

Топик		Сообщений	Просмотров
308 (SELECT) 10 3
20 (DML) 3 6
42 (DML) 3 2
43 (Learn) 2 8
21 (DML) 2 3
Продолжить чтение "Новости за 2026-01-31 - 2026-02-06"

Значение NULL и пустая строка в Oracle, SQL Server и PostgreSQL

Автор: Akhil Reddy Banappagari, Null and Empty String in Oracle vs SQL Server vs PostgreSQL



При планировании миграции баз данных в PostgreSQL именно мелочи часто становятся причиной самых серьёзных сбоев в рабочей среде. Одна из самых распространённых ловушек для разработчиков — это различная обработка значений NULL и пустых строк ('') в разных СУБД.



Хотя они могут казаться схожими концепциями, обозначающими отсутствие значения, то, как механизм базы данных их интерпретирует, может изменить результаты ваших запросов, нарушить уникальные ограничения или привести к сбоям загрузки данных. В этом руководстве мы сравним поведение Oracle, SQL Server и PostgreSQL, чтобы помочь вам избежать распространённых ошибок миграции.



Продолжить чтение "Значение NULL и пустая строка в Oracle, SQL Server и PostgreSQL"

Как обнаружить и устранить конфликты на уровне строк в PostgreSQL с помощью pgrowlocks

Пересказ статьи Matheus dos Santos. How to Detect and Fix Row-Level Contention in PostgreSQL Using pgrowlocks


Блокировки на уровне строк часто являются узким местом в производительности в среде баз данных с высокой конкуренцией. Когда транзакция ожидает блокировку на конкретную строку, это может привести в действие цепь задержек, которые трудно диагностировать. К счастью, PostgreSQL предоставляет мощный инструмент в модуле contrib, чтобы вытащить на свет эти неуловимые блокировки: pgrowlocks.

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

На пути к быстрому PostgreSQL: ключевые точки оптимизации памяти

Автор: Warda Bibi, Unlocking High-Performance PostgreSQL: Key Memory Optimizations

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



Это руководство проведёт вас через два самых важных параметра памяти:



  • shared_buffers

  • work_mem

Продолжить чтение "На пути к быстрому PostgreSQL: ключевые точки оптимизации памяти"

Понимание combinebackup в PostgreSQL

Пересказ статьи Tomasz Gintowt. Understanding pg_combinebackup in PostgreSQL


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

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

500 миллисекунд на планирование: как статистика PostgreSQL замедлила запрос в 20 раз

Автор: Andrei Lepikhov, 500 Milliseconds on Planning: How PostgreSQL Statistics Slowed Down a Query 20 Times Over


Запрос выполняется всего за 2 миллисекунды, но этап его планирования занимает 500 мс. База данных имеет разумный размер, запрос затрагивает 9 таблиц, а default_statistics_target установлен всего в 500. Откуда такое несоответствие?



Этот вопрос недавно был поднят в списке рассылки pgsql-performance, и расследование выявило несколько неожиданного виновника: статистика столбцов, хранящаяся в таблице pg_statistic PostgreSQL.

Продолжить чтение "500 миллисекунд на планирование: как статистика PostgreSQL замедлила запрос в 20 раз"

Проблема неявных транзакций

Пересказ статьи Steve Jones. The Challenge of Implicit Transactions


Сценарий


Вы выполняете такой код:



Все выглядит хорошо. Я выполнил вставку и вижу данные в таблице. Я тороплюсь, поэтому щелкаю "close" (закрыть) на вкладке и вижу это:



Я настолько привык к этим раздражающим меня сообщениям в SSMS, что я нажимаю «Нет», чтобы избавиться от них и закрыть окно.
Продолжить чтение "Проблема неявных транзакций"
Категории: T-SQL

Новости за 2026-01-24 - 2026-01-30

§ Автор уточнил формулировку и усилил проверку задачи 308 (SELECT, рейтинг).


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

Топик		Сообщений	Просмотров
Certification 3 12
3 (SELECT) 3 10
58 (DML) 2 3
20 (DML) 2 5
191 (SELECT) 2 4

Продолжить чтение "Новости за 2026-01-24 - 2026-01-30"

Почему ваша архитектура высокой доступности — это иллюзия (и это нормально)

Автор: Lætitia AVROT, Why Your HA Architecture is a Lie (And That's Okay)


Если бы Дарт Вейдер существовал и решил бы сделать с Землёй то же, что он сделал с Алдерааном, все потеряли бы данные.



Мне нравится эта цитата Роберта Хааса, потому что это отрезвляющая реальность, которая нужна всем нам. В мире баз данных нам постоянно продают мечту о «пяти девятках» (99,999% времени доступности) и «нулевой потере данных» (RPO=0). Мы тратим месяцы на построение сложных кластеров, чтобы достичь этого.



Давайте будем честными: это сказки. Красивые для воображения, но они не существуют в рабочей среде. Если планетарная лазерная пушка — или даже просто серьёзный сетевой обрыв — поразит ваш дата-центр, ваши «гарантии» исчезнут.



Моя цель сегодня — не помочь вам поверить в сказки. Моя цель — помочь вам построить архитектуру, которая действительно работает.

Продолжить чтение "Почему ваша архитектура высокой доступности — это иллюзия (и это нормально)"