事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
一个数据库事务通常包含了一个序列的对数据库的读/写操作。它的存在包含有以下两个目的:
当事务被提交给了dbms(数据库管理系统),则dbms需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库中,如果事务中有的操作没有成功完成,则事务中的所有操作都需要被回滚,回到事务执行前的状态;同时,该事务对数据库或者其他事务的执行无影响,所有的事务都好像在独立的运行。
如果事务之间不是互相隔离的,可能将会出现以下问题:
脏读:事务a读取了事务b更新的数据,然后b回滚操作,那么a读取到的数据是脏数据
不可重复读:事务a多次读取同一数据,事务b在事务a多次读取的过程中,对数据作了更新并提交,导致事务a多次读取同一数据时,结果不一致。
幻读:系统管理员a将数据库中所有学生的成绩从具体分数改为abcde等级,但是系统管理员b就在这个时候插入了一条具体分数的记录,当系统管理员a改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。
sql标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。
事务隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
读未提交(read-uncommitted) | 是 | 是 | 是 |
读已提交(read-committed) | 否 | 是 | 是 |
可重复读(repeatable-read) | 否 | 否 | 是 |
串行化(serializable) | 否 | 否 | 否 |
mysql默认的事务隔离级别为repeatable-read。
1.redis cluster搭建高可用redis服务器集群
2.为什么单线程的redis这么快?
3.spring boot集成spring session实现session共享
4.spring boot入门-快速搭建web项目
5.spring boot2.0整合redis
6.一篇文章搞定springmvc参数绑定
限时领取免费java相关资料,涵盖了java、redis、mongodb、mysql、zookeeper、spring cloud、dubbo/kafka、hadoop、hbase、flink等高并发分布式、大数据、机器学习等技术。
资料传送门:https://mp.weixin.qq.com/s/u2b_nvnumuape0w4lc45fw
关注下方公众号即可免费领取:
如对本文有疑问, 点击进行留言回复!!
(已解决)宝塔面板SSL失败|无法启动,提示 nginx: configuration file /www/server/nginx/conf/nginx.conf test failed
JAVAWEB第六天——JQuery速成(2)【表单校验优化,美观可视化升级,Validation插件,省市二级联动升级】
Flutter Navigator路由,返回,替换路由及返回指定页面
springboot插入时间出现 at [Source: (PushbackInputStream); line: 9, column: 12]的问题。
网友评论