Skip to content

Новости за 2025-11-08 - 2025-11-14

§ pegoopik открыл конкурсы по оптимизации запросов для задач 179, 208, 215, 220, 230, 239, 257.

§ В ответ на замечание Paulus73 проверка задачи 126 (SELECT, обуч. этап) усилена данными от pegoopik.

§ Популярные темы недели на форуме
Топик		Сообщений	Просмотров
Guest's book 6 16
35 (Learn) 4 16
126 (Learn) 3 6
197 (SELECT) 2 6
780 (SELECT) 2 10
Продолжить чтение "Новости за 2025-11-08 - 2025-11-14"

Обзор индексов в MySQL: составные индексы B-Tree

Пересказ статьи Lukas Vileikis. MySQL Index Overviews: Composite B-Tree Indexes


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

Основной тип индекса в MySQL - это индекс B-Tree, рассмотренный нами в одной из предыдущих статей. Если вы работаете с MySQL, то определенно знаете также о других нюансах индексов, одним из которых является тот факт, что индексы B-Tree могут строиться на нескольких столбцах (обычно их называют составными индексами). В этом примере мы используем MariaDB, хотя Percona Server для MySQL и MySQL Server будут вести себя идентично.

В приложении вы найдете запросы, воссоздающие структуру таблиц и составные индексы, так что давайте начнем.
Продолжить чтение "Обзор индексов в MySQL: составные индексы B-Tree"

Зачем нужно следить за наборами индексов, как за фигурой?

Автор: Николай Самохвалов #PostgresMarathon 2-013: Why keep your index set lean


Ваш API замедляется. Вы проверяете базу данных и обнаруживаете 42 индекса в таблице users. Какие из них можно безопасно удалить? Во сколько они обходятся по производительности? Давайте разберёмся, что на самом деле происходит в Postgres, когда индексов слишком много.


Если вы бэкенд‑ или фуллстек‑инженер, вам, вероятно, не хочется становиться гуру индексации — вы просто хотите, чтобы API был быстрым и стабильным, без постоянного присмотра за pg_stat_user_indexes.


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


Есть много причин, почему набор индексов нужно держать «стройным», и некоторые из них не столь очевидны.

Продолжить чтение "Зачем нужно следить за наборами индексов, как за фигурой?"

PostgreSQL 18: ещё больше производительности с пропуском просмотра индекса

PostgreSQL 18: ещё больше производительности с пропуском просмотра индекса

Автор: Hans-Jürgen Schönig. PostgreSQL 18: More performance with index skip scans


PostgreSQL 18 приносит целый ряд улучшений производительности, которые помогают приложениям работать эффективнее и дарят более приятный опыт пользователю. Одно из таких улучшений называется «skip scans» (пропуск просмотра). У многих на этом месте возникнет вопрос: звучит здорово, но что такое skip scan? Цель этой статьи — прояснить, как это работает, что именно делает и, что самое важное: как получить от этой возможности практическую пользу.

Продолжить чтение "PostgreSQL 18: ещё больше производительности с пропуском просмотра индекса"

Восстановление на определенный момент времени в AWS RDS PostgreSQL

Пересказ статьи Grant Fritchey. AWS RDS PostgreSQL Restore to a Point in Time


Одной из самых важных причин выбрать платформу как службу (PaaS), например, AWS RDS, является действительно легкая возможность выполнять восстановление к моменту времени. Давайте посмотрим на это.

Восстановление на момент времени


При подключении к консоли и просмотре ваших баз данных все, что вам требуется сделать - это выбрать вкладку “Maintenance and Backups” (обслуживание и резервные копии) для получения информации о том, какие бэкапы создаются:


Продолжить чтение "Восстановление на определенный момент времени в AWS RDS PostgreSQL"

Новости за 2025-11-01 - 2025-11-07

§ Проверка задачи 155 (обуч. этап) усилена данными от Komov S.M.

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

Топик		Сообщений	Просмотров
119 (SELECT) 6 6
106 (Learn) 3 6
99 (Learn) 2 6
174 (Learn) 2 5
Guest's book 2 19

§ Авторы недели на форуме

Автор		Сообщений
ValNick 7
rock_4 6
Paulus73 4
Rujan 3
selber 3
Продолжить чтение "Новости за 2025-11-01 - 2025-11-07"

PostgreSQL и NUMA, часть 2 из 4 (NUMA, Linux и PostgreSQL до появления поддержки libnuma)

Автор: Chris Travers PostgreSQL and NUMA, part 2 of 4 (NUMA, Linux, and PostgreSQL before libnuma Support)


Эта статья опирается на предыдущий материал «Введение в NUMA» (PostgreSQL и NUMA, часть 1 из 4) и предполагает не только знание определения NUMA, но и общее понимание аппаратной и программной реализации.


В этой части рассматривается взаимодействие PostgreSQL и Linux на системах с NUMA. Тема сложная, поэтому кое‑где используются упрощения. Тем не менее здесь собрана выжимка общих сведений о работе PostgreSQL 17 и ниже (а также PostgreSQL 18 без поддержки libnuma) на NUMA‑системах с Linux в качестве точки отсчёта. К концу чтения вы не только будете в состоянии уверенно запускать Postgres на NUMA‑системе, но и поймёте, почему поддержка libnuma в PostgreSQL 18 настолько важна.

