2020
10-10
10-10
MySQL如何实现事务的ACID
前言最近在面试,有被问到,MySQL的InnoDB引擎是如何实现事务的,又或者说是如何实现ACID这几个特性的,当时没有答好,所以自己总结出来,记录一下。事务的四大特性ACID事务的四大特性ACID分别是,A-原子性(Atomicity),C-一致性(Consistency),I-隔离性(Isolation),D-持久性(Durability)。一致性是最终目的,原子性、隔离性、持久性是为了保证一致性所做的措施。所以我写的顺序并不是按照ACID来写的,将一致性放到了最后...
继续阅读 >
Springboot中事务的使用:1、启动类加上@EnableTransactionManagement注解,开启事务支持(其实默认是开启的)。2、在使用事务的public(只有public支持事务)方法(或者类-相当于该类的所有public方法都使用)加上@Transactional注解。在实际使用中一般是在service中使用@Transactional,那么对于controller->service流程中:如果controller未开启事务,service中开始了事务,service成功执行,controller在之后的运行中出现异常...
前言新手程序员大概有如下特点if嵌套经常超过3层、经常出现重复代码、单个函数代码特别长。只会crud,对语言特性和语言的边界不了解。不懂面向对象原则和设计模式,以为copy代码就算学会了,常见的是代码职责不明确或者写出万能类不知道数据结构和算法的重要性,以为靠硬件能解决运行慢的问题架构不懂,搭建框架不会,搭建环境不会,使用的软件底层原理一问三不知其实吧,很多人干了很多年,看似是老手,平时工作看似很...
1、事务具有ACID特性原子性(atomicity):一个事务被事务不可分割的最小工作单元,要么全部提交,要么全部失败回滚。一致性(consistency):数据库总是从一致性状态到另一个一致性状态,它只包含成功事务提交的结果隔离型(isolation):事务所做的修改在最终提交一起,对其他事务是不可见的持久性(durability):一旦事务提交,则其所做的修改就会永久保存到数据库中。2、事务的隔离级别1)隔离级别的定义与问题RE...
环境搭建导入maven依赖<!--spring提供的数据库操作工具--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.0.2.RELEASE</version></dependency><!--c3p0数据库连接池--><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.5</version></dependency><!--mysql连接器--><dependency><groupId>mysql</groupId><artifactId...
引言大家在面试中一定碰到过说说事务的隔离级别吧?老实说,事务隔离级别这个问题,无论是校招还是社招,面试官都爱问!然而目前网上很多文章,说句实在话啊,我看了后我都怀疑作者弄懂没!因为他们对可重复读(RepeatableRead)和串行化(serializable)的解析实在是看的我一头雾水!再加上很多书都说可重复读解决了幻读问题,比如《mysql技术内幕--innodb存储引擎》等,不一一列举了,因此网上关于事务隔离级别的文章大多是有问题...
有些spring相关的知识点之前一直没有仔细研究:比如spring的事务,并不是没有使用,也曾经简单的在某些需要事务处理的方法上通过增加事务注解来实现事务功能,仅仅是跟随使用(甚至并未测试过事务的正确性),至于如何在项目中配置事务,如何才能将事务写正确,事务的其它的一些原理性的东西从未花时间研究。最近同事正好抛出了一个问题,借此机会学习了一遍。问题一:增加了readOnly=true的事务中包含写操作,为什么线上运行这段代...