Skip to content

Загадки max_locks_per_transaction

Автор: Николай Самохвалов #PostgresMarathon 2-006: Mysterious max_locks_per_transaction



Параметр max_locks_per_transaction загадочен и хорошо иллюстрирует мысль Сократа: «Я знаю, что ничего не знаю». Это главный факт, который стоит запомнить о max_locks_per_transaction. Не пытайтесь держать в голове все подробности: если вы не сталкиваетесь с ним постоянно, забудете (как я забываю). Вместо этого опираемся на документацию:




The shared lock table has space for max_locks_per_transaction objects (e.g., tables) per server process or prepared transaction; hence, no more than this many distinct objects can be locked at any one time. This parameter limits the average number of object locks used by each transaction; individual transactions can lock more objects as long as the locks of all transactions fit in the lock table. This is not the number of rows that can be locked; that value is unlimited. The default, 64, has historically proven sufficient, but you might need to raise this value if you have queries that touch many different tables in a single transaction, e.g., query of a parent table with many children. This parameter can only be set at server start.


When running a standby server, you must set this parameter to have the same or higher value as on the primary server. Otherwise, queries will not be allowed in the standby server.




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


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


Continue reading "Загадки max_locks_per_transaction"

Основы баз данных: объяснение уровней изоляции в PostgreSQL

Пересказ статьи Duc Tran. Database Fundamentals: Isolation Levels Explained in PostgreSQL


Когда одновременно выполняется несколько транзакций, как база данных поддерживает согласованность данных? Вот где вступают в действие уровни изоляции. Они определяют видимость изменений, совершенных одной транзакцией, остальным - и помогают предотвратить проблемы типа грязного чтения, неповторяемого чтения и фантомных чтений.

В этой статье мы исследуем четыре стандартных уровня изоляции, определенных стандартом SQL, и как PostgreSQL реализует их под капотом. Вы узнаете, что позволяет каждый уровень и что он запрещает, и как PostgreSQL обеспечивает целостность данных - особенно посредством своей сериализуемой изоляции (Serializable isolation)

Начнем!
Continue reading "Основы баз данных: объяснение уровней изоляции в PostgreSQL"

Улучшаем индексы: эффективный порядок столбцов ключа

Автор: Franck Pachot Improving Your SQL Indexing: How to
Effectively Order Columns



Пользователям нередко трудно подобрать лучший индекс для запроса, особенно
определить правильный порядок столбцов.



Представьте большую таблицу, которую нужно отфильтровать до конкретного
набора данных — всё ещё довольно объёмного. Вы можете использовать простые
условия, вроде эквивалентности или выборки диапазона, но ваш WHERE может
включать и более сложные условия — множественный выбор (IN) и комбинации (OR).



После фильтрации вы хотите показать лишь несколько строк, отсортированных по
некоторым столбцам, и ограничить результат с помощью LIMIT или FETCH FIRST ROWS
— типичный случай разбивки на страницы. Хотя индексы помогают находить
диапазоны значений и упорядочивать результаты, при всех этих условиях трудно
решить, в каком порядке располагать столбцы в индексе.

Continue reading "Улучшаем индексы: эффективный порядок столбцов ключа"

Расширьте свои возможности в SQL с помощью функций JSON в PostgreSQL

Пересказ статьи Paulo Fagundes. ODC: Supercharge Your Advanced SQL with PostgreSQL JSON Functions


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

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

Естественно, каждая СУБД вводит свой собственный набор функций и функциональность, которые мы можем использовать, и PostgreSQL предлагает широкий выбор функций для запросов и манипуляции объектами JSON.

Continue reading "Расширьте свои возможности в SQL с помощью функций JSON в PostgreSQL"

Стоит ли перестраивать индексы в PostgreSQL?

Автор: Laurenz Albe


Люди часто спрашивают: «Как можно автоматически регулярно перестраивать индексы?» или «Когда нужно перестраивать индексы в PostgreSQL?». Каждый раз у меня возникает ощущение, что они пытаются решить проблему, которой нет. Впрочем, оператор REINDEX существует не зря, и иногда перестроить индекс действительно разумно. В этой статье я объясню, когда уместно перестраивать индекс и как получить данные, чтобы принять такое решение.

Continue reading "Стоит ли перестраивать индексы в PostgreSQL?"

Использование гибридной транзакционной/аналитической обработки в PostgreSQL

Пересказ статьи Sheikh Wasiu Al Hasib. PostgreSQL Hybrid Transactional/Analytical Processing using




Что такое HTAP?


HTAP - это аббревиатура от гибридной транзакционной/аналитической обработки (Hybrid Transactional/Analytical Processing). Она характеризует системы баз данных, которые могут обрабатывать как транзакционные (OLTP), так и аналитические (OLAP) рабочие нагрузки одновременно на одном и том же наборе данных. Такая возможность позволяет выполнять аналитические запросы к текущим транзакционным данным без необходимости извлекать, преобразовывать и загружать (ETL) данные в отдельное хранилище для последующего анализа.

Continue reading "Использование гибридной транзакционной/аналитической обработки в PostgreSQL"