![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 60
辉锅讲技术
这个作者很懒,什么都没留下…
展开
-
MySQL之innodb的原理
我们要把id=1的这条数据的name="张三"的值改成name="李四",那么此时我们得先把要更新的原来的值“张三”和“id=1”这些信息,写入到undo日志文件中去。问题似乎并没有解决,Redo Log也在内存中,那么mysql宕机,不是也和缓冲池数据一样都丢失了么,这个问题得分两种情况,第一种事务没有提交,更新数据丢失了,其实是不要紧的,因为你一条更新语句,没提交事务,就代表他没执行成功,此时mysql宕机虽然导致内存里的数据都丢失了,但是你会发现,磁盘上的数据依然还停留在原样子。原创 2023-01-27 20:10:05 · 130 阅读 · 0 评论 -
数据库事务隔离级别
就是可重复读级别,这个级别下,不会发生脏写、脏读和不可重复读的问题,因为你一个事务多次查询一个数据的值,哪怕别的事务修改了这个值还提交了,你不会读到人家提交事务修改过的值,你事务一旦开始,多次查询一个值,会一直读到同一个值。read uncommitted(读未提交),他是解决脏写的问题的,也就是说,不可能两个事务在没提交的情况下去更新同一行数据的值,但在这种隔离级别下,可能发生脏读,不可重复读,幻读。第三个是repeatable read(可重复读),不同的隔离级别是可以解决不同的事务并发问题的。原创 2023-01-26 21:01:31 · 173 阅读 · 0 评论 -
MySQL之脏写、脏读、不可重复读、幻读
比如现在有事务1和事务2同时对一行数据进行修改,事务1将值改成1,而事务2将值改成了2,这时的值应该是2,但是就在这时,事务1发生了回滚,通过undo log,事务1将值回滚到原来的值0,而此时事务2一看我更新的2怎么突然变成0了,这就是。脏读和脏写差不多,比如现在有两个事务1和事务2,事务1修改值为1,就在这时事务2来读取到1这个值,然后做一推业务处理,但是事务1此时发生回滚了将值回滚成0,这个是事务2又来读取这个值,发现变成了0,和之前读的1完全不同,这就是所谓的。原创 2023-01-26 16:32:42 · 553 阅读 · 0 评论