逐梦少年,看你能不能发现宝藏( 三 )


Tx1开始 Tx2结束
? | |
? ------------------|----------------------------------------------------------------------|-------------------------
? () ()
? | |
? ++++++++++++++++++|++++++++++++++++++
? ()
2.传播行为
? 表示该方法必须启动一个新事物,并在自己的事务内运行 。如果有事务在运行,就应该先挂起它 。
? Tx1挂起 Tx1继续 Tx1挂起 Tx1继续
Tx1开始 Tx2开始 Tx2结束 Tx3开始 Tx3结束 Tx1结束
? | |
? ------------------|----------------------------------------------------------------------|-------------------------
? () ()
? | |
? ++++++++++++++++++|++++++++++++++++++
? ()
9.事务的隔离级别
? 1.数据库事务的并发问题
? 假如现在有两个事务:和并发执行 。
? 1) 脏读 当前事务读到了其他事务更新,但是还没有提交的值,就属于脏读
? 将某条记录的AGE值从20修改为30.
? 读取了更新后的值:30.
? 回滚,AGE值恢复到了20.
? 读取到的30就是一个无效得到值
? 2)不可重复读
? 读取了AGE值为20.
? 将AGE值修改为30.
? 再次读取AGE值为30,和第一次读取不一致
? 3)幻读
?读取了表中的一部分数据 。
?向表中插入了新的行 。
Transation01读取了student表,多出了一些行数据
隔离级别
? 数据库系统必须具有隔离并发运行各个事务的能力,使得他们不会相互影响 。避免各种并发问题 。**一个事务与其他事务隔离的程度称为隔离级别 。**SQL标准中规定了多种事务隔离级别,不同的隔离级别对应不同的干扰程度,隔离级别越高,数据一致性就越好,但并发性越弱 。
? 1)读未提交:READ
? 允许 读取未提交的修改 。
? **2)读已提交:READ**=============》》》》开发过程中常用 。
? 要求 只能读取 已提交的修改 。
? **3)可重复读: READ **
? 确保 可以多次从一个字段中读取到相同的值,即 执行期间禁止其他事务对这个字段进行更新 。
? **4)串行化: **
? 确保 可以多次的从一个表中读取到相同的行,在 执行期间,禁止其他事务对这个表进行添加、更新、删除操作 。可以避免任何并发问题,但是性能十分低下 。
各个隔离界别解决并发问题的能力见下表
脏读不可重复读幻读
READ



READ



READ






各类数据库产品对事务隔离级别的支持程度 yes是可支持,no是直接不支持的
READ
no
yes
READ
yes(默认)
yes
READ
no
yes(默认)
yes
yes
mysql的默认隔离级别是可重复读,就是在一个方法中你从数据库里面查一个东西,第一次查是50块钱,即时数据库里面的值对应的字段改成了300,你这个方法没有停止,你再从代码里面走sql语句,还是50块钱 。
10. Mvc 中,如何解决请求POST中文乱码问题,GET的又如何处理呢?
针对于SSM的项目,post请求乱码问题 以下方案只能解决post请求
在web.xml里面配置一下过滤器即可------------------------------------------------------------------------------------------------------------------------------SetCharacterEncodingorg.springframework.web.filter.CharacterEncodingFilterencodingUTF-8forceEncodingtrueSetCharacterEncoding/*