Skip to content

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 "Более эффективный подсчет"