文章目录
- 前言
- 一、重载和重写的区别
- 一、&和&&的区别
- 一、get和post请求的区别 delete、put
- 一、cookie和session的区别
- 一、@Autowired和@Resource区别
- 一、==”和equals 最大的区别是
- 一、IOC控制反转
- 一、什么是AOP?
- 一、AOP为什么叫切面编程?
- 一、为什么叫控制反转?
- 一、IOC和DI的区别?
- 一、Redis 持久化机制
- 一、缓存雪崩
- 一、缓存穿透
- 一、单线程的redis为什么这么快
- 一、redis的数据类型,以及每种数据类型的使用场景
- 一、SpringBoot和SpringCloud区别
- 一、总结一下SpringCloud结果核心组件
- 一、Spring的bean默认是单例多例
- 一、创建线程有哪几种方式?
- 一、runnable 和 callable 有什么区别
- 一、线程的 run() 和 start() 有什么区别
- 一、说一下 spring mvc 运行流程
- 一、spring mvc 有哪些组件
- 一、说一下list,set,map的区别
- 一、MySQL的事务
- 一、如何做 MySQL 的性能优化?
- 一、sql慢查询
- 一、通过MySQL命令查看有多少慢查询
- 一、HashMap和HashTable区别
- 一、ArrayList和LinkedList的区别如下
- 一、final、finally、finalize 有什么区别
- 一、说一下堆栈的区别
- 一、springbuilder和springbuffer
- 一、事务特性
- 一、事务的隔离级别
- 一、Mybatis 和 Hibernate 的区别
- 一、MySQL索引类型以及方法
- 一、查看索引是否生效
前言
提示:(不定期更新)
提示:以下是本篇文章正文内容,下面案例可供参考
一、重载和重写的区别
一、&和&&的区别
一、get和post请求的区别 delete、put
一、cookie和session的区别
一、@Autowired和@Resource区别
一、==”和equals 最大的区别是
一、IOC控制反转
一、什么是AOP?
一、AOP为什么叫切面编程?
一、为什么叫控制反转?
一、IOC和DI的区别?
一、Redis 持久化机制
一、缓存雪崩
一、缓存穿透
一、单线程的redis为什么这么快
一、redis的数据类型,以及每种数据类型的使用场景
一、SpringBoot和SpringCloud区别
一、总结一下SpringCloud结果核心组件
一、Spring的bean默认是单例多例
一、创建线程有哪几种方式?
一、runnable 和 callable 有什么区别
一、线程的 run() 和 start() 有什么区别
一、说一下 spring mvc 运行流程
一、spring mvc 有哪些组件
一、说一下list,set,map的区别
一、MySQL的事务
一、如何做 MySQL 的性能优化?
一、sql慢查询
一、通过MySQL命令查看有多少慢查询
一、HashMap和HashTable区别
一、ArrayList和LinkedList的区别如下
一、final、finally、finalize 有什么区别
一、说一下堆栈的区别
一、springbuilder和springbuffer
一、事务特性
- 一致性(Consistency)
一致性是指事务使得系统从一个一致的状态转换到另一个一致状态。事务的一致性决定了一个系统设计和实现的复杂度。事务可以不同程度的一致性:
强一致性:读操作可以立即读到提交的更新操作。
弱一致性:提交的更新操作,不一定立即会被读操作读到,此种情况会存在一个不一致窗口,指的是读操作可以读到最新值的一段时间。
最终一致性:是弱一致性的特例。事务更新一份数据,最终一致性保证在没有其他事务更新同样的值的话,最终所有的事务都会读到之前事务更新的最新值。
如果没有错误发生,不一致窗口的大小依赖于:通信延迟,系统负载等。
其他一致性变体还有:
单调一致性:如果一个进程已经读到一个值,那么后续不会读到更早的值。
会话一致性:保证客户端和服务器交互的会话过程中,读操作可以读到更新操作后的最新值。 - 隔离性(Isolation)
并发事务之间互相影响的程度,比如一个事务会不会读取到另一个未提交的事务修改的数据。在事务并发操作时,可能出现的问题有:
脏读:事务A修改了一个数据,但未提交,事务B读到了事务A未提交的更新结果,如果事务A提交失败,事务B读到的就是脏数据。
不可重复读:在同一个事务中,对于同一份数据读取到的结果不一致。比如,事务B在事务A提交前读到的结果,和提交后读到的结果可能不同。
不可重复读出现的原因就是事务并发修改记录,要避免这种情况,最简单的方法就是对要修改的记录加锁,这回导致锁竞争加剧,影响性能。
另一种方法是通过MVCC可以在无锁的情况下,避免不可重复读。
幻读:在同一个事务中,同一个查询多次返回的结果不一致。事务A新增了一条记录,事务B在事务A提交前后各执行了一次查询操作,
发现后一次比前一次多了一条记录。 幻读是由于并发事务增加记录导致的,这个不能像不可重复读通过记录加锁解决,
因为对于新增的记录根本无法加锁。需要将事务串行化,才能避免幻读。 - 持久性(Durability)
事务提交后,对系统的影响是永久的。