美文网首页
Mysql锁与事务隔离级别

Mysql锁与事务隔离级别

作者: 传达室马大爷 | 来源:发表于2021-03-17 18:45 被阅读0次

锁的定义

锁是协调多个进程或线程访问某一共享可变资源,防止并发造成不可预见性的问题

锁分类

  • 性能上分为乐观锁(版本控制实现)和悲观锁
  • 数据库操作的类型上分为读锁(共享锁)和写锁(排它锁)
  • 对数据的操作粒度上分为表锁和行锁
表锁

每次操作直接锁住整张表,加锁快,开销小,不会出现死锁,但锁的粒度大,发生锁冲突的概率高,并发效率低

MyISAM存储引擎支持表锁

对MyISAM进行读操作时不会影响别的进程的对同一张表的读操作,但会阻止对该张表的写操作,只有读锁释放后才能进行写锁加锁

对MyISAM进行写操作时会阻塞别的进程加读锁和写锁,只有写锁释放后才能执行别的进程的读写

行锁

对行记录进行加锁,开销大,加锁慢,会出现死锁,但锁的粒度小,发生锁冲突的概率低,并发效率高

InnoDB与MyISAM最大的区别

  • 支持事务
  • 支持行级锁

事务

事务的四大特性(ACID)
  • 原子性:事务是一个原子操作,同一个事务里多个更新操作要么同时成功,要么同时失败
  • 一致性:事务对数据完整性的约束,数据执行完成后属于合法的状态,不会违背任何的数据完整性,比如A转账给B,A和B总共5000元,不论A与B之间如何转账,总金额不会发生改变。一致性是为了保障数据的完整性。
  • 隔离性:多个用户并发操作同一数据库,数据库为每个用户开启的事务,不被其他事务所干扰,事务之间彼此独立
  • 持久性:事务完成后对数据的修改是永久的,即使数据库发生故障数据也不会丢失
并发事务带来的问题
  • 更新丢失:多个事务并发操作某行记录,会出现后修改的事务覆盖前面的事务所做的更新

  • 脏读:多个事务并发操作时,事务A在处理数据过程中读取到了事务B已经修改但未提交的数据,如果事务B回滚后,事务A读取的数据无效,不符合事务的一致性。

  • 不可重复读:多个事务并发操作时,一个事务多次查询某一个行数据返回不同的结果值

    事务A读取到事务B已经提交的修改数据,不符合事务的隔离性。

  • 幻读:多个事务并发操作时,事务A读取到事务B提交的新数据,不符合事务的隔离性

事务隔离级别
事务隔离级别 脏读 不可重复读 幻读
读未提交(read-uncommitted)
不可重复读(read-committed)
可重复读(repeatable-read)
串行化(serializable)
MySQL默认事务隔离级别

可重复读(repeatable-read)

-- 查看当前数据库事务隔离级别
SHOW VARIABLES LIKE 'tx_isolation';
-- 设置事务隔离级别
SET tx_isolation='REPEATABLE-READ';
InnoDB的行锁是针对索引加的锁,不是针对记录加的锁。并且该索引不能失效,否则都会从行锁升级为表锁。

相关文章

  • 收藏-MySQL

    # MySQL的并发控制与加锁分析# MySQL的四种事务隔离级别# mysql共享锁与排他锁

  • MYSQL事务

    常用语句 MYSQL事务,锁表 事务控制语句 事务的隔离级别 隔离级别描述产生风险READUNCOMMITTED ...

  • MySQL相关(一)——— 事务和锁

    事务的隔离级别和锁机制 【1】InnoDB 事务隔离级别和锁 【2】脏读、不可重复读、幻读 mysql 相关 常用...

  • Mysql 隔离级别与锁的关系

    Innodb中的事务隔离级别和锁的关系MySQL加锁处理分析

  • Mysql 事务

    IBM MySQL 事务隔离级别和锁[https://developer.ibm.com/zh/articles/...

  • Mysql锁与事务隔离级别

    锁的定义 锁是协调多个进程或线程访问某一共享可变资源,防止并发造成不可预见性的问题 锁分类 性能上分为乐观锁(版本...

  • 聊聊MySQL的隔离级别

    原文:聊聊MySQL的隔离级别 | MySQL隔离级别原理参考:oracle - mysql - 数据库事务隔离级...

  • mysql事务隔离级别的实现原理

    mysql事务隔离级别的实现原理 mysql innodb中的四种事务隔离级别[https://www.jians...

  • MySQL 事务隔离级别解析和实战

    MySQL 事务隔离级别解析和实战 1、MySQL 隔离界别查看 查看回话隔离级别 查看系统隔离级别 2、MySQ...

  • Mysql事务

    1) mysql事务的ACID特性 2)MySQL事务隔离级别

网友评论

      本文标题:Mysql锁与事务隔离级别

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