Skip to content

Оптимизация предложений DISTINCT с помощью EXISTS

Пересказ статьи Andy Brownsword. Optimising DISTINCT Clauses using EXISTS


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

Обычно я вижу это из-за применения JOIN, когда на самом деле нам не нужны все эти результаты. Это может быть проверка «существует ли что-либо», например, делал ли клиент когда-либо заказ раньше. Проблема возникает, когда имеется много возвращаемых строк, например, для постоянного клиента в нашем примере.

Continue reading "Оптимизация предложений DISTINCT с помощью EXISTS"

Параметр log_min_duration_statement в PostgreSQL

Пересказ статьи Dmitry Romanoff. PostgreSQL parameter log_min_duration_statement


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

По умолчанию значение параметра log_min_duration_statement равно -1, что отключает журнализацию операторов.
Установка параметра log_min_duration_statement в 0 приведет к записи операторов любой длительности выполнения.

Замечание. Установка этого параметра в рабочем окружении может привести к большим объемам журналов и значительному выделению дискового пространства.
Continue reading "Параметр log_min_duration_statement в PostgreSQL"

Оценка производительности запросов с помощью pg_stat_statements в PostgreSQL

Пересказ статьи Ömer Naci Soydemir. Query Performance with pg_stat_statements in PostgreSQL


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

Включение pg_stat_statements: вам необходимо включить расширение в вашей базе данных PostgreSQL. Вот как вы можете это сделать:
Continue reading "Оценка производительности запросов с помощью pg_stat_statements в PostgreSQL"

Полезные расширения PostgreSQL, которые стоит изучить прямо сейчас!

Пересказ статьи SInshiya Nalawala. Useful Postgres Extensions to explore right away!


Вы думали когда-нибудь о том, что делает PostgreSQL больше чем просто системой реляционных баз данных?

Расширения PostgreSQL!

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

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

Пул подключений к базе данных

Пересказ статьи Sujoy Nath. Database Connection Pool





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

Вот как работает пул подключений к базе данных: Continue reading "Пул подключений к базе данных"

PostgreSQL. Как выявить запросы, которые максимально используют временные файлы?

Пересказ статьи Dmitry Romanoff. Postgres. How to check the top queries that use temporary files?


Временные файлы в базе данных PostgreSQL могут стать проблемой по нескольким причинам:

  1. Влияние на производительность.

  2. Использование пространства на диске.

  3. Может выделяться все больше и больше памяти.

  4. Проблемы параллелизма.

  5. Сложность в мониторинге и обслуживании.

Что следует делать, чтобы избежать временных файлов в базе данных PostgreSQL?
Continue reading "PostgreSQL. Как выявить запросы, которые максимально используют временные файлы?"

Секционирование таблицы по диапазону в базе данных PostgreSQL

Пересказ статьи Dmitry Romanoff. Partitioning a table by range in the PostgreSQL database


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

Здесь я на практике продемонстрирую, как работает секционирование. Continue reading "Секционирование таблицы по диапазону в базе данных PostgreSQL"

Оптимизационные трюки в PostgreSQL. Как быстро загрузить данные: часть 1

Пересказ статьи Mitchell Warr. PostgreSQL Optimization Tricks: How to Load Data Fast Part 1


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

Вы открываете объяснение плана запроса и заглядываете под капот в чем-то типа https://explain.dalibo.com. Но что вы фактически можете сделать?

Continue reading "Оптимизационные трюки в PostgreSQL. Как быстро загрузить данные: часть 1"

Более эффективный подсчет

Пересказ статьи Aaron Bertrand. Counting more efficiently


Почти десятилетие назад я написал статью с названием «Вредные привычки: трудный подсчет строк». В той статье я говорил о том, как мы можем использовать метаданные для мгновенного получения числа строк в таблице. Обычно люди делают следующее, что приводит к чтению всей таблицы или индекса:

DECLARE @c int = (SELECT COUNT(*) FROM dbo.TableName);

Чтобы в значительной степени избежать ограничений на размер данных, вместо этого мы можем использовать sys.partitions. Continue reading "Более эффективный подсчет"

Планирование планов. Часть 26 - окна с диапазонной рамкой

Пересказ статьи Hugo Kornelis. Plansplaining part 26 – Windows with a ranged frame


Это двадцать шестая часть данной серии (plansplaining). И уже четвертый эпизод об оконных функциях. Первая из этих статей была посвящена базовым оконным функциям; вторая была посвящена быстрой оптимизации накопительных агрегатов, а в третьей публикации объяснялось, как оптимизатор работает при отсутствии поддержки плана выполнения для UNBOUNDED FOLLOWING.
Continue reading "Планирование планов. Часть 26 - окна с диапазонной рамкой"

Код базы данных на основе множеств или на основе строк

Пересказ статьи Kevin. Set-Based vs Row-Based Database Code


В SQL Server термины "на основе множеств" и "на основе строк" относятся к различным подходам или стилям написания кода SQL при манипуляции с данными. Эти стили оказывают влияние на производительность, читабельность и способ, который используется при обработке запросов. Давайте рассмотрим различия между кодом на основе множеств и кодом на основе строк:
Continue reading "Код базы данных на основе множеств или на основе строк"

Обработка запроса в PostgreSQL

Пересказ статьи AGEDB. Query Processing in PostgreSQL

Введение


Как энтузиаст и разработчик ПО я очарован внутренней работой PostgreSQL. Способ, с помощью которого обрабатываются все клиентские запросы в едином серверном процессе, и его сложные подсистемы для обработки запросов действительно изумляют меня. Я захотел выяснить, как работают запросы в PostgreSQL. Я провел некоторое исследование и нашел то, что происходит внутри кода PostgreSQL. Этот краткий обзор объясняет процесс выполнения запроса и то, как PostgreSQL делает это, чтобы гарантировать вам лучшую производительность его выполнения. Конечно, производительность в значительной степени зависит от того, как спроектирована база данных, поэтому обратитесь к советам по основам моделирования базы данных от AGEDB.
Continue reading "Обработка запроса в PostgreSQL"

Изучение индексов в PostgreSQL

Пересказ статьи Henrietta Dombrovskaya. Exploring PostgreSQL Indexes


В этом блоге мы продолжим наше изучение индексов в PostgreSQL, которое начали здесь. В той статье мы узнали, что такое индекс и как индексы могут помочь при выполнении запроса. Но здесь мы узнаем намного больше об индексах! В этом блоге мы будем рассматривать индексы B-Tree. Мы выясним, действительно ли (и как) ограничения базы данных связаны с индексами (или нет), как точно работает сканирование битовой карты индекса, и узнаем некоторые дополнительные варианты индексов, доступные в PostgreSQL.



Continue reading "Изучение индексов в PostgreSQL"

Обзор инструментов мониторинга для SQL Server

Пересказ статьи Hadi Fadlallah. An overview of SQL Server monitoring tools


Мониторинг базы данных: быстрое напоминание


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


Continue reading "Обзор инструментов мониторинга для SQL Server"

Мастерство работы с базами данных: умное удаление 4 миллионов записей из PostgreSQL!

Пересказ статьи Sobin Sunny. Database Mastery: Deleting 4 Million Records from PostgreSQL, the Smart Way!


Представьте себе оживленную платформу электронной торговли, где миллионы пользователей оформляют поставки с журналами слежения за перемещением объектов. Теперь рассмотрим сценарий, когда спустя время накапливается значительный объем устаревших или ненужных данных, засоряя базы данных и влияя на производительность системы.
Continue reading "Мастерство работы с базами данных: умное удаление 4 миллионов записей из PostgreSQL!"