课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
数据库技术是程序员在学习软件开发的时候需要重点掌握的一个编程技术,下面我们就通过案例分析来了解一下,程序员学习数据库开发需要掌握哪些知识点。
在ACID这几个属性中,一致性和隔离级别的实现方式是多的,因为权衡范围大。为了保持数据一致性,数据库需要进行协调,争用资源的情况会增加。当需要在多个数据中心之间进行水平伸缩时(特别是在不同的地理区域之间),就变得非常困难。随着可用性的降低和网络分区的频繁出现,提供高水平的一致性是非常困难的。关于这一问题的深入解释,请参见CAP定理。不过需要注意的是,应用程序可以在数据一致性方面做一些处理,或者程序员可能对这个问题有足够的了解,可以在应用程序中添加额外的逻辑来处理,而不是严重依赖数据库。
数据库通常会提供各种隔离级别,应用程序开发人员可以根据权衡选择经济有效的隔离级别。较弱的隔离级别可能速度更快,但可能会引入数据竞态问题。更强的隔离级别消除了一些潜在的数据竞态问题,但速度较慢,并且可能会引入资源争用,使数据库慢到宕机。
现有并发模型及其之间关系的概览
SQL标准只定义了4个隔离级别,尽管在理论方面和实际当中都还有更多可用的级别。如果你想进一步了解,jepson.io提供了更多对现有并发模型的介绍。谷歌的Spanner保证了时钟同步的外部串行性,即使这是一个更严格的隔离级别,但它在标准隔离级别中并没有定义。
SQL标准中提到的隔离级别是:
串行化(严格、成本高):串行化执行的效果与事务的串行执行是一样的。串行执行是指每个事务在下一个事务开始之前执行完成。需要注意的是,由于在解释上的差异,串行化通常被实现成“快照隔离”(例如Oracle),但在SQL标准中并没有“快照隔离”。
可重复读:当前事务中未提交的读取对当前事务可见,但其他事务所做的更改(如新插入的行)不可见。
读已提交:未提交的读取对事务不可见。只有提交的写是可见的,但可能会发生幻读取。如果另一个事务插入和提交新行,当前事务在查询时可以看到它们。
读未提交(不严格、成本低):允许脏读,事务可以看到其他事务未提交的更改。实际上,这个级别对于返回近似聚合很有用,比如COUNT(*)查询。
串行化级别将发生数据竞争的机会降到低,尽管它的开销大,并给系统带来了多的争用。其他隔离级别开销较小,但增加了数据竞争的可能性。有些数据库允许设置隔离级别,有些数据库不一定支持所有的隔离级别。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。