Даниил Давыдов
Postgres Professional
Пользователи PostgreSQL стремятся ускорить выполнение массовых операций INSERT, UPDATE и DELETE. Самым очевидным путем для ускорения выглядит распараллеливание этих операций.
Однако в PostgreSQL существуют фундаментальные ограничения, мешающие реализовать этот подход:
Для обхода второго ограничения разработчики нередко реализуют логику нарезки большой задачи на части на уровне приложения: работу распределяют между независимыми транзакциями, а их фиксацию делают атомарной с точки зрения самого приложения. Но такой подход не обеспечивает атомарности на уровне СУБД — это усложняет логику работы приложения и может привести к появлению трудноуловимых проблем.
Я расскажу про наше решение, которое реализует поддержку атомарного коммита группы транзакций прямо в ядре PostgreSQL. В основе решения — механизм двухфазной фиксации (2PC). Благодаря этому подход применим также и для распределенных транзакций.
Поговорим про историю создания фичи, принцип ее работы, области применения и выигрыш от ее использования.
Postgres Professional