前言
  • 数据库是一个共享资源,为了充分利用数据库资源,发挥数据

    库共享资源的特点,应该允许多个用户并行地存取数据库。但这样就会产生多个用户程序并

    发存取同一数据的情况,为了避免破坏一致性,所以必须提供并发控制机制。

  • 并发控制是以事务(transaction)为单位进行的。

什么时候表锁什么时候行锁?
  • 行锁是指的innodb引擎,只有通过索引条件检索数据,InnoDB才会使用行级锁,否则,InnoDB将使用表锁。
查看表锁
#查看是否有锁表的情况
show OPEN TABLES where In_use > 0; #拼接hyq用户的kill语句,谨慎执行。
select concat('KILL ',id,';') from
information_schema.processlist where user='hyq'; #查看当前的事务
SELECT * FROM information_schema.innodb_trx;
#查看当前锁定的事务
SELECT * FROM information_schema.innodb_locks;
#查看当前等锁的事务
SELECT * FROM information_schema.innodb_lock_waits;
查看行锁
SHOW STATUS LIKE 'innodb_row_lock%';
四种事务隔离级别
  • 一个事务对某个数据对象加锁后究竞拥有什么样控制是由封锁类型决定的,基本的锁有两种,排它锁(写锁、X锁),共享锁(读锁、S锁)。两者的相容关系如下:

例子:

未提交读(Read uncommitted)
  • 未提交读是数据库事务隔离级别中最低的一种,在这种级别下,一个事务会读到另一个事务更新后但未提交的数据,如果事务1 rollback后,那么事务2读取的数据就是脏数据,简称脏读。

已提交读(Read Committed)
  • 只能读取到已经提交的数据。在事务1内,多次读同一数据,在这个事务还没有结束时,如果事务2恰好修改了这个数据,那么,在事务1中,两次读取的数据就可能不一致。也就是说的不可重复读的问题。如下:

可重复读(Repeated Read)
  • 可重复读就是多次读取的结果都一直,而不可重复读是指,在一个事务内,多次读同一数据,在这个事务还没有结束时,如果另一个事务恰好修改了这个数据,那么,在第一个事务中,两次读取的数据就可能不一致。在这种情况下可能会遇到幻读的问题如下:

可串行化(Serializable )
  • 可串行性是并行调度正确性的唯一准则,所有事务按照次序依次执行,因此,脏读、不可重复读、幻读都不会出现。

    为保证并行调度可串行性而提供的封锁协议。因此我们可以得出如下结论:这个事务级别的,其并行执行的结果一定是正确的,但是呢,由于串行执行,大大降低了并行度,所以一般不使用它。

欢迎来公众号【侠梦的开发笔记】 一起交流进步

mysql锁及四种事务隔离级别笔记的更多相关文章

  1. mysql四种事务隔离级别

    mysql事务并发问题 ACID什么的就不啰嗦了.mysql多个事务并发的时候,可能会出现如下问题: 1. 更新丢失 即两个事务同时更新某一条数据,后执行的更新操作会覆盖先执行的更新操作,导致先执行的 ...

  2. MySQL 四种事务隔离级别详解及对比--转

    http://www.jb51.net/article/100183.htm 接的隔离级别.它的语法如下: ? 1 SET [SESSION | GLOBAL] TRANSACTION ISOLATI ...

  3. MySQL的四种事务隔离级别

    本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做 ...

  4. MySQL四种事务隔离级别详解

    本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做 ...

  5. [转载] MySQL的四种事务隔离级别

    本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做 ...

  6. MySQL的四种事务隔离级别【转】

    本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做 ...

  7. Mysql InnoDB的四个事务隔离级别和(分别逐级解决的问题)脏读,不可重复读,虚读

    MySqlInnoDB的事务隔离级别有四个:(默认是可重复读repeatable read) 未提交读 read uncommit : 在另一个事务修改了数据,但尚未提交,在本事务中SELECT语句可 ...

  8. Mysql 四种事务隔离级别

    一.前提 时过一年重新拾起博文记录,希望后面都能坚持下来. 接着之前MySql的学习,先记录下这篇. 以下都是基于mysql8 innodb存储引擎进行分析的. 二.事务的ACID特性 A(Atomi ...

  9. MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐 级之间的区别?

    SQL 标准定义的四个隔离级别为: 1.read uncommited :读到未提交数据 2.read committed:脏读,不可重复读 3.repeatable read:可重读 4.seria ...

随机推荐

  1. 关于mybatis中llike模糊查询中#和$的使用

    模糊查询: 工作中用到,写三种用法吧,第四种为大小写匹配查询 1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('% ...

  2. @codeforces - 1209G2@ Into Blocks (hard version)

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 定义一个序列是好的,当且仅当这个序列中,相等的两个数之间的所有数 ...

  3. jmter对于函数的处理

    1.获取当天的时间函数 ${__time(yyyy-MM-dd_HH-mm-ss)} 2.获取随机函数 ${__Random(100,300,)} 3.查看结果数

  4. 红帽Linux6虚拟机克隆后操作

    1.首先需要修改root密码 开机后按2次e进入以下界面 按e编辑 在quiet后输入single 1 输入好了之后,“回车”,返回到了刚刚的界面,再输入“b”,让boot引导进入系统. 进入单用户模 ...

  5. H3C 分页显示

  6. linux 一些简单操作

    vim   ----三种模式 1.命令模式           2.输出模式       3.底线命令模式 w(e) 移动光标到下一个单词 b 移动到光标上一个单词 数字0 移动到本行开头 $ 移动光 ...

  7. spring boot activiti 整合

    1.pom.xml <dependency> <groupId>org.activiti</groupId> <artifactId>activiti- ...

  8. Python--day67--Jsonresponse响应介绍和路由系统的分组命名匹配方式(简单介绍)

    1,Jsonresponse响应介绍: ,2,路由系统的分组命名匹配方式:(简单介绍)

  9. DOMjudge配置

    DOMjudge配置补充 系统环境为 Debbian GNU/Linux 9 (stretch) 64-bit 在Web server configuration中, ln -s etc/apache ...

  10. netstat 显示当前网络连接的统计信息

    C:\Users\Administrator\Desktop\hsqldb-2.3.2\data>netstat -h Displays protocol statistics and curr ...