首页 > 数据库技术 > 详细

MYSQL的锁机制

时间:2019-07-01 23:27:29      阅读:139      评论:0      收藏:0      [点我收藏+]

在mysql面临多个查询情况下,同一时刻修改数据,就会产生并发控制的问题。

一.读写锁

  在处理并发读或者并发写时,可以通过实现一个由两种类型的锁组成的锁系统来解决问题,这两种类型的锁通常被称作共享锁和排他锁,也叫读锁和写锁。

  具体暂不讨论读锁写锁的具体实现,描述一下所得概念:读锁时共享的,或者说是相互不阻塞的。多个客户端在同一时刻可以同时读取同一个资源,而互不干扰;写锁则是排他的,也就是说一个写锁会阻塞其他的读锁和写锁,这是出于安全的考虑,这样才能确保在给定的时间里。只有一个用户在写入(修改)数据,并防止其他用户对该条数据的写入。

 

二:锁粒度

  一种提高共享资源并发性的方式就是让锁定的对象更具有选择性,尽量只锁定需要修改的数据,而不是所有的数据,更为理想的方式及是支队修改的数据片进行精确的锁定。

  锁的数据量小,相应的系统所支持的并发程度越高,反之;对于系统来说,锁住的资源越多,会增加系统的开销,从而降低了并发程度。

 

  表锁:是mysql中最基本的锁策略,并且是开销最小的策略,表锁会锁定整张表,一个用户在对表进行写操作(插入,删除,更新等)前,需要获得写锁,这样就会阻塞其他用户对这张表的所有读写操作,只有没有写锁时,其他读取的用户才会获得读锁,读锁之间是不相互阻塞的。

     写锁比读锁具有更高的优先级,因此一个写锁请求可能会被插入到读锁队列的前面(写锁可以插入到锁队列中读锁的前面,反之读锁则不能插入到写锁的前面)

  行锁:行锁可以在mysql面临多个查询情况下,同一时刻修改数据,就会产生并发控制的问题。

 

一.读写锁

 

  在处理并发读或者并发写时,可以通过实现一个由两种类型的锁组成的锁系统来解决问题,这两种类型的锁通常被称作共享锁和排他锁,也叫读锁和写锁。

 

  具体暂不讨论读锁写锁的具体实现,描述一下所得概念:读锁时共享的,或者说是相互不阻塞的。多个客户端在同一时刻可以同时读取同一个资源,而互不干扰;写锁则是排他的,也就是说一个写锁会阻塞其他的读锁和写锁,这是出于安全的考虑,这样才能确保在给定的时间里。只有一个用户在写入(修改)数据,并防止其他用户对该条数据的写入。

 

 

 

二:锁粒度

 

  一种提高共享资源并发性的方式就是让锁定的对象更具有选择性,尽量只锁定需要修改的数据,而不是所有的数据,更为理想的方式及是支队修改的数据片进行精确的锁定。

 

  锁的数据量小,相应的系统所支持的并发程度越高,反之;对于系统来说,锁住的资源越多,会增加系统的开销,从而降低了并发程度。

 

 

 

  表锁:是mysql中最基本的锁策略,并且是开销最小的策略,表锁会锁定整张表,一个用户在对表进行写操作(插入,删除,更新等)前,需要获得写锁,这样就会阻塞其他用户对这张表的所有读写操作,只有没有写锁时,其他读取的用户才会获得读锁,读锁之间是不相互阻塞的。

 

     写锁比读锁具有更高的优先级,因此一个写锁请求可能会被插入到读锁队列的前面(写锁可以插入到锁队列中读锁的前面,反之读锁则不能插入到写锁的前面)

 

  行锁:行锁可以最大程度的支持并发处理,同时也带来的最大的锁开销。

MYSQL的锁机制

原文:https://www.cnblogs.com/fengyue0520/p/11116982.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!