# Transactions

- [COMMIT](/docs/server/reference/sql-statements/transactions/commit.md): Commit the current transaction. This statement permanently saves all changes made during the current transaction to the database.
- [LOCK TABLES](/docs/server/reference/sql-statements/transactions/lock-tables.md): Complete LOCK TABLES reference: READ/WRITE/WRITE CONCURRENT lock syntax, table aliases, WAIT n|NOWAIT timeouts, UNLOCK TABLES, and innodb\_table\_locks behavior.
- [Metadata Locking](/docs/server/reference/sql-statements/transactions/metadata-locking.md): Understand how MariaDB manages concurrency. Metadata locks protect the structure of database objects from being modified while they are in use.
- [READ COMMITTED](/docs/server/reference/sql-statements/transactions/transactions-read-committed.md): Set the transaction isolation level to READ COMMITTED. In this mode, each query within a transaction sees only data committed before the query began.
- [READ UNCOMMITTED](/docs/server/reference/sql-statements/transactions/transactions-read-uncommitted.md): Set the transaction isolation level to READ UNCOMMITTED. This lowest isolation level allows dirty reads, where a transaction can see uncommitted changes.
- [REPEATABLE READ](/docs/server/reference/sql-statements/transactions/transactions-repeatable-read.md): Set the transaction isolation level to REPEATABLE READ. This default InnoDB level ensures consistent results for repeated reads within the same transaction.
- [ROLLBACK](/docs/server/reference/sql-statements/transactions/rollback.md): Undo changes in the current transaction. This statement reverts the database to its state before the transaction started or to a specific savepoint.
- [SAVEPOINT](/docs/server/reference/sql-statements/transactions/savepoint.md): Create a named marker within a transaction. Savepoints allow you to roll back part of a transaction without canceling the entire operation.
- [SERIALIZABLE](/docs/server/reference/sql-statements/transactions/transactions-serializable.md): Set the transaction isolation level to SERIALIZABLE. This highest level ensures total isolation by converting plain SELECTs to locking reads.
- [SQL statements Causing an Implicit Commit](/docs/server/reference/sql-statements/transactions/sql-statements-that-cause-an-implicit-commit.md): Identify statements that force a commit. Certain commands, like DDL statements, implicitly commit the current transaction before executing.
- [START TRANSACTION](/docs/server/reference/sql-statements/transactions/start-transaction.md): Complete START TRANSACTION reference: BEGIN/COMMIT/ROLLBACK syntax, WITH CONSISTENT SNAPSHOT option, READ ONLY/WRITE modes, AND \[NO] CHAIN/RELEASE modifiers.
- [Transaction Timeouts](/docs/server/reference/sql-statements/transactions/transaction-timeouts.md): Understand how timeouts affect transactions. This section explains system variables that control wait times for locks and transaction duration.
- [UNLOCK TABLES](/docs/server/reference/sql-statements/transactions/transactions-unlock-tables.md): Release explicit table locks. This statement releases all locks acquired by the current session with LOCK TABLES.
- [WAIT and NOWAIT](/docs/server/reference/sql-statements/transactions/wait-and-nowait.md): Control lock wait behavior. These clauses allow statements to wait for a specific timeout or fail immediately if a lock cannot be acquired.
- [XA Transactions](/docs/server/reference/sql-statements/transactions/xa-transactions.md): Manage distributed transactions. This section covers XA statements for coordinating two-phase commits across multiple resources.
