成都网站建设设计

将想法与焦点和您一起共享

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

最近很火的话题,为什么学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)

          本帖子会后续持续更新

      


当前名称:闲聊编程与Oracle一致性和“保镖”事务
标题网址:http://chengdu.cdxwcx.cn/article/pighce.html