当前位置: 首页> 教育> 大学 > 企业管理公司_福州三六零网络小额贷款有限公司_宁波最好的推广平台_江门关键词优化公司

企业管理公司_福州三六零网络小额贷款有限公司_宁波最好的推广平台_江门关键词优化公司

时间:2025/7/10 3:27:37来源:https://blog.csdn.net/CNDS7869/article/details/143806944 浏览次数:0次
企业管理公司_福州三六零网络小额贷款有限公司_宁波最好的推广平台_江门关键词优化公司
  1. 事务:

    • 事务主要用来处理操作量大、复杂度高、且关联性强的数据。

    • 譬如人员管理系统,当删除一个人员时,既要删除人员的基本资料,也要删除和改人员相关的信息,如邮箱、文章等,这些数据库操作语句就构成一个事务。

    • 事务处理可以保证数据库的完整性和一致性,成批的sql语句要么全部执行,要么全都不执行,主要针对inssert,update,delete语句而设置。

    • mysql中只有innoDB支持事务。

  2. 事务操作

    2.1、开启事务:start transcation

    • 任何一条DML语句如insert、update、delete的执行就标志着事务的开启
    • 命令:begin或start transcation

    2.2、提交事务:commit transcation

    • 成功的结束,将所有的DML语句操作历史记录和底层硬盘数据进行一次同步
    • 命令:commit

    2.3、回滚事务:rollback transcation

    • 失败的结束,将所有的DML语句操作历史记录全部清空
    • 命令:rollback

    2.4、事务的自动提交

    • 之前的所有sql操作中也有事务,只是mysql自动完成了,每执行一条sql时mysql就自动提交事务

    • 如果需要手动控制事务,需要关闭事务的自动提交

      set autocommit = 0 --禁止自动提交
      set autocommit = 1 --开启自动提交
      

    2.5、示例

    create database if not exists demo_transcation;
    use demo_transcation;
    create table account(car_id int primary key,name varchar(8),money double
    )charset = utf8;insert into account values(1005,'马云','10000'),(1009,'强东',10000);--car_id为1的账号给2的账号转账
    set autocommit = 0;  --关闭自动提交
    select @@autocommit; --查看自动提交状态begin; --开启事务
    update account set money = money - 200 where car_id = 1005;
    update account set money = money + 200 where car_id = 1009;
    commit;  --提交事务
    rollback; --如果执行失败时回滚事务
    
  3. 事务(transaction)的四大特性(ACID):

    3.1 原子性(Atomicity)

    • 事务中的所有操作要么全部完成,要么全都不完成,不会结束在中间任何环节中。
    • 事务在执行过程中发生错误,会被回滚(rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

    3.2 一致性(Consistency)

    • 在事务开始之前和事务结束以后,数据库的完整性没有被破坏;即数据库从一个一致性状态转换到另一个一致性状态。

    3.3 隔离性(iaolation)

    • 并发事务之间相互影响的程度。一个事务所做的修改在最终提交以前,对其他的事务是不可见的,譬如一个事务会不会读取到另一个未提交的事务修改的数据。

    • 事务的隔离级别:

      – read uncommitted读未提交:最低级别,事务A修改了一个数据但未提交,事务B读到了事务A未提交的更新结果,如事务A提交失败,那B读到的就是脏数据。

      – read committed读提交:一个事务要等待另一个事务提交后才能读取数据,可以避免脏读,会造成不可重复读(A事务在提交事务期间读到B事务的数据时不同的)。

      – repeateable read可重复读:在开始读取数据时(事务开启时),不再允许修改操作,可避免脏读、不可重复读,但会幻读(A事务在提交前和提交后读到的数据不一致)。

      – serializable序列化:是最高的事务隔离级别,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但效率低,比较消耗数据库性能,一般不使用。

      – mysql的默认隔离级别为repeateable read

      事务隔离级别脏读不可重复读幻读
      读未提交read uncommittedyesyesyes
      不可重复读read committednoyesyes
      可重复读repeateable readnonoyes
      串行化serializablenonono
    • 事务隔离级别的操作

      --查看事务隔离级别
      show variables like '%isolation%';--设置隔离级别
      set session transcation isolation level 级别字符串set session transcation isolation level read uncommitted; --设置为读未提交
      set session transcation isolation level read committed;   --设置为读提交
      set session transcation isolation level repeateable read; --设置为可重复读
      set session transcation isolation level serializable;     --设置为串行化
      

    3.4、持久性(durability)

    • 一旦事务提交(Commit),则其所做的修改将永久保存在数据库中。即使系统发生故障,事务的结果也不会丢失。持久性通常依赖于数据库的日志系统,事务的修改操作会被记录在日志中,以便在系统恢复时能够重放这些操作
关键字:企业管理公司_福州三六零网络小额贷款有限公司_宁波最好的推广平台_江门关键词优化公司

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: