Skip to content

Понимание планов в PostgreSQL

Пересказ статьи Muhammad Ali. Understand Explain Plans in PostgreSQL


В предыдущей статье мы обсуждали утилиту pg_stat_statements - инструмент для идентификации запросов, интенсивно использующих ресурсы - памяти, ЦП или ввода/вывода.

Теперь предположим, что вы определились с запросами, которые хотите исследовать дальше. Команда EXPLAIN используется для генерации планов выполнения. Она включает:

Продолжить чтение "Понимание планов в PostgreSQL"

Как работает секционирование в PostgreSQL и почему вас это должно беспокоить?

Пересказ статьи Adam Furmanek. How Does Partitioning Work in PostgreSQL and Why Should You Care?


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

Продолжить чтение "Как работает секционирование в PostgreSQL и почему вас это должно беспокоить?"

Понимание индекса SQL: ключ к быстрому выполнению запросов

Пересказ статьи Kishan Modasiya. Understanding SQL Index: The Key to Faster Query Execution


Индекс - это очень важная тема в SQL. И очень большая для того, чтобы рассмотреть ее в одной статье. Здесь я дам краткий обзор понятия индекса, что это такое и почему он так необходим, рассмотрю типы индексов и то, как индексы помогают оптимизировать производительность запросов на ряде примеров. Я буду выдерживать эту статью понятной для новичков и не углубляться в тему. Итак, начнем. Продолжить чтение "Понимание индекса SQL: ключ к быстрому выполнению запросов"

Причины скачков производительности запроса в SQL Server

Пересказ статьи Aaron Bertrand. Reasons for SQL Server Query Performance Fluctuations


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

Прежде чем вникать в возможные причины скачков производительности, давайте сделаем обзор того, что происходит в SQL Server при обработке запросов.

Продолжить чтение "Причины скачков производительности запроса в SQL Server"

Индексы PostgreSQL: что это такое и как они могут помочь

Пересказ статьи Henrietta Dombrovskaya. PostgreSQL Indexes: What They Are and How They Help


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

Кажется, что было бы неплохо поговорить об индексах до обсуждения планов выполнения, но планы запросов - это хорошее место для начала движения в сторону решения проблем производительности! Здесь мы собираемся поговорить об индексах, зачем они нам нужны, как они могут нам помочь, и как они могут усугубить ситуацию.
Продолжить чтение "Индексы PostgreSQL: что это такое и как они могут помочь"

Нормализуйте строки для оптимизации пространства и поиска

Пересказ статьи Aaron Bertrand. Normalize strings to optimize space and searches


Эта статья написана для SQL Server, однако эти понятия применимы к любой платформе реляционных баз данных.

Социальная сеть Stack Exchange журнализует большой веб-трафик - даже в сжатом виде мы в среднем имеем свыше терабайта в месяц. И это всего лишь суммарный срез наших общих необработанных данных журнала, который мы загружаем в базу данных для обеспечения безопасности и аналитических целей. На каждый месяц имеется своя собственная таблица, позволяя использовать скользящие окна секционного типа и селективные индексы без дополнительных ограничений и накладных расходов на обслуживание. (Taryn Pratt рассказывает об этих таблицах весьма подробно в своей статье Migrating a 40TB SQL Server Database.)
Продолжить чтение "Нормализуйте строки для оптимизации пространства и поиска"

Что такое план выполнения и как его найти в PostgreSQL

Пересказ статьи Henrietta Dombrovskaya. What Is an Execution Plan and How to Find It in PostgreSQL


В последнем блоге (Когда настройка параметра в PostgreSQL не помогает) мы сравнили несколько планов выполнения для оператора SQL по мере изменения параметров и индексов. При этом не было упомянуто то, что собой представляет план выполнения, как можно получить план выполнения запроса и как интерпретировать результат. В этом блоге мы глубже погрузимся в эту тему.
Продолжить чтение "Что такое план выполнения и как его найти в PostgreSQL"

Проблемы плана выполнения SQL Server при использовании предложения TOP и различных параметров

Пересказ статьи Mehdi Ghapanvari. SQL Server Execution Plan Issues when using TOP Clause and Various Parameters


