美文网首页
浅谈MySQL的锁

浅谈MySQL的锁

作者: 梦云之巅 | 来源:发表于2018-04-03 21:46 被阅读19次

MySql的锁类别有乐观锁悲观锁

乐观锁:

   假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。悲观的缺陷是不论是页锁还是行锁,加锁的时间可能会很长,这样可能会长时间的限制其他用户的访问,也就是说悲观锁的并发访问性不好。

悲观锁:

   假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。乐观锁不能解决脏读,加锁的时间要比悲观锁短(只是在执行sql时加了基本的锁保证隔离性级别),乐观锁可以用较大的锁粒度获得较好的并发访问性能。

锁名 开销 加锁速度 死锁概率 粒度 并发性能
表锁 0 冲突率最高,并发du最低
页锁 0||1 并发du中
行锁 0||1 冲突率最小,并发du最高

innoDB和Myisam 两种数据库引擎对锁的支持

引擎 行锁 表锁 页锁
InnoDB
MyISAM

表锁更适用于以查询为主,只有少量按索引条件更新数据的应用;行锁更适用于有大量按索引条件并发更新少量不同数据,同时又有并发查询的应用。


当然关于为何要加锁推荐大家去看这篇
文章
我的理解是为了ACID
数据库事务拥有以下四个特性,习惯上被称之为ACID特性。
原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。

一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。

隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行。

持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中。

相关文章

  • 浅谈MySQL的锁

    MySql的锁类别有乐观锁和悲观锁 乐观锁:    假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。悲...

  • Mysql的锁

    MySql锁的分类 Mysql里的锁大致可以分为全局锁、表级锁和行锁三类。 全局锁 Mysql 增加全局锁的方法:...

  • MySQL二进制日志

    MySQL-day10 MySQL存储引擎-锁 1)什么是“锁”? 2)“锁”的作用是什么? 3)MySQL中的锁...

  • MySQL的锁机制

    mysql的锁机制 1、MySQL锁的基本介绍 MyISAM:MySQL的表级锁有两种模式:表共享读锁(Table...

  • rails中乐观锁和悲观锁的使用

    MySQL乐观锁和悲观锁的介绍可以参考之前的一篇文章MySQL中的锁(行锁,表锁,乐观锁,悲观锁,共享锁,排他锁)...

  • (4)头条mysql

    1、MySQL有哪些锁,乐观锁和悲观锁实现 如果避免、减少锁等待、团队中如何监控MySQL的锁等待的情况 锁监控:...

  • 共享 + 排他锁

    mysql锁机制分为表级锁和行级锁 ,mysql中行级锁中的共享锁与排他锁进行分享交流。 测试语法 begin; ...

  • 浅谈MySQL数据库锁

    作为一个程序员,每日必打交道的就是数据库,而现在市场对于MySQL数据库的要求就是必会。(我自己观察的啊,莫要认真...

  • MS汇总

    数据库相关[MS-关于锁(乐观锁,悲观锁,行锁、表锁,共享锁,排他锁)Mysql索引优化Mysql查询优化Mysq...

  • Innodb的锁

    Innodb的锁是行级锁 mysql delete是否会锁表 MySQL的InnoDB存储引擎支持行级锁,Inno...

网友评论

      本文标题:浅谈MySQL的锁

      本文链接:https://www.haomeiwen.com/subject/onhdcftx.html