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