docs/content/stable/explore/transactions/_index.md
YugabyteDB is a transactional database that supports distributed transactions. A transaction is a sequence of operations performed as a single logical unit of work. YugabyteDB provides ACID guarantees for all transactions.
The following table summarizes the support for transactions across the YSQL and YCQL APIs.
| Property | YSQL | YCQL | Comments |
|---|---|---|---|
| Distributed transactions | Yes | Yes | Perform multi-row or multi-table transactions. |
| An application can connect to any node of the cluster. | |||
| Isolation levels | Serializable | ||
| Snapshot | |||
| Read Committed | Snapshot | Repeatable read isolation level in PostgreSQL maps to snapshot isolation in YSQL. | |
AUTOCOMMIT = false setting | Yes | No | The transaction must be expressed as one statement in YCQL. |
| Explicit locking | Yes | No | Ability to perform row- and table-level locking |
| {{<tags/feature/tp idea="1677">}} Transactional DDL | Yes | No | Each DDL statement is a transaction in YSQL, even if other DDL statements are in a transaction block. |
{{<index/block>}}
{{<index/item title="Distributed transactions" body="Distributed transactions in YugabyteDB." href="distributed-transactions-ysql/" icon="fa-thin fa-sitemap">}}
{{<index/item title="Isolation levels" body="Serializable, snapshot, and read committed isolation in YugabyteDB." href="isolation-levels/" icon="fa-thin fa-bars-staggered">}}
{{<index/item title="Explicit locking" body="Explicit row-level locking in YSQL." href="explicit-locking/" icon="fa-thin fa-lock">}}
{{<index/item title="Transactional DDL" body="How YugabyteDB handles DDL operations in a transaction block." href="transactional-ddl/" icon="fa-thin fa-table">}}
{{</index/block>}}
<!-- ADD THIS ONCE READY: <div class="col-12 col-md-6 col-lg-12 col-xl-6"> <a class="section-link icon-offset" href="non-transactional-tables/"> <div class="head"> <div class="icon"><i class="fa-solid fa-strikethrough"></i></div> <div class="title">Non-Transactional Tables</div> </div> <div class="body"> Disable multi-row transactions on a per-table basis in YCQL. </div> </a> </div> -->