• 谈事务的理解


    事务和锁是两个联系非常紧密的概念,它们保证了数据库的一致性。由于数据库是一个可以由多个用户共享的资源,因此当多个用户并发地存取数据时,就要保证数据的准确性,事务和锁就完成了这项功能。

    概念

    事务就是一组包含一条或多条语句的逻辑单元,每个事务都是一个原子单位,在事务中的语句被作为一个整体,要么一起被提交,作用在数据库上,使数据库数据永久的修改,要么一起被撤销,对数据库不做任何的修改

    对于这个问题比较经典的例子就是银行帐户之间的汇款转账操作.该操作在数据库中由以下3步完成:

    1:源帐户减少存储金额,例如 减少1000

    2:目标帐户增加存储金额,增加1000

    3:在事务日志中记录该事务.

    整个交易过程,我们看做一个事务,如果操作失败,那么该事务就会回滚,所有该事务中的操作将撤销,目标帐户和源帐户上的资金都不会出现变化;如果操作成功,那么将是对数据库永久的修改,即使以后服务器断电,也不会对该修改结果有影响.

    事务在没有提交之前可以回滚,而且在提交前当前用户可以查看已经修改的数据,但其他用户查看不到该数据,一旦事务提交就不能再撤销修改了,oracle的事务基本控制语句有如下几个:

    set transaction  :设置事务的属性。

    commit:提交事务。

    事务的四个特性:

    1原子性 事务的原子性是指,事务中程序是数据库的逻辑工作单位,它对数据的修改要么全部执行,要么完全 不执行。原子也意味着不可侵害,不管有多少程序,只要在同一个事务中,那么它们就是一个整体,如果都执行成功才意味着该事务成功,而有一个操作失败,那么同一个事务中的其他操作即使执行成功也没有用,事务会使其全部撤销。

    2一致性:

    事务的一致性指事务执行的前后数据库都必须处于一致性状态,它是相对脏读而言的。只有在事务完成后才能被所有使用者看见,保证了数据的完整性。例如在银行转账时,从A帐户取款但没有放到B帐户中时数据是不一致的,同时也是不完整的,其他使用者此时不能看到A中修改后的数据,只有存到B帐户中,交易完成并提交事务,这时才算数据一致,所有用户也会看到修改后的数据。

    3 分离性:分离性是指并发事务之间不能相互的干扰。也就是说,一个事务操作的数据不会被其他事务看到和操作。

    4 持久性:持久性是指一旦事务提交完成,那么这将是对数据永久的修改,即使被修改后的数据遭到破坏,也不会出现回到修改之前的情况。

  • 相关阅读:
    防止论坛用户重复登录的方法 .
    配置Windows服务器支持json文件的方法
    在线修改ServU密码注意问题。
    a href=#与 a href=javascript:void(0) 的区别,以及location.href含义
    使用sql命令连接字符串类型和整型类型的数据
    数据库SQL Server 2005 的级联设置 外键赋值
    使用VS发布网站后遇到的Fill为Null的奇怪错误。
    使用Visual Studio 2005 IDE的宏,自动为c#变量生成属性
    推荐Zen Garden
    使用 aspnet_regsql.exe 向 SQL Express 数据库中注册脚本
  • 原文地址:https://www.cnblogs.com/shuanlei/p/4546971.html
Copyright © 2020-2023  润新知