Transaction¶
ACID¶
In the context of transaction processing, the acronym ACID refers to the four key properties of a transaction: atomicity, consistency, isolation, and durability.
Atomicity All changes to data are performed as if they are a single operation. That is, all the changes are performed, or none of them are. For example, in an application that transfers funds from one account to another, the atomicity property ensures that, if a debit is made successfully from one account, the corresponding credit is made to the other account.
Consistency Data is in a consistent state when a transaction starts and when it ends. For example, in an application that transfers funds from one account to another, the consistency property ensures that the total value of funds in both the accounts is the same at the start and end of each transaction.
Isolation The intermediate state of a transaction is invisible to other transactions. As a result, transactions that run concurrently appear to be serialized. For example, in an application that transfers funds from one account to another, the isolation property ensures that another transaction sees the transferred funds in one account or the other, but not in both, nor in neither.
Durability After a transaction successfully completes, changes to data persist and are not undone, even in the event of a system failure. For example, in an application that transfers funds from one account to another, the durability property ensures that the changes made to each account will not be reversed.
API¶
API | Descritpion | |
---|---|---|
cross_ret | cross_dbTransBegin (cross_db_h hDb, uint32_t flags) | Begin Transaction |
cross_ret | cross_dbTransCommit (cross_db_h hDb, uint32_t flags) | Commit Transaction |
cross_ret | cross_dbTransRollback (cross_db_h hDb, uint32_t flags) | Rollback Transaction |
AutoCommit¶
- For
on-disk
database, autocommit is enabled for single row and multiple rows DMLs by default. - For
ramdisk
andinmem
database, autocommit is enabled for single row DMLs only by default. For multiple rows DMLs, if process crashed, some rows may be updated/deleted, some may not, so if you need strict ACID, you have to call transaction APIs manually. This is to improve performance and let user to control the behavior by need.