数据库并发控制

数据库为何要并发控制?
数据库是共享资源,通常有多个事务同时运行。当多个事务并发地存取数据库时就会产生同时读取/修改同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库要提供并发控制机制

并发操作可能会产生哪几类数据不一致?
丢失修改:两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失
不可重复读:事务T1读取数据后,事务2执行更新操作,使T1无法再现前一次读取结果
读脏数据:事务T1修改某一数据,将其写回磁盘,事务2读取统一数据后,T1 由于某种原因被撤销,这时T1已修改的数据恢复原值,2读到的数据就与数据库中的数据不一致。

并发控制实现方式:
封锁技术,也可采用时间戳方法,例如分布式数据库系统
封锁就是事务在对某个数据对象例如表、记录等操作之前,先向系统发初请求,对其加锁。加锁后事务就对该数据对象有了一定控制,在事务释放锁之前,其他事务不能更新此数据对象。
排他锁(x锁级写锁),事务T加锁后,可读可改,但其他事务不行
共享锁(S锁即读锁),事务T加锁后,可读,其他事务可加S锁,可读

posted @ 2020-11-17 21:26  走过路过哭过  阅读(297)  评论(0)    收藏  举报