MySql共享锁和排它锁

共享锁和排他锁

1.共享锁: 读锁、X锁,在查询时生效,多个事务在查询同一个数据时共享一把锁,但是不能作用于修改数据,在select语句后添加 lock in share mode ;

2.排他锁:在insert、update和delete时生效,获取排他锁的事务在修改一条数据时,其他锁不能存在于这条数据上(如其它排它锁和共享锁),也就是说只有获取了排他锁的这个事务可以操作修改数据,IMySQL InnoDB引擎默认添加排他锁。

场景

参考:https://www.cnblogs.com/boblogsbo/p/5602122.html



MySql共享锁和排它锁

原文地址:https://www.cnblogs.com/lcmlyj/p/10286568.html

时间: 2024-10-04 10:05:52

MySql共享锁和排它锁的相关文章

mysql共享锁与排它锁

共享锁shared lock(也叫读锁read lock)又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁.这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改.共享锁不阻塞共享锁,阻塞排它锁 排他锁exclusive lock(也叫writer lock)又称写锁.若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁.这保证了其他事务在T释放A上

对mysql乐观锁、悲观锁、共享锁、排它锁、行锁、表锁概念的理解

操作数据库的时候,可能会由于并发问题而引起的数据的不一致性(数据冲突) ----乐观锁 乐观锁不是数据库自带的,需要我们自己去实现.乐观锁是指操作数据库时(更新操作),想法很乐观,认为这次的操作不会导致冲突,在操作数据时,并不进行任何其他的特殊处理(也就是不加锁),而在进行更新后,再去判断是否有冲突了. 通常实现是这样的:在表中的数据进行操作时(更新),先给数据表加一个版本(version)字段,每操作一次,将那条记录的版本号加1.也就是先查询出那条记录,获取出version字段,如果要对那条记

共享锁与排它锁区别(转)

共享锁[S锁]又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁.这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改. 排他锁[X锁]又称写锁.若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁.这保证了其他事务在T释放A上的锁之前不能再读取和修改A. 共享锁与排它锁区别 1.共享锁只用于表级,排他锁用于行级. 2.加了共享锁的对象,可以继续加共

共享锁和排它锁(ReentrantReadWriteLock)

1.什么是共享锁和排它锁 共享锁就是允许多个线程同时获取一个锁,一个锁可以同时被多个线程拥有. 排它锁,也称作独占锁,一个锁在某一时刻只能被一个线程占有,其它线程必须等待锁被释放之后才可能获取到锁. 2.排它锁和共享锁实例 ReentrantLock就是一种排它锁.CountDownLatch是一种共享锁.这两类都是单纯的一类,即,要么是排它锁,要么是共享锁. ReentrantReadWriteLock是同时包含排它锁和共享锁特性的一种锁,这里主要以ReentrantReadWriteLock

java 实现共享锁和排它锁

一直对多线程有恐惧,在实现共享锁和排它锁之后,感觉好了很多. 共享锁    就是查询的时候,如果没有修改,可以支持多线程查询: 排它锁    就是修改的时候,锁定共享锁,停止查询,同时,锁定排它锁,只允许一个线程进行修改,修改完成后,再解开共享锁: 心路历程: 一开始的想法是,绝对不调用 sleep ,要用到sleep 的地方我觉得都可以用  notify() 和 wait() 替换,sleep(T) 我觉得T  的大小压根是无法算出来的,如果非要用sleep 我觉得T 的时间应该是一个动态的值

浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景

浅谈Mysql共享锁.排他锁.悲观锁.乐观锁及其使用场景 Mysql共享锁.排他锁.悲观锁.乐观锁及其使用场景 一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |--排他锁(X锁,MyISAM 叫做写锁) |--悲观锁(抽象性,不真实存在这个锁) |--乐观锁(抽象性,不真实存在这个锁) 二.InnoDB与MyISAM Mysql 在5.5之前默认使用 MyISAM 存储引擎,之后使用 InnoDB .查

MySQL中的锁(表锁、行锁,共享锁,排它锁,间隙锁)

本文参考: http://mysqlpub.com/thread-5383-1-1.html http://blog.csdn.net/c466254931/article/details/53463596 有很多是转载合并过来. 锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的 计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所有数据库必须解决的一 个问题,锁冲突也是影响数据库并发访问性能的一个重

mysql 共享锁-排它锁

转  InnoDB 行级锁 InnoDB 行级锁 分类: 数据库2013-03-13 16:40 1745人阅读 评论(0) 收藏 举报 nnoDB的行锁模式及加锁方法 InnoDB实现了以下两种类型的行锁. ? 共享锁(S):允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁. ? 排他锁(X):允许获得排他锁的事务更新数据,阻止其他事务取得相同数据集的共享读锁和排他写锁. 另外,为了允许行锁和表锁共存,实现多粒度锁机制,InnoDB还有两种内部使用的意向锁(Intention Lock

mysql共享锁与排他锁

mysql锁机制分为表级锁和行级锁,本文就和大家分享一下我对mysql中行级锁中的共享锁与排他锁进行分享交流. 共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改. 排他锁又称为写锁,简称X锁,顾名思义,排他锁就是不能与其他所并存,如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁,但是获取排他锁的事务是可以对数据就行读取和修改. 对于共享锁大家可能很好理解,就是多个事务只能读数据不能改数据