美文网首页
数据库锁和事务2019-12-04

数据库锁和事务2019-12-04

作者: happy1991 | 来源:发表于2019-12-04 17:04 被阅读0次

数据库的锁机制

        按锁类型划分,可分为共享锁、排他锁

        按锁的粒度划分,可分为表级锁、行级锁、页级锁

        按使用机制划分,可分为乐观锁、悲观锁

1、按锁类型划分,可分为共享锁、排他锁

    共享锁(也叫写锁、S锁):多个事务可封锁一个共享页;任何事务都不能修改该页;通常是该页读取完毕,S锁立即被释放。在执行select语句的时候需要给操作对象(表或者一些记录  )加上共享锁,但加锁之前需要检查是否有排他锁,如果没有,则可以加共享锁(一个对象上可以加n个共享锁),否则不行。共享锁通常在执行完select语句之后被释放,当然也有可能是在事务结束(包括正常结束和异常结束)的时候被释放,主要取决于数据库所设置的事务隔离级别。

    排他锁(也叫写锁、X锁):仅允许一个事务封锁此页;其他任何事务必须等到X锁被释放才能对该锁页进行访问;X锁一直到事务结束才能被释放。执行insert、update、delete语句的时候需要给操作的对象加排他锁,在加排他锁之前必须确认该对象上没有其他任何锁,一旦加上排他锁之后,就不能再给这个对象加其他任何锁。排他锁的释放通常是在事务结束的时候(当然也有例外,就是在数据库事务隔离级别被设置成Read Uncommitted(读未提交数据)的时候,这种情况下排他锁会在执行完更新操作之后被释放,而不是在事务结束的时候)。

2、按锁的粒度划分,可分为表级锁、行级锁、页级锁    

       表级锁:直接锁定整张表,在锁定期间,其他进程无法对该表进行写操作。如果你是写锁,则其他进程读也不允许。特点是:开销小、加锁快,不会出现死锁。锁定粒度最大,发生锁冲突的概率最高,并发度最低。

        MYISAM存储引擎采用的就是表级锁。

       行级锁:仅对指定的记录进行加锁,这样其他进程还是可以对同一个表中的其他记录进行操作。特点:开销大,加锁慢,会出现死锁。锁定的粒度最小,发生锁冲突的概率最低,并发度也最高。

        InnoDB存储引擎既支持行级锁,也支持表级锁,但默认情况下是采用行级锁。

       页级锁:一次锁定相邻的一组记录。开销和加锁时间介于表级锁和行级锁之间;会出现死锁;锁定粒度也介于表级锁和行级锁之间,并发度一般。

3、按使用机制划分,可分为乐观锁、悲观锁

————————————————

版权声明:本文为CSDN博主「Tiger--Chen」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_21993785/article/details/81077318

相关文章

  • 数据库锁和事务2019-12-04

    数据库的锁机制 按锁类型划分,可分为共享锁、排他锁 按锁的粒度划分,可分为表级锁、行级锁、页级锁 ...

  • 两端锁协议

    1、数据库锁 数据库锁粒度划分:行锁、页锁、表锁。共享锁:读锁、S锁。事务T可以对A进行读取,其他事务只能读取而不...

  • MySQL数据库高级(七)——事务和锁

    MySQL数据库高级(七)——事务和锁 一、事务简介 1、事务简介 事务(Transaction) 是指作为单个逻...

  • 事务与锁

    事务、锁、同步的区别; 事务是数据库中的概念,包括ACID,其中I即isolation,隔离性,锁只是用来保证事务...

  • Sqlite事务锁状态以及死锁问题

    Sqlite事务锁 Sqlite事务中锁的状态 1 UNLOCKED: 表示数据库并未开启任何读写, 使用BEGI...

  • 数据库事务和锁

    参考链接:MySQL中Innodb的事务隔离级别和锁的关系 1. 事务 事务:事务是作为单个逻辑单元工作执行的一些...

  • 数据库事务和锁

    数据库的事务什么是数据库的事务?数据库事务(transaction)是访问并发可能操作各种数据项的一个数据库操作序...

  • 知识点整理

    redis redis为什么高效,及应用场景 锁 死锁产生条件,及避免死锁 悲观锁与乐观锁 数据库 事务 事务特性...

  • MySQL知识集

    数据库引擎 Innodb和MyISAM的区别 Innodb 支持行锁 支持表锁 支持事务 支持外键 数据存储时索引...

  • 数据库如何加锁?锁是用来干嘛的?

    数据库中的共享锁与排它锁 共享锁(S锁),又称为读锁,如果数据对象加上共享锁之后,则该数据库对象可以被其他事务查看...

网友评论

      本文标题:数据库锁和事务2019-12-04

      本文链接:https://www.haomeiwen.com/subject/toplgctx.html