网站推广设计制作,网络营销又称为,做资格核查在哪个网站,wordpress 安卓手机写前置知识点
锁#xff1a;一种确保数据安全的机制和手段。
在多个线程修改共享变量时#xff0c;我们可以对修改操作进行加锁。当多个用户修改表中的同一数据时#xff0c;我们可以对该行数据进行加锁#xff08;行锁#xff09;。锁是用于控制多个操作在并发环境下按顺…前置知识点
锁一种确保数据安全的机制和手段。
在多个线程修改共享变量时我们可以对修改操作进行加锁。当多个用户修改表中的同一数据时我们可以对该行数据进行加锁行锁。锁是用于控制多个操作在并发环境下按顺序执行以确保数据安全。
我们在数据库中使用的是MySQL而MySQL中最常用的存储引擎是InnoDB。InnoDB默认使用行锁。行锁是基于索引的因此在加锁时必须命中索引否则将使用表锁。
乐观锁
它认为数据的变动不会过于频繁因此允许多个事务同时对数据进行修改。乐观锁通常通过在表中添加一个版本号version或时间戳timestamp来实现其中版本号是最常用的方法。当事务从数据库中获取数据时会同时获取该数据的版本号。当事务完成对数据的修改并尝试将其更新到表中时会将之前获取到的版本号v1与数据当前的最新版本号v2进行比较。如果v1等于v2说明在数据变动期间没有其他事务对数据进行修改此时允许事务修改表中的数据并且更新后的版本号会加1表示数据已经变动过。如果v1不等于v2说明在数据变动期间数据被其他事务修改了此时不允许将数据更新到表中。一般的处理方法是通知用户重新进行操作。与悲观锁不同乐观锁是由人为控制的。
悲观锁
乐观锁是一种悲观的锁。这种悲观情绪体现在哪里呢悲观本质上是一种消极的情绪当锁采用悲观策略时它认为被保护的数据是极度不安全的随时可能被改变。当一个事务获得悲观锁后其他任何事务都不能对该数据进行修改只能等待锁被释放才能执行。
在数据库中行锁、表锁、读锁、写锁以及使用同步synchronized实现的锁都属于悲观锁的范畴。
总结
悲观锁 由于悲观锁可能对系统的吞吐性能造成影响因此它更适合应用于写操作较多的场景。
乐观锁 乐观锁的设计目的是为了避免悲观锁带来的缺点因此更适合应用于读操作较多的场景。