51 SQL标准中对事务的4个隔离级别,都是如何规定的呢?
之前我们给大家讲了数据库中多个事务并发时可能产生的几种问题,包括了脏写、脏读、不可重复读、幻读,几种问题 那么针对这些多事务并发的问题,实际上SQL标准中就规定了事务的几种隔离级别,用来解决这些问题。 注意一下,我们今天讲的这个SQL标准的...
50 听起来很恐怖的数据库幻读,到底是个什么奇葩问题?
上一讲我们给大家讲解了不可重复读这个问题,这个问题简单来说,就是一个事务多次查询一条数据,结果每次读到的值都不一样,这个过程中可能别的事务会修改这条数据的值,而且修改值之后事务都提交了,结果导致人家每次查到的值都不一样,都查到了提交事务修改...
49 一个事务多次查询一条数据读到的都是不同的值,这就是不可重复读?
上一讲我们说完了多个事务并发执行时候,对MySQL的缓存页里的同一行数据同时进行更新或者查询的时候,可能发生的脏写和脏读的问题 我们也都理解了,之所以会发生脏写和脏读,最关键的,其实是因为你一个事务写或者查的是人家事务还没提交的时候更新过的...
48 多个事务并发更新以及查询数据,为什么会有脏写和脏读的问题?
上一次我们已经讲到,其实对于我们的业务系统去访问数据库而言,他往往都是多个线程并发执行多个事务的,对于数据库而言,他会有多个事务同时执行,可能这多个事务还会同时更新和查询同一条数据,所以这里会有一些问题需要数据库来解决,如下图。 每个事务...
47 简单回顾一下, MySQL运行时多个事务同时执行是什么场景?
到目前为止,我们已经给大家深入讲解了MySQL的buffer pool机制、redo log机制和undo log机制,相信大家现在对我们平时执行一些增删改语句的实现原理,都有了一定较为深入的理解了! 因为平时我们执行增删改的时候,无非就是...
46 一起来看看INSRET语句的undo log回滚日志长什么样?
昨天我们讲解了undo log回滚日志的作用,说白了,就是你执行事务的时候,里面很多INSERT、UPDATE和DELETE语句都在更新缓存页里的数据,但是万一事务回滚,你必须有每条SQL语句对应的undo log回滚日志,根据回滚日志去恢...
45 如果事务执行到一半要回滚怎么办?再探undo log回滚日志原理!
之前我们已经给大家深入讲解了在执行增删改操作时候的redo log的重做日志原理,其实说白了,就是你对buffer pool里的缓存页执行增删改操作的时候,必须要写对应的redo log记录下来你做了哪些修改 如下图所示,redo log都...
44 redo log buffer中的缓冲日志,到底什么时候可以写入磁盘?
之前我们给大家讲解了一下redo log buffer的缓冲机制,大家现在应该都知道了,redo log在写的时候,都是一个事务里的一组redo log,先暂存在一个地方,完事儿了以后把一组redo log写入redo log buffer...
43 直接强行把redo log写入磁盘?非也,揭秘redo log buffer!
上一讲我们给大家说了一下redo log block这个概念,大家现在都知道平时我们执行完增删改之后,要写入磁盘的redo log,其实应该是先进入到redo log block这个数据结构里去的,然后再进入到磁盘文件里,如下图所示。 那...
12 Buffer Pool这个内存数据结构到底长个什么样子?
1、如何配置你的Buffer Pool的大小? 首先我们来看看,我们应该如何配置你的Buffer Pool到底有多大呢? 因为Buffer Pool本质其实就是数据库的一个内存组件,你可以理解为他就是一片内存数据结构,所以这个内存数据结构肯...