MySql 事务介绍

事务是由一组SQL 语句组成的逻辑处理单元。

事务的四个属性:
    原子性(Atomicity):是指事务是一个不可再分割的工作单位,对事务中的数据的操作要么都完成要么都不完成。
    一致性(Consistent):在事务开始和完成时,数据都必须保持一致性。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性:在事务结束时,所有的内部的数据结构也都必须是正确的。
    隔离性(Isolation):是指多个用户并发访问数据库时,一个事务的执行不会被其他事务所干扰。这意味着事务处理过程中的中间状态是对外部不可见的。
    持久性(Durable):是指一个事务一旦被提交,它对数据库的改变是永久的,即使数据库发生故障时也不会对数据产生影响。

当MySQl 处理并发事务时可能会出现的问题:
    更新丢失:多个线程基于同一个查询结果,后序操作覆盖了前面的操作
     脏读:一个事务读取到另一个事务未提交的数据
     不可重复读:在一个事务内读取同一个数据,多次读取到的数据结果不同
     虚读(幻读):指一个事务内读取到了别的事务插入的数据,倒导致前后结果不一致

事务的四大隔离级别:

type 介绍
Read uncommitted 不防止任何隔离性问题,具有上述所有问题
Read committed 只能防止脏读问题
Repeatable read 可以防止脏读和不可重复读
Serializable 可以防止脏读,不可重复读和幻读/td>


    随着数据库的隔离级别越严格,并发带来的问题也就越小,但是付出的代价也就越大,因为事务隔离实质上是使事务在一定程度上“串行化”进行,这显然是并发相冲突的。同时,不同的应用对读一致性和事务隔离程度的要求也是不同的。MySql:默认的隔离级别是Repeatable,Oracle:默认的隔离级别是Read commited。我们可以使用SHOW VARIABLES LIKE ‘TX_ISOLATION’; 查看数据库的隔离级别。

你可能感兴趣的:(MySql,mysql,事务)