【数据库学习】MySQL之事务隔离级别

   

  上篇博客写了关于事务的几点特性,不知道你还记不记得,本篇博客讲带领大家简单了解事务的隔离级别,以及存储引擎。本次主要内容如下~~~

                                     

   【数据库学习】MySQL之事务隔离级别_第1张图片

 

隔离级别

       

         隔离级别用于决定如何控制并发用户读写数据的操作。

         隔离级别分为了4个等级。分别是 未提交读,提交读,可重复读,可串行化

 

       

          一、未提交读——Read Uncommitted:可以看成是两部分。“未提交”指事务A,“读”指事务B,意思就是事务A未提交数据,事务B就可以读到数据了。未提交读容易出现脏读、不可重复读、以及幻读现象。

 

         那么,这些脏读,不可重复读,幻读都是什么意思呢?下面做简单介绍~

         脏读:就是当一个事务读取另一个事务尚未提交的修改时发生的现象。

         不可重复读:同一查询在同一事务多次进行,由于其他提交事务所做的修改或者删除操作,导致每次返回不同的结果集。

         幻读:用户读取到某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影”行。

 

         二、提交读 ——Read Committed:也看成两部分。“提交”指事务A,“读”指事务B,意思就是事务A提交了数据,事务B可以读。一个事务只能看见自己已经提交事务所做的改变。提交读容易出现幻读现象和不可重复读。

 

         三、可重复读——Repeatable Read:它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。易出现幻读。

 

         四、可串行化——Serializable:最高的隔离级别,通过强制事务排序使之不可能相互冲突,可以解决幻读的问题。但是,易出现阻塞和死锁。那么什么又是阻塞和死锁呢?现在不太了解没关系,不懂就查多积累,下面简单科普下~

 

          阻塞:当多个事务都需要对某一资源进行锁定时,默认情况下就会发生阻塞。被阻塞的请求会一直等待,知道原来的事务释放相关的锁。锁定超时期限可以限制,这样基于可以限制被阻塞的请求在超时之前要等待的时间。

         死锁:是指一种进程之间互相永久阻塞的状态,可能涉及两个或更多的进程。

 

         就以上的隔离级别和他们容易出现的现象,我们可以整理成一个表格更加清晰直观~                                         

                                            【数据库学习】MySQL之事务隔离级别_第2张图片

 

         PS:更多有关隔离级别的内容,推荐两篇博客   MySQL事务隔离级别详解 30分钟全面解析-SQL事务+隔离级别+阻塞+死锁

 

存储引擎

 

         MySQL可以将数据以不同的技术存储在文件(内存)中,这种技术就成为存储引擎。

         师姐为我们简单介绍了两种比较常用的存储引擎:MyISAM InnoDB

         MyISAM :特点是速度快,占用内存小。支持全文索引,不支持事务,也不支持外键,为表级锁定(一次查一张表),并发量小。

 

         InnoDB :健壮的事务型存储引擎。当然首先支持事务,有索引限制。为行级锁(多个查询,同时访问),并发量大。

         关于存储引擎的内容,师姐只简单开了一个头,还需要我们继续了解和学习。

 

小结

 

         今天就写到这里,希望本篇博客内容:事务的隔离级别,存储引擎的知识可以给你带来收获,下次见~~


你可能感兴趣的:(❀,基础知识,——【数据库学习】,——【MySQL学习】)