Продолжить чтение "PostgreSQL и NUMA, часть 2 из 4 (NUMA, Linux и PostgreSQL до появления поддержки libnuma)"

PostgreSQL и NUMA, часть 1 из 4

Автор: Chris Travers PostgreSQL and NUMA, part 1 of 4


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


Эти статьи сосредоточены на низкоуровневых «как» и «почему» в контексте неоднородного доступа к памяти (Non‑Uniform Memory Access), чтобы затем было проще понимать решения и рекомендации — с упором на концептуальную сторону. К сожалению, во многих местах без технических деталей не обойтись: голые концепции без деталей в лучшем случае сбивают с толку.


Дальнейшие части будут опираться на материал этой статьи. Рекомендуем начать с него, а затем по мере необходимости возвращаться.


Продолжить чтение "PostgreSQL и NUMA, часть 1 из 4"

В PostgreSQL 18 контрольные суммы данных включены по умолчанию

Автор: Josef Machytka PostgreSQL 18 enables data‑checksums by default


Как я объяснял в докладе на PostgreSQL Conference Europe 2025, повреждение данных может незаметно случиться в любой базе PostgreSQL и останется так, пока мы физически не прочитаем повреждённые данные. Причин, по которым отдельные блоки в таблицах и других объектах могут быть испорчены, немало. Даже современное аппаратное обеспечение хранилищ далеко от безошибочности. Бинарные резервные копии, сделанные инструментом pg_basebackup (очень распространённая стратегия в мире PostgreSQL), скрывают эти проблемы, поскольку они не проверяют данные, а копируют файлы «как есть». С релизом PostgreSQL 18 сообщество решило по умолчанию включить контрольные суммы данных — серьёзный шаг к раннему обнаружению таких сбоев. В этой статье рассматривается, как PostgreSQL реализует контрольные суммы, как обрабатывает их несоответствия и как можно включить контрольные суммы в существующих кластерах.

Продолжить чтение "В PostgreSQL 18 контрольные суммы данных включены по умолчанию"

Оператор Merge в PostgreSQL 17

Пересказ статьи Deepak Mahto. Merge Statement in PostgreSQL 17


Оператор MERGE позволяет написать один оператор DML с различными условиями для выполнения операций INSERT, UPDATE или DELETE в целевой таблице на основе источника данных. Он обеспечивает ряд преимуществ в плане производительности и не требует исключения или ограничения уникальности, в отличие от оператора INSERT ON CONFLICT.

Давайте рассмотрим пример с таблицей current_inventory, которую мы хотим обновить на основе транзакций, перечисленных в таблице daily_updates. Нам необходимо учесть все состояния (sale, new, remove, restock) в таблице daily_updates и выполнить необходимые операции с current_inventory.

Кроме того, мы реализуем функциональность обновления значения поля addinfo на “no sale” в current_inventory, если элемент отсутствует в daily_updates.
Продолжить чтение "Оператор Merge в PostgreSQL 17"

Новости за 2025-10-25 - 2025-10-31

§ Проверка задачи 159 (обуч. этап) усилена данными от Komov S.M.

§ Популярные темы недели на форуме
Топик		Сообщений	Просмотров
153 (Learn) 5 8
38 (DML) 5 6
24 (Learn) 4 13
183 (SELECT) 3 5
162 (Learn) 3 8

Продолжить чтение "Новости за 2025-10-25 - 2025-10-31"

Кэши и их аннулирование в Postgres

Автор: Amit Langote, Postgres: caches and invalidation

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

Продолжить чтение "Кэши и их аннулирование в Postgres"

Где хранятся данные Postgres

Автор: Amit Langote, Postgres: where is the data

Postgres хранит данные, которые вставляются в таблицы, в файлах. Для каждой таблицы есть свой файл (строго говоря, больше одного, если таблица превышает 1 ГБ), где пользовательские данные записаны в бинарном формате, специфичном для Postgres.

Продолжить чтение "Где хранятся данные Postgres"

Подготовленные операторы и лавина блокировок на секционированной таблице, часть 3

Автор: Николай Самохвалов #PostgresMarathon 2-011: Prepared statements and partitioned tables — the paradox, part 3


В первой и второй частях мы разобрали, почему на 6‑м выполнении при построении generic‑плана для секционированной таблицы возникает лавина блокировок: планировщик вынужден блокировать все 52 отношения, потому что без значений параметров он не может отсечь секции.


Сегодня проверим, что происходит при разных значениях настройки plan_cache_mode.

Продолжить чтение "Подготовленные операторы и лавина блокировок на секционированной таблице, часть 3"

Профессиональная проверка таблиц и индексов в PostgreSQL

Пересказ статьи Sadigrzazada. Inspecting PostgreSQL Tables and Indexes Like a Pro


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

  • Структуру таблицы

  • Размер таблицы

  • Информацию об индексе

  • Размер индекса

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