MySQL数据库事务的机制是什么
发布时间:2023-05-06 12:56:46 所属栏目:MySql教程 来源:
导读:MySQL数据库事务的机制是什么?这几天很面试者都被问到了数据库事务机制、隔离级别、乐观锁悲观锁类的问题,之前对这些只能说有所了解,但并不是特别深刻,今天小编就给大家总结了一下有关的概念。
一、什么是事务
一、什么是事务
MySQL数据库事务的机制是什么?这几天很面试者都被问到了数据库事务机制、隔离级别、乐观锁悲观锁类的问题,之前对这些只能说有所了解,但并不是特别深刻,今天小编就给大家总结了一下有关的概念。 一、什么是事务? 事务我理解的是一个完整的业务行为,一个业务行为可能包含多个动作,这个完整的动作就构成一个事务。比较经典的例子是银行转账,A账户转到B账户,需要两个动作:A账户减,B账户加,必须保证这两个动作要么都做,要么都不做。 事务具有ACID特征,具体包括: ● 原子性(atomicity):原子性是说事务的不可分割,要么全成功,要么全失败,不可部分成功,部分失败。半途失败的情况下,需要打扫战场,也就是数据回滚。 ● 一致性(consistency):一致性是说事务的最后结果,要保证数据上没有异常。一致性是强调结果,是建立在原子性上实现的,也就是说能保证原子性,那就会有一致性的结果。 ● 隔离性(isolation):隔离性是说事务没有提交前对其他事务是不可见的,事务间数据是隔离的(当然不同级别隔离程度不一样)。 ● 持久性(durability): 事务提交后会持久化,可以长久保存。 二、事务隔离级别 了解事务的隔离级别之前,需要明白数据读取的几个概念: ● 脏读:就是读到了别人还没提交的数据。 ● 可重复读:就是同一个事物内的两次查询,中间如果别人修改了查询内的记录且提交了,对第二次查询是不可见的,不会出现同条记录两次查询不一致问题。 ● 幻读:就是一个事物内的两次查询,中间如果别人增加了记录并且提交了,第二次查询能查询到的,会出现和第一次记录不一致的现象。 事务的控制分很多个级别,级别的高低决定隔离的程度,MysqL中分四个级别: ● 读未提交:这种级别是最低的,A事务的修改没有提交对B事物是可见的,会出现数据的脏读,一般情况下不会用到此种类型。 ● 读已提交:A事物的修改提交后才对B可见,这种情况会出现数据的幻读的问题,两次查询的结果不一样。 ● 可重复读:是MysqL默认的级别,这种级别事物内的两次查询,中间其他修改了某条记录,对其他事务是不可见的,保证了重复查的情况下同条记录的一致性,但是对于新增的情况其他事务是可见的,所以还是会出现新增幻读的现象。 ● 可串行化:事务之间是串行执行的,对查询到的每条记录都加锁,会出现阻塞的情况,并发情况下会造成严重的性能问题,所以一般也不会用到这种类型。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