1、mysql的事务(mysql事务的概念)

  本篇文章为你整理了1、mysql的事务(mysql事务的概念)的详细内容,包含有mysql事务用法 mysql事务的概念 mysql事务类型有哪些 mysql事务实现原理 1、mysql的事务,希望能帮助你了解 1、mysql的事务。

  事务并发问题

  单个线程在跑的时候,只要开启事务关闭事务中间,进行的操作,可以保证事务正确性,但如果是多线程并发情况下,肯定是不行的。

  第一个事务开启后准备查数据,第二个事务开启后然后修改了数据,第一个事务读到了第二个事务修改过的数据,但是第二个事务修改了数据后,没有提交事务,回滚了。导致第一个事务读到的数据是错的。
 

  不可重复读

  第一个事务的线程正在读取一行数据,第二个事务的线程把这行数据给修改了,并且立马提交了事务,结果第一个事务读取的这行数据不是想要的期望的数据。
 

  当第一个事务的线程正在读取一些数据,第二个事务的线程新增或删除了数据,第一个事务线程读取到数据后,第二个事务又提交了,这时第一个事务读到的数据就会有一些缺失的或者不存在的数据,好像发生了幻觉一样。
 

  不可重复读和幻读的区别

  不可重复读重点是修改了数据,幻读的重点是新增或删除了一些数据。
 

  所以解决不可重复读只需要锁住一行数据就行了,幻读需要把整个表锁住。

  事务特性ACID

  最小颗粒,不可再拆分,一个事务中所有操作看成一个原子的操作,不可再拆分。一个事务中的所有操作要么都成功,要么都失败。

  事务所执行的结果必须是数据库从一个一致性状态变成另一个一致性状态,数据库只包含事务提交成功的数据。

  多个事务执行时候互不干扰,多个事务互相之间都是隔离的,并发执行的事务之间不能看到其他事务的中间状态,不能相互影响。

  事务一旦提交,对数据做任何改变,都要记录到永久存储器中,保存在物理数据库。即使数据出现故障,提交的数据也能恢复。
 

  但是外部原因导致数据库故障,比如硬盘损坏,那之前提交的数据有可能丢失。

  事务隔离级别

  事务的隔离级别有如下几个:
 

  
 

  mysql默认的隔离级别是REPEATABLE-READ

  设置事务的隔离级别:

  

-- 查看默认隔离级别

 

  select @@transaction_isolation;

  -- 设置事务隔离级别 设置当前会话的隔离级别

  set session transaction isolation level read uncommitted;

  set session transaction isolation level read committed;

  set session transaction isolation level repeatable read;

  set session transaction isolation level serializable;

  

 

  以上就是1、mysql的事务(mysql事务的概念)的详细内容,想要了解更多 1、mysql的事务的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: