热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【MySQL进阶笔记】InnoDB的事务隔离级别以及死锁

推荐阅读学习笔记《深入理解Java虚拟机》

推荐阅读

  • 学习笔记 《 深入理解 Java 虚拟机》
  • 学习笔记 《 后端架构设计》
  • 学习笔记 《 Java 基础知识进阶》
  • 学习笔记 《 Nginx 学习笔记》
  • 学习笔记 《 前端开发杂记》
  • 学习笔记 《 设计模式学习笔记》
  • 学习笔记 《 DevOps 最佳实践指南》
  • 学习笔记 《 Netty 入门与实战》
  • 学习笔记 《 高性能MYSQL》
  • 学习笔记 《 JavaEE 常用框架》
  • 学习笔记 《 Java 并发编程学习笔记》
  • 学习笔记 《 分布式系统》
  • 学习笔记 《 数据结构与算法》

锁在InnoDB 存储引擎中锁的重要举足轻重,他保证了在并发情况下临界资源的数据完整性和数据一致性。但有的时候错误的或者不合理的使用锁也会造成一些问题,本文将详细的阐述在锁的使用过程中可能出现的问题。


1、隔离级别(Isolation Level)

首先需要了解的是,在DBMS中定义了四种 事务的隔离级别(Transaction isolation) 分别是: 读未提交(Read Uncommitted)读已提交(Read Committed)可重复读(Repeatable Read)串行化(Serializable)


这四种隔离界别都能解决一定的问题事务问题,如读已提交解决了脏读的问题,但没有解决不可重复读的问题,可重复读解决了脏读以及不可重复读的问题,但没有解决幻读的问题;串行化则解决了所有问题,但是其性能降低。


image.pngCREATE TABLE test
(
`id` BIGINT NOT NULL PRIMARY KEY COMMENT 'ID',
`name` VARCHAR(128) NOT NULL COMMENT 'NAME'
) ENGINE = InnoDB;

1.1 脏读

脏读,是最简单的问题,所谓的脏读就是读取到脏数据。即事务A读取到事务B未提交的数据,而后续事务B可能提交事务,也有可能回滚事务,脏读是最严重的问题。


image.png-- 查询事务超时时间
mysql root@localhost:test> show variables like 'innodb_lock_wait_timeout';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 50 |
+--------------------------+-------+
1 row in set
Time: 0.067s
-- 查询事务超时之后是否 Roolback事务
mysql root@localhost:test> show variables like 'innodb_rollback_on_timeout';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| innodb_rollback_on_timeout | OFF |
+----------------------------+-------+
1 row in set
Time: 0.015s

3、死锁

同其他语言一样,死锁是两个事务互相等待对方释放资源,解决MySQL死锁的问题是事务超时,当出现死锁的时候,权重比较低的事务进行回滚,权重较高的事务得以继续执行。检测死锁除了超时机制还有等待图是检查是否存在死锁,这里不做深入讨论,感兴趣的读者可以查阅一下资料。


image.png var cpro_id = "u6885494";

推荐阅读
  • 第四单元和课程总结:简单的架构设计意识
    一、第四单元架构设计总结第一次作业由于需要按名查找类图模型,于是建立"Class"类进行管理由于方法具有参数导致类中存在二级结构 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • Java工程师书单(初级,中级,高级)
    简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序 ... [详细]
  • Spring MVC 浅谈
    大学时写的的文章,当时文章水平略差,大家见谅。MVC这个词儿,最早的定义应该是作为一种软件架构设计模式出现在软工里面的,即使用model、view、controller来设计及定 ... [详细]
  • 【Java编码规范】《阿里巴巴Java开发手册(正式版)》发布!
    2019独角兽企业重金招聘Python工程师标准2017年开春之际,诚意献上重磅大礼:阿里巴巴Java开发手册,首次公开阿里官方Ja ... [详细]
  • 关于CMS收集器的知识介绍和优缺点分析
    本文介绍了CMS收集器的概念、运行过程和优缺点,并解释了垃圾回收器的作用和实践。CMS收集器是一种基于标记-清除算法的垃圾回收器,适用于互联网站和B/S系统等对响应速度和停顿时间有较高要求的应用。同时,还提供了其他垃圾回收器的参考资料。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • Unity3D引擎的体系结构和功能详解
    本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
  • 软件测试工程师,需要达到什么水平才能顺利拿到 20k+ 无压力?
    前言最近看到很多应届生晒offer,稍有名气点的公司给出的价格都是一年30多W或者月薪20几k,相比之下工作几年的自己薪资确实很寒酸.根据我自己找工作经历,二线城市一般小公司招聘 ... [详细]
  • Unit4博客&课程总结Unit4作业的架构设计本单元作业的设计我分为了三个模块处理:模型构建+预处理+任务函数,前两部分即为整个图的完整构建,第三部分即为实现题目要求的查询方法。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 解决php错误信息不显示在浏览器上的方法
    本文介绍了解决php错误信息不显示在浏览器上的方法。作者发现php中的各种错误信息并不显示在浏览器上,而是需要在日志文件中查看。为了解决这个问题,作者提供了一种解决方式:通过修改php.ini文件中的display_errors参数为On,并重启服务。这样就可以在浏览器上直接显示php错误信息了。 ... [详细]
  • 数据库异常智能分析与诊断
    数据库,异常, ... [详细]
author-avatar
mrkly_825
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有