码迷,mamicode.com
首页 > 数据库 > 详细

MySQL 内部锁

时间:2020-03-07 22:33:16      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:get   表操作   请求   HERE   sel   更新   because   lan   bec   

行级锁

对数据库的行记录进行加锁

优点:

  • Fewer lock conflicts when different sessions access different rows.
  • 当不同会话访问不同的行时会减少锁的冲突
  • Fewer changes for rollbacks.
  • 在回滚的时候会减少修改量
  • Possible to lock a single row for a long time.
  • 可以长时间锁定单独的一条行记录

表级锁

对正在访问的整个表进行加锁

优点:

  • Relatively little memory required (row locking requires memory per row or group of rows locked)
  • 相对低的内存需求
  • Fast when used on a large part of the table because only a single lock is involved.
  • 对表的许多地方进行更新时,只涉及一个锁,因此非常块
  • Fast if you often do GROUP BY operations on a large part of the data or must scan the entire table frequently.
  • 在经常执行 GROUP BY 操作,或者需要频繁扫描整个表的情况下,非常块。

MySQL 对表加写锁的过程:

  1. 如果没有锁加在表上,那么给表加上写锁
  2. 否则,将加锁的请求添加到写锁队列

MySQL 对表加读锁的过程:

  1. 如果没有写锁加在表上,那么给表加上读锁
  2. 否则,将加锁的请求添加到读锁队列。

选择锁的类型

通常来说,表级锁在以下的情况下优于行级锁:

  • 对表操作的语句是是读操作
  • 对表操作的语句混合了读和写,并且写操作只更新删除 通过key获取的一条记录
UPDATE tbl_name SET column=value WHERE unique_key_col=key_value;
DELETE FROM tbl_name WHERE unique_key_col=key_value;
  • SELECT语句混合了并发的INSERT语句,并且只有少量的UPDATEDELETE语句
  • 对表的有大范围扫描或 对整个进行GROUP BY,而没有写者。

来源:http://www.1994july.club/seojishu/

MySQL 内部锁

标签:get   表操作   请求   HERE   sel   更新   because   lan   bec   

原文地址:https://www.cnblogs.com/1994july/p/12438835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!