Запрос иногда оказывается супер быстрым, а иногда - очень медленным. Одной из основных причин такого поведения является прослушивание параметра (Parameter Sniffing). Имеется несколько подходов, связанных с проблемой прослушивания параметра, и в этой статье обсуждаются эффективные методы для обработки Parameter Sniffing в операторах SELECT, содержащих предложение TOP.
Продолжить чтение "Проблемы плана выполнения SQL Server при использовании предложения TOP и различных параметров"

Что это за хинт запроса READPAST?

Пересказ статьи Chad Callihan. What is the READPAST Query Hint?


Вы когда-нибудь слышали о хинте запроса READPAST? Я бы сказал, что это родной брат NOLOCK. С помощью NOLOCK вы получите данные быстрей, но с риском грязных чтений. С помощью READPAST SQL Server вообще пропустит заблокированные данные. Это может быть как полезно, так и весьма опасно, если вы не знаете, как это используется.

Давайте сравним NOLOCK и READPAST, чтобы вы знали, чего следует ожидать, если вы хотите правильно использовать эти хинты запросов.
Продолжить чтение "Что это за хинт запроса READPAST?"

Оптимизация MySQL: добавление данных в таблицы

Пересказ статьи Lukas Vileikis. Optimizing MySQL: Adding Data to Tables


Добро пожаловать снова в серию статей по оптимизации MySQL! В том случае, если вы не следили за этой серией, ранее была опубликована пара статей, где обсуждались основы оптимизации запросов, а также оптимизация запросов на выборку (SELECT).

Здесь мы продолжим изучать способы оптимизации операторов INSERT и рассмотрим альтернативы, когда вам необходимо загрузить больше чем несколько строк в операторе LOAD DATA INFILE.
Продолжить чтение "Оптимизация MySQL: добавление данных в таблицы"

Освоение Oracle PL/SQL: продвинутые концепции и методы

Пересказ статьи Lakshitha Perera. Mastering Oracle PLSQL Advanced Concepts and Techniques


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

Теперь мы готовы погрузиться в продвинутый Oracle PL/SQL. В этой статье рассматривается развитое использование курсоров, сложная обработка исключений, естественная компиляция, динамический SQL и поставляемые Oracle пакеты. Мы также исследуем методы настройки производительности, взаимодействие с SQL*PLUS и триггеры уровня базы данных.
Продолжить чтение "Освоение Oracle PL/SQL: продвинутые концепции и методы"

Упорядоченные поколоночные индексы в SQL Server 2022

Пересказ статьи Edward Pollack. Ordered Columnstore Indexes in SQL Server 2022


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

Чтобы помочь с этой проблемой, в SQL Server 2022 была добавлена возможность указывать предложение ORDER при создании или перестройке индекса. Эта функция приводит к автоматической сортировке данных SQL Server в рамках процессов вставки или перестройки. В этой статье подробно рассматривается эта функция, уделяя внимание ее использованию и ограничениям.
Продолжить чтение "Упорядоченные поколоночные индексы в SQL Server 2022"

Когда настройка параметра в PostgreSQL не помогает

Пересказ статьи Henrietta Dombrovskaya. When PostgreSQL Parameter Tuning is not the Answer


Так много говорится о настройке параметров, и это всегда помогает?

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

Хотя некоторая настройка параметров действительно может улучшить производительность базы данных, мы обычно говорим о 10%, 20% и в более редких случаях о 50% улучшении производительности, если некоторые параметры установлены плохо. Эти цифры могут звучать впечатляюще, но индивидуальная рутинная оптимизация запроса делает его выполнение в несколько раз быстрее, а в некоторых случаях в десять и более раз быстрее, а реструктуризация приложений может улучшить общую производительность системы в сотни раз!
Продолжить чтение "Когда настройка параметра в PostgreSQL не помогает"

Оптимизация запросов в MySQL: оптимизация обновлений

Пересказ статьи Lukas Vileikis. Optimizing Queries in MySQL: Optimizing Updates


В предыдущих частях этой серии статей по оптимизации MySQL мы говорили о том, как работают запросы на высоком уровне, после чего погрузились в возможности операторов SELECT и INSERT. Сейчас я буду обсуждать также некоторые способы оптимизации модификации данных.
Продолжить чтение "Оптимизация запросов в MySQL: оптимизация обновлений"

Шесть вещей для мониторинга в PostgreSQL

Пересказ статьи Ryan Booz. Six Things to Monitor with PostgreSQL


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