Concurrency control
Encyclopedia : C : CO : CON : Concurrency control
In computer science — more specifically, in the field of databases — concurrency control is a method used to ensure that database transactions are executed in a safe manner (i.e., without data loss). Concurrency control is especially applicable to database management systems (DBMS), which must ensure that transactions are executed safely and that they follow the ACID rules, as described in the following section. The DBMS must be able to ensure that only serializable, recoverable schedules are allowed, and that no actions of committed transactions are lost while undoing aborted transactions.
In computer science — in the field of concurrent programming (see also parallel programming and parallel computing on multiprocessor machines) — concurrency control is a method used to ensure that correct results are generated, while getting those results as quickly as possible.
Several algorithms can be used for either type of concurrency control (i.e., with in-RAM data structures on systems that have no database, or with on-disk databases).
Transaction ACID rules
- Atomicity - Either all or no operations are completed. in other words to the outside world the transaction happen indivisible.(Undo)
- Consistency - All transactions must leave the database in consistent state.
- Isolation - Transactions cannot interfere with each other.
- Durability - Successful transactions must persist through crashes. (Redo)
Concurrency control mechanism
The main categories of concurrency control mechanisms are:- Optimistic - Delay the synchronization for transactions until the operations are performed. Conflicts are less likely but won't be known until they happen.
- Pessimistic - The potentially concurrent executions of transactions are synchronized early in their execution life cycle. Blocking is thus more likely but will be known earlier.
- Strict two-phase locking
- Non-strict two-phase locking
- Conservative two-phase locking
- Index locking
- Multiple granularity locking
There are also non-lock concurrency control methods. All the currently implemented lock-based and almost all the implemented non-lock based concurrency controls will guarantee that the resultant schedule is conflict serializable; however, there are many academic texts encouraging view serializable schedules for environments where gains due to improvement in concurrency outstrip overheads in generating schedule plans.
See also
External links
- [Portland Pattern Repository: Synchronization Strategies]
- [Portland Pattern Repository: Category Concurrency]
From Wikipedia, the Free Encyclopedia. Original article here. Support Wikipedia by contributing or donating.
All text is available under the terms of the GNU Free Documentation License See Wikipedia Copyrights for details.
