MySQL中的TCL(事务控制语句)、事物的特性是什么,隔离性的详细解释

TCL(transaction control language):事务控制语语句,事物的特性是什么,隔离性的详细解释

  • 概念
    事务:是作为一个单元的一组有序的数据库操作,如果组当中所有操作都成功,则事务执行成功,如果有一个操作执行失败,则事务执行失败,回滚操作。
  • 事务特性
  1. 原子性
    原子性:事务包含的所有操作全部成功,要么全部失败回滚;成功必须完全应用到数据库,失败则不能不能对数据库产生影响。
  2. 一致性
    一致性:事务执行前和执行后必须处于一致状态。
    例如:a账户给b账户转100,确保a账户减少100,并且b账户增加100
  3. 隔离性
    隔离性:当多用户并发访问数据库时候,数据库为每一个用户开启一个事务,这个事务不被其他事务操作干扰,多个并发事务直接互相隔离。一个用户对一个表进行修改如果没有提交,则另一个用户访问同一个表是不会改变的
  4. 持久性
    持久性:一旦事务被提交了,无法回滚,那么数据库当中的数据改变是永久性的,即便数据库系统发生故障,也不会丢失事务操作。
  • 事务隔离性
  1. 不考虑隔离性会导致的问题
    1. 脏读:在一个事务处理的过程当中读取另一个没有提交的事务当中的数据,然后使用了数据。
      A向B转账100元,A通知B查看账户,B发现已经到账,转账操作过程当中,事务发生问题,进行回滚,B再查账发现没有成功。
    2. 不可重复读
      在一个事务之内,多次读取一条数据,这个事务没有结束,另一个事务也访问这个数据,第二个事务访问数据要对数据进行修改,那么一个数据两次事务读到的结果可能不一样。
    3. 幻读:有两个事务,第一个操作所有的数据,第二个操作一条数据,第二个事务没有提交,第一个事务查看到的数据是之前的。
      银行A开启了一个事务窗口,查询当前系统中有没有"wangwu"用户,发现没有,银行B也开启了一个事务窗口,查询当前系统中也没有"wangwu"用户,银行A先创建"wangwu"用户并且提交,由于可重复读取,银行B在一次事务中必须保证查询的数据一致性,因此查询不到"wangwu",结果银行B窗口认为wangwu没有被注册想注册"wangwu"用户,就创建"wangwu"用户结果发现系统提示"wangwu"用户已经被注册",但是在本次事务中又查询不到"wangwu",就好像出现幻觉一样
  2. 隔离性的四个等级
    1. Read uncommited(读未提交),最低级别,任何情况都可以发生。
    2. Read commited(读已提交),可以避免脏读
    3. Repeatable read(可重复读),可以避免脏读,不可重复读的发生
    4. Serializable(串行化),可以避免脏读,不可重复读,幻读的发生
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值