学习数据库四大特性及事务隔离级别

学习数据库四大特性及事务隔离级别

一丶事务ACID四大特性

   A(原子性Atomicity) :

    事务是数据库的逻辑工作单位,事务里所有的操作要么全做,要么不做.

  C(一致性Consistency):

    事务执行的结果必须使数据库从一个一致性状态变到另一个一致性状态.

  I(隔离性Isolation):

    事务的执行不能被其他事务干扰.

  D(永久性Durability):

     事务一旦提交,它对数据库中数据的改变就应该永久的.

 

二丶事务的隔离性

  MySql存在4种隔离级别.

   1.读未提交 Read Uncommitted 

  从一个事务中可以读取到另一个未提交的事务中的数据, 一旦事务回滚, 刚刚读取到的数据将不复存在, 这就是所谓的脏读.

 

  2. 读已提交 Read Committed

  为解决脏读的问题,可以设置读已提交的事务隔离级别.只有事务提交之后的数据,才可以被读取到. 

  这时有可能出现一个叫"不可重复读"的问题. 什么意思? 你开启一个事务A, 读取一个数据, 这期间事务并未提交. 与此同时, 另一人开启事务B, 将这个数据修改,并提交事务B. 这时, 你再次在事务A中读取该数据时, 发现数据变了.  你什么也没有做, 在同一个事务中, 这数据就变了. 这就是所谓的不可重复读.    

 

  3. 可重复读 Repeatable Read 

  为解决不可重复读问题,可以将数据库中的隔离级别设置成"可重复读".这也是MySql默认的事务隔离级别.

  在这种隔离级别的情况下, 还会出现"幻读"的问题. 你开启事务A, 读取一张表的所有数据, 期间事务并未提交.

  与此同时,另一人开启事务B,往这张表中插入一条数据,并提交事务B.c此时,n你再次读取这张表的所有数据时,h会发现多了一条数据,会以为出现了"幻觉",看错了. 

 

  4. 串行化 Serializable

    串行化是MySql最高的事务隔离级别.所有事务串行化执行,可以避免幻读,但效率低.

 

学习资料:.

  数据库四大特性以及事务隔离级别

 

 

  

posted @ 2019-09-09 22:08  timfruit  阅读(200)  评论(0编辑  收藏  举报