Пересказ статьи Andy Brownsword. Optimising DISTINCT Clauses using EXISTS
Предложение DISTINCT может помочь нам быстро убрать дубликаты из результатов запроса. Иногда полезно остановиться и спросить почему. Почему нам необходимо использовать это предложение, почему мы получаем дубликаты из наших данных?
Обычно я вижу это из-за применения JOIN, когда на самом деле нам не нужны все эти результаты. Это может быть проверка «существует ли что-либо», например, делал ли клиент когда-либо заказ раньше. Проблема возникает, когда имеется много возвращаемых строк, например, для постоянного клиента в нашем примере.
Continue reading "Оптимизация предложений DISTINCT с помощью EXISTS"
Пересказ статьи 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"
Пересказ статьи Ö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"
Пересказ статьи SInshiya Nalawala. Useful Postgres Extensions to explore right away!
Вы думали когда-нибудь о том, что делает PostgreSQL больше чем просто системой реляционных баз данных?
Расширения PostgreSQL!
Проще говоря, расширения - это модули, функции или низкоуровневые API, которые расширяют возможности PostgreSQL за пределы его базовой функциональности. Их множество, каждое с уникальными вариантами использования, и они творят чудеса для своих пользователей.
Сегодня я собираюсь пролить свет на два расширения PostgreSQL, которые могут позволить вам оценить производительность базы данных, заглянуть внутрь и предпринять необходимые шаги по улучшению производительности.
Continue reading "Полезные расширения PostgreSQL, которые стоит изучить прямо сейчас!"
Пересказ статьи Sujoy Nath. Database Connection Pool
Пул подключений к базе данных - это кэш подключений к базе данных, поддерживаемый с целью повторного использования подключений при необходимости. Это обычный метод оптимизации, используемый в приложениях, которые взаимодействуют с базами данных, для повышения производительности и управления использованием ресурсов. Вместо открытия и закрытия нового подключения к базе данных для выполнения каждой операции пул подключений сохраняет множество подключений открытыми и готовыми к использованию.
Вот как работает пул подключений к базе данных:
Continue reading "Пул подключений к базе данных"
Пересказ статьи Dmitry Romanoff. Postgres. How to check the top queries that use temporary files?
Временные файлы в базе данных PostgreSQL могут стать проблемой по нескольким причинам:
- Влияние на производительность.
- Использование пространства на диске.
- Может выделяться все больше и больше памяти.
- Проблемы параллелизма.
- Сложность в мониторинге и обслуживании.
Что следует делать, чтобы избежать временных файлов в базе данных PostgreSQL?
Continue reading "PostgreSQL. Как выявить запросы, которые максимально используют временные файлы?"
Пересказ статьи Dmitry Romanoff. Partitioning a table by range in the PostgreSQL database
Секционирование является важным методом для достижения хорошей производительности в базах данных с большими таблицами. Когда размер таблицы постоянно растет, также возрастает стоимость каждой операции с этой таблицей. Секционирование разбивает большую таблицу на несколько меньших. Смысл в том, чтобы позволить механизму запросов сканировать более мелкие таблицы и индексы, чтобы найти требуемые данные. Секции улучшают производительность работы с таблицей, когда они сделаны правильно. Секционирование таблицы по значениям в диапазоне обычно используется с полями даты.
Здесь я на практике продемонстрирую, как работает секционирование.
Continue reading "Секционирование таблицы по диапазону в базе данных PostgreSQL"
Пересказ статьи 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 "Более эффективный подсчет"
Пересказ статьи 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 "Код базы данных на основе множеств или на основе строк"
Пересказ статьи AGEDB. Query Processing in PostgreSQL
Введение
Как энтузиаст и разработчик ПО я очарован внутренней работой PostgreSQL. Способ, с помощью которого обрабатываются все клиентские запросы в едином серверном процессе, и его сложные подсистемы для обработки запросов действительно изумляют меня. Я захотел выяснить, как работают запросы в PostgreSQL. Я провел некоторое исследование и нашел то, что происходит внутри кода PostgreSQL. Этот краткий обзор объясняет процесс выполнения запроса и то, как PostgreSQL делает это, чтобы гарантировать вам лучшую производительность его выполнения. Конечно, производительность в значительной степени зависит от того, как спроектирована база данных, поэтому обратитесь к
советам по основам моделирования базы данных от AGEDB.
Continue reading "Обработка запроса в PostgreSQL"
Пересказ статьи Henrietta Dombrovskaya. Exploring PostgreSQL Indexes
В этом блоге мы продолжим наше изучение индексов в PostgreSQL, которое начали
здесь. В той статье мы узнали, что такое индекс и как индексы могут помочь при выполнении запроса. Но здесь мы узнаем намного больше об индексах! В этом блоге мы будем рассматривать индексы B-Tree. Мы выясним, действительно ли (и как) ограничения базы данных связаны с индексами (или нет), как точно работает сканирование битовой карты индекса, и узнаем некоторые дополнительные варианты индексов, доступные в PostgreSQL.
Continue reading "Изучение индексов в PostgreSQL"
Пересказ статьи Hadi Fadlallah. An overview of SQL Server monitoring tools
Мониторинг базы данных: быстрое напоминание
Мониторинг баз данных - это множество инструментов и методов, используемых для создания и обслуживания инфраструктуры приложения, обладающих высокой доступностью и скоростью работы. Он помогает отслеживать потребление ресурсов, таких как число операций чтения и записи, потребление ЦП и RAM, размеры хранилища и временного хранилища и т.д. Потребление ресурсов может быть получено на точное время или непрерывно измеряться в реальном времени.
Continue reading "Обзор инструментов мониторинга для SQL Server"
Пересказ статьи Sobin Sunny. Database Mastery: Deleting 4 Million Records from PostgreSQL, the Smart Way!
Представьте себе оживленную платформу электронной торговли, где миллионы пользователей оформляют поставки с журналами слежения за перемещением объектов. Теперь рассмотрим сценарий, когда спустя время накапливается значительный объем устаревших или ненужных данных, засоряя базы данных и влияя на производительность системы.
Continue reading "Мастерство работы с базами данных: умное удаление 4 миллионов записей из PostgreSQL!"