For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
数据库架构开发是大多数后端编程开发程序员都需要熟练掌握的一些编程开发技术,而本文我们就通过案例分析来简单了解一下,数据库事务隔离级别类型分享。
为了解决多个事务并发会引发的问题,进行并发控制。数据库系统提供了四种事务隔离级别供用户选择。
ReadUncommitted读未提交:不允许一类更新丢失。允许脏读,不隔离事务。
ReadCommitted读已提交:不允许脏读,允许不可重复读。
RepeatableRead可重复读:不允许不可重复读。但可能出现幻读。
Serializable串行化:所有的增删改查串行执行。
读未提交
事务读不阻塞其他事务读和写,事务写阻塞其他事务写但不阻塞读。可以通过写操作加“持续-X锁”实现。
脏读(Dirtyread):当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是“脏数据”,依据“脏数据”所做的操作可能是不正确的。
读已提交
事务读不会阻塞其他事务读和写,事务写会阻塞其他事务读和写。可以通过写操作加“持续-X”锁,读操作加“临时-S锁”实现。
不可重复读(Unrepeatableread):指在一个事务内多次读同一数据。在这个事务还没有结束时,另一个事务也访问该数据。那么,在一个事务中的两次读数据之间,由于二个事务的修改导致一个事务两次读取的数据可能不太一样。这就发生了在一个事务内两次读到的数据是不一样的情况,因此称为不可重复读。
更新丢失:多个用户同时对一个数据资源进行更新,必定会产生被覆盖的数据,造成数据读写异常。
可重复读
事务读会阻塞其他事务事务写但不阻塞读,事务写会阻塞其他事务读和写。可以通过写操作加“持续-X”锁,读操作加“持续-S锁”实现。
.幻读(Phantomread):幻读与不可重复读类似。它发生在一个事务(T1)读取了几行数据,接着另一个并发事务(T2)插入了一些数据时。在随后的查询中,一个事务(T1)就会发现多了一些原本不存在的记录,就好像发生了幻觉一样,所以称为幻读。
串行化
“行级锁”做不到,需使用“表级锁”。
可串行化
如果一个并行调度的结果等价于某一个串行调度的结果,那么这个并行调度是可串行化的。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。