
写在前面:小编的话

大家好,在今天的课程中,我们将介绍表数据的更新以及数据库中事务的概念。两者都非常重要,因为会影响到数据库的并行度和数据的一致性。延伸出来的话题包括死锁、悲观锁和更新丢失(Lost Update)。所以这节课非常基础和重要,并不仅仅是介绍语句和语法那么简单。
在正式上课之前,我们还是要强调一下如何学习这些课程。我们做的最主要的工作是将Dev Gym上的视频翻译为中文。实际上每一节课包括4部分:
1)看我们翻译的视频,每一集只有几分钟。
2)上Live SQL做配套练习
3)小测验(选择题)
4)进一步学习(参考资料)
由于原网站有完整的评分积分,实操练习和问题讲解体系,因此我们希望您在看完视频后,仍回到Dev Gym(https://devgym.oracle.com/)网站完成练习和测验,而且最终可以得到结业证书。点击文末“原文链接”可访问原课程页面。
以下为开发者初级课的课程设置:
第2课: Columns and Data Types (列和数据类型)
第4课: Select and Where (SELECT和WHERE语句)
第6课: Aggregates and Group By (聚合与GROUP BY)
第7课: Insert and Commit (插入和提交)
第8课: Update and Transactions (更新和事务)<- 我们在这里
第9课: Delete and Truncate(删除和清空)
子曰:“吾尝终日不食,终夜不寝,以思,无益,不如学也。”,意思是说:“我曾经整天不吃饭、彻夜不睡觉的去思考,没有益处,还不如去学习”。所以,不要胡思乱想,马上开始学习我们的视频,每集也就7,8分钟。
好了,下面正式开始上课。
Oracle开发者初级第8课:更新与事务

写在后面:小编的话

事务是数据库最最重要的特征了,其核心的特性就是ACID,即原子性,一致性,隔离性和持久性。作者用转账的经典例子来说明了原子性和一致性。
多个用户访问数据库中的多个子资源时可能导致死锁,此时的最佳建议是大家均采用相同的顺序来访问资源。另一个可能导致的问题就是更新丢失(Lost Update),解决方法有两种:即悲观锁和乐观锁。悲观锁即强制锁,可以使用事务或使用SELECT FOR UPDATE锁定记录;乐观锁是松散的锁定,即通过在读取和更新时附加版本号,来确认读取的数据是否后续被其它人改动过,从而避免更新丢失。为增加并发度,事务是越小越好。如果你的事务确实很小,那么使用乐观锁就是适合的。如果时间跨度很长,可以考虑使用乐观锁,此时系统的并发度受影响最小。
最后一个需要注意的地方就是,和DELETE一样,在UPDATE时记得加WHERE条件。好了,以上就是今天视频中最重要的概念。
今天这一集是整个开发者初级系列的倒数第二集了,谢谢一直坚持学习的你们。论语雍也篇中有一段话,冉求曰:“非不说子之道,力不足也。”子曰:“力不足者,中道而废,今女画。”。冉求说:“并不是不喜欢老师教的学说,是自己的能力不够呀!”。孔子说:“能力不够的人,是中途力气耗尽而停住,而现在的你是自己划定界限,停止不肯前进啊!”。所以呢,相信自己的能力,不要给自己设限,勇于尝试,终有所得。
编辑,字幕翻译:萧宇
字幕制作:Barbara Huang





