MySQL并发控制

  • MySQL的并发控制使用锁机制和事务相配合实现,几乎所有数据库都需要有并发控制能力,数据库的作用
    决定了其工作时必须能够处理大量的并发读和写。至于并发控制用到什么技术取决于各个数据库的数据
    存储引擎,在MySQL的InnoDB数据存储引擎中,其支持锁机制和事务机制。而MyISAM数据引擎则不支持
    事务,但是其支持锁机制。

一.MySQL的锁机制

  • 几乎所有需要处理并发读/写的系统都会实现相应的锁系统,一般锁系统包含两类锁:共享锁(shared locks)
    和排他锁(exclusive locks), 或者叫读锁(read locks)和写锁(write locks)。

1.1 锁分类

  • 基于锁的功能:共享锁(shared locks)和排他锁(exclusive locks), 或者叫读锁(read locks)和
    写锁(write locks)

  • 是否显式指定:

    • 隐式锁:由存储引擎自动施加锁
    • 显式锁:用户手动请求

1.2 锁粒度(Lock Granularity)

一种提高共享资源的并发性的做法是让资源具有更多的选择性,或者说以更小的粒度来区分资源;只对包含
需要改变的数据的部分进行加锁,而不是锁定整个资源块。但是锁是需要占用系统资源,需要开销的机制;
每个锁操作如:获取锁、检查某个锁是否是可用、释放锁等多种都会有额外开销。如果系统花费大量资源
在处理锁机制上而不实实在在的存储数据,那就会适得其反,拖累系统。

  • 行级锁:InnoDB存储引擎提供到行级别的锁机制,也就是可以针对某个表的某个行或者某些行施加锁。

  • 表级锁:MyISAM存储引擎提供到表级别的锁机制,也就是可以针对某个表施加锁。

  • 另外在MySQL中支持MVCC:Multiversion Concurrency Control,其允许多个操作执行在某个表的同一行。

1.3 锁策略

  • 锁策略是一种在锁机制的粒度和数据的安全性之间的平衡机制,该机制会影响性能

  • 大部分商业数据库不会提供用户可控制的锁策略,MySQL的InnoDB自己会实现基于引擎存储层的锁策略和锁粒度。

  • 在用户层和服务层则使

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值