RT
MySQL实战 | 08 懵逼,可重复读好像失效了?
我们之前学习了隔离级别和锁,在隔离级别里有一个可重复读,锁里有个行锁。
- 可重复读:事务期间,看不懂别的事务的更新;
- 行锁:有事务 1 在更新某行数据时,若有其他事务 2 进来,会被锁住
矛盾来了:事务 2 等待结束,获取到行锁时,看到的是哪个数据呢?
按可重复读隔离级别来说,看到的应该是事务启动时的最新数据,即事务 1 修改之前的数据;
但是这样不就造成了事务 1 的修改丢失了吗?
MySQL实战 | 06/07 简单说说MySQL中的锁
本文思维导图:https://mubu.com/doc/AOa-5t-IsG
锁是计算机协调多个进程或纯线程并发访问某一资源的机制。
在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。
如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。
MySQL实战 | 03 - 谁动了我的数据:浅析MySQL的事务隔离级别
使用过关系型数据库的,应该都事务的概念有所了解,知道事务有 ACID 四个基本属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),今天我们主要来理解一下事务的隔离性。
MySQL实战 | 02-MySQL 如何恢复到半个月内任意一秒的状态?
看到这个题目是不是觉得数据库再也不用担心服务器 crash 了?
那我们需要学习为什么可以这么做?以及如何做?
即为什么可以恢复到任意时间点?如何恢复到任意时间点?
为什么有了 binlog 还需要 redo log?
事务是如何提交的?事务提交先写 binlog 还是 redo log?如何保证这两部分的日志做到顺序一致性?
为了保障主从复制安全,故障恢复是如何做的?