温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

闲聊编程与Oracle一致性和“保镖”事务

发布时间:2020-07-21 15:59:05 来源:网络 阅读:447 作者:长路慢 栏目:关系型数据库

最近很火的话题,为什么学Python?

    很多人说火啊!又能人工智能,又能大数据的,当然很火喜欢学习的人很多,高薪职位更容易带动潮流。这个观点首先我不反对,我大学只学习过两门shell与java,真正学习都是自学,目的不是开发,为了锻炼自己的编程思想而学习,为了以后学习编程少走一些弯路而学习。

    自己也是选择Python,为什么,实习后发展发展方向是数据库,后期可能DBA,也可能走数据分析等业务路线,这都不要紧重要的是要为以后结合工作把自己能力提升,个人竞争力提前打好路线,无论做DBA数据库服务器运维SHELL脚本和Pyhton与perl无疑最优选择,那么如果走数据分析等Python也可以发挥自己能用处,对于自己的职业发展规划有很大帮助,很实用的意义,为了几年后更好的用于工作,我感觉这才是一个不热衷于编程,不对编程狂热的技术人员出发点!不要以这两年火,发展前景,底薪高等为学习的基础点,这样空洞无规划学习,心态首先是不端正,其次你会随时代变化而落后!

    昨天浅谈了一下数据的的完整性,那么就是数据的精确性和可靠性,我们要保证实体完整,参照完整,域完整,用户自定义完整,这时候回过头看一看约束真是重要!

    一致性都是啥意思?

        咱们从实际出发,一致性字面意思听,都知道数据是一致的,在地点一查询银行卡余额是100元,换个地方查询却不失100元,这是我们不可接受的。那么数据在数据库中会时时刻刻伴随着数据读写操作,这就对数据库的状态要求特别高,也就是说数据库每次操作改变,都可以被接受,读取也都是正常的,就是数据库的一致性体现,有些时候不是数据库真实可靠状态,那么就认为不一致。

    “保镖”出场

        说起来Oracle这些完整性啊,一致性啊也都算是Oracle内置的"大老板",都配有保镖来保护,那么我们来说一说完整性的保镖事务管理。

         事务管理可不简单,保证数据库中数据一致性,在前面我们说到,当用提交和回滚操作都是一个事务的提交或者事务的回滚,我们的SQL语句是被事务语所包含。事务关键字是transaction来表示,而且有life cycle,事务开始,执行和结束,而事务的开始是隐式的,结束则用指令动作去完成。

      Oracle中控制事务常用的命令:

        1、commit

            英语字面翻译过来就是提交,这是作为事务结束的标志,使用这个命令的时候意味着什么,意味着本次事务的数据将会被存储到我们的磁盘里,改变数据库的状态可靠的可接受的状态,对于开发来说最安全有效的方式是显示数据提交,在提交前,其实数据库已经更新了但是没有得到数据库的认可,通过事务结束命令来认可操作,提交占用资源非常少,1条于1000条花费的提交数据库资源是一样的。

        2、rollback

            英语字面翻译过来回滚,我们在事务提交之前发出的撤销命名,这时候数据库更新没有得到认可,当事务结束rollback时候会回滚当前包含的数据,回到上一次的commit状态,这个过程会先读取回滚段信息,利用这些信息将数据库中已发生的修改重新恢复,如果用了delete命令删除数据,那么在rollback时候就会insert into数据,对于数据库来说每次rollback是很耗费资源的,适用于异常处理操作,所以应该在提交事务之前认真核对操作来代替回滚!

       3、savepoint 和 rollback savepoint

            在rollback的背景下,rollback回滚当前事务所有操作,那么我们通过命令savepoint在事务中建立标起点,只允许用户回滚之后的动作,rollback savepoint则是回滚标点以后的数据,两者是弥补rollback极端命令一种方式,事务回滚更灵活和可控性。

      事务的属性和隔离级别

          1、read only --将无法在事务内修改数据,而且这能在事务的开头使用,数据库状态将被冻结,数据库状态与事务开始状态一致

          2、read write --可读可写状态,数据库默认是此状态

          3、serializable --隔离级别,指定串行化事务,可以实现与只读功能相同,隔离其他数据库状态的影响,但是允许DML操作,不识别其他事务对数据库的修改,即使提交,但是不代表无视原表数据的修改,表数据其实已经修改,只是本事务不识别

          4、read commited --隔离级别的默认级别,只能读取其他事务已经提交修改的,对于未提交的数据,只有修改事务本身才可以进行读取。

      事务处理原则

          1、原子性(Atomicity)

          2、一致性(Consistency)

          3、隔离性(Lsolation)

          本帖子会后续持续更新

      

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI