A long-lived transaction is a transaction that spans multiple database transactions. The transaction is considered “long-lived” because its boundaries must, by necessity of business logic, extend past a single database transaction. A long-lived transaction can be thought of as a sequence of database transactions grouped to achieve a single atomic result.
A common example is a multi-step sequence of requests and responses of an interaction with a user through a web client.
A long-lived transaction creates challenges of concurrency control and scalability.
A chief strategy in designing long-lived transactions is optimistic concurrency control with versioning.