
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
数据库事务的学习与应用是许多软件编程开发程序员都需要熟练掌握的一个编程知识点,而本文我们就简单来了解一下,事务弱隔离级别概念与应用分析。
1、为什么要有弱隔离级别
如果两个事务操作的是不同的数据, 即不存在数据依赖关系, 则它们可以安全地并行执行。但是当出现某个事务修改数据而另一个事务同时要读取该数据, 或者两个事务同时修改相同数据时, 就会出现并发问题。
在应用程序的开发中,我们通常会利用锁进行并发控制,确保临界区的资源不会出现多个线程同时进行读写的情况,这其实就对应了事务的最高隔离级别:可串行化。可串行化隔离意味着数据库保证事务的最终执行结果与串行 (即一次一个, 没有任何并发) 执行结果相同。
那么为什么应用程序中可以提供可串行化的隔离级别,而数据库却不能呢?其实根本原因就是应用程序对临界区大多是内存操作,而数据库要保证持久性(Durability),需要把临界区的数据持久化到磁盘,可是磁盘操作比内存操作要慢好几个数量级,一次随机访问内存、 固态硬盘 和 机械硬盘,对应的操作时间分别为几十纳秒、几十微秒和几十毫秒,这会导致持有锁的时间变长,对临界区资源的竞争将会变得异常激烈,数据库的性能则会大大降低。
所以,数据库的研究者就对事务定义了隔离级别这个概念,也就是在高性能与正确性之间做一个权衡,相当于明确地告诉使用者,我们提供了正确性差一点但是性能好一点的模式,以及正确性好一点但是性能差一点的模式,使用者可以根据自己的业务场景来选择一个合适的隔离级别。
2、弱隔离级别带来的风险
弱隔离级别就是非串行化隔离级别。
较弱的隔离级别, 它可以防止某些并发问题,但并非全部的并发问题。
使用这些弱隔离级别,事务并发执行时,可能会出现异常情况,带来一些难以捉摸的隐患,因此,我们需要了解弱隔离级别存在的并发问题以及如何防范存在的并发问题。 然后, 我们就可以使用所掌握的工具和方法来构建正确、 可靠的应用。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。