Toggle navigation
VA伐木累
社区
VA伐木累
Proxy
JSON
BASE64
MyGit
登录
注册
×
登录
邮箱
密码
忘记密码?
事务隔离级别
•发布于
•作者
liuzy
•1077 次浏览
•最后一次编辑是
•来自
技术
ANSI/ISO SQL标准定义了4种事务隔离级别,这些隔离级别是根据事务并行出现的4个“现象”定义的。 4个现象是: 1.更新丢失(Lost Update):A和B同时写 例: 1.事务A将数值改为1并提交; 2.事务B将数值改为2并提交。 这时数据的值为2,事务A所做的更新将会丢失。 解决办法:对行加锁,只允许并发一个更新事务。 2.脏读(dirty read):A改后还未提交,B读,A又改并提交 例: 1.Mary的原工资为1000, 财务人员将Mary的工资改为了8000(但未提交事务) 2.Mary读取自己的工资 ,发现自己的工资变为了8000,欢天喜地! 3.而财务发现操作有误,回滚了事务,Mary的工资又变为了1000, 像这样,Mary记取的工资数8000是一个脏数据。 3.不可重复读(nonrepeatable read):A先读,B再改,A再读 例: 1.在事务A中,Mary 读取了自己的工资为1000,操作并没有完成 2.在事务B中,这时财务人员修改了Mary的工资为2000,并提交了事务. 3.在事务A中,Mary 再次读取自己的工资时,工资变为了2000 解决办法:如果只有在修改事务完全提交之后才可以读取数据,则可以避免该问题。 4.幻读(phantom read):A改后还未提交,B改其他的,A再查 例: 1.A把所有的“黑色”改为“白色” 2.B把所有的“红色”改为“黑色” 3.A再查询黑色,却发现还有一批。 根据对4个现象的避免程度,事务的4个隔离级别是: 1.Read Uncommited :读未提交数据(会出现脏读,不可重复读,幻读) 2.Read Commited :读已提交的数据(会出现不可重复读,幻读) 3.Repeatable Read :可重复读(会出现幻读) 4.Serializable :串行化 四个级别与四种现象的关系是:  大多数数据库的默认隔离级别为: Read Commited,如Sql Server , Oracle。 少数数据库默认的隔离级别为Repeatable Read, 如MySQL InnoDB存储引擎。
0 回复
作者
liuzy
积分: 841
“ 黑眼圈圈男 ”
无人回复话题
SonarQube 9.4 + PostgreSQL
shell倒计时
日常网络巧技
使用ssh创建socks5代理服务
NodeJS集群demo
作者其他话题
SonarQube 9.4 + PostgreSQL
shell倒计时
日常网络巧技
使用ssh创建socks5代理服务
NodeJS集群demo
回到顶部
友情链接:
JFinal
©2015 Powered by
jfinalbbs
沪ICP备15012258号