事务与事务隔离级别的含义
1 | 1.事务即数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元) |
脏读
1 | 指一个事物读取了另一个事物尚未提交的数据 |
*例如: *
1 | 小明的银行卡中有1000元,由于不够交学费,小明同家里联系让家人汇500元到小明的银行卡中.小明的爸爸就在手机上的转账到银行卡给小明汇了500元,并告诉小明钱已经汇过去了,当小明进入查看余额页面时,银行卡中的余额显示有1500元,但是汇款系统操作失败了,自动回滚了事务,系统将小明的爸爸给小明汇到银行卡的500元退回了小明爸爸的账户中,而此时小明又再次查看银行卡中的余额时,余额又变回了1000元,所以小明就跟他爸爸说刚汇过来的钱没了 |
不可重复读
1 | 一个事务的操作导致另一个事务前后两次读取的数据不同 |
*例如: *
1 | 小王的实习工资是1800元,财务在发放小明工资的时候,将小明的工资改成了2800元,但没有结束这个事务,此时小王查看了自己的工资,发现工资不是说好的2500元,反而多了300元,很高兴,而财务刚好发现了自己输入的金额错误了,赶紧回滚了事务,小王的工资又变回了1800元,此时小王查看到的银行卡余额又变成了1800元,而另一个事务中财务再次修改了小王的工资,并提交了事务,当小王再次查看时,工资又变成了2500元 |
幻读
1 | 一个事务的操作会导致另一个事物前后读取的结果不同 |
*例如: *
1 | 财务在查看实习员工的员工信息时,系统显示出10个员工的员工信息,此时人力资源的工作人员将一名新员工的个人信息录入到了系统中,财务再次查看实习员工的员工信息时,系统显示出了11个员工的员工信息 |
事务的隔离级别
1 | 1.读取未提交: TRANSACTION_READ_UNCOMMITTED, 允许脏读,不可重复读和幻读 |
事务隔离级别过高的危害
1 | 例如设置可串化,禁止脏读,不可重复读和幻读.当一个事务在操作时,会导致其他事物等待,但保持连接,如果该事务持续时间很长,而这段时间又加入了很多事务,会导致连接数过高,并且数据库服务器有连接数上限,当连接数到达上限后其他的连接就无法建立,这样会导致前台的业务操作无法继续 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 123!