(一)八股(数据库/MQ/缓存)
文章目录
- 项目地址
- 一、数据库
-
- 1.1 事务隔离级别
-
- 1. 事务的四大特性
- 2. Read Uncommited脏读(未提交读)
- 3. Read Commited幻读(sql默认已提交读)
- 4. Repeatable Read
- 5. Serializable
- 6. Snapshot(快照隔离)
- 7. 代码开启
- 8. For update和Repeatable Read的区别
- 1.2 各种锁
-
- 1. 乐观锁 row version
- 2. 悲观锁 for update
- 3. 间隙锁
- 1.3 索引
-
- 1. 索引失效
- 二、MQ
-
- 2.1 MQ
-
- 1. 为什么引入?优缺点
- 2. MQ高可用
- 3. 幂等
- 4. 消息丢失
- 5. 消息积压处理
- 6. 让我设计一个mq
- 7. massTrainsit对接mq
- 三、缓存
-
- 3.1 Redis
-
- 1. 作用
- 2. 使用后产生的问题
- 3. 高可用
- 3.2 前端缓存
-
- 1. local storage
- 3.3 CDN缓存
项目地址
- 教程作者:
- 教程地址:
- 代码仓库地址:
- 所用到的框架和插件:
dbt
airflow
一、数据库
1.1 事务隔离级别
1. 事务的四大特性
- Transaction Isolation Level,
2. Read Uncommited脏读(未提交读)
可以读取到别的事务未提交的数据
- 原理:当前A事务可以读其他事务B未提交的数据,B事务可能回滚也可能不回滚
- 特点:性能高,并发高,但数据不可靠
- 场景:报表和统计使用
3. Read Commited幻读(sql默认已提交读)
只能读取已提交的数据,和uncommited相反,幻读不能避免
- 原理:事务A只能读取已经提交的事务
- 特点:避免了脏读,但会出现,幻读(两次查询结果结果行数不同,)
- 场景:大部分的OLTP系统
4. Repeatable Read
读过的行会被加锁,防止读过的行被修改,幻读不能避免
- 原理:事务A执行期间,读过的行会被加锁,直到事务结束,会有row version
- 特点:避免了脏读和不可重复读,但是不能避免幻读,①别的事务可以读取当前事务的锁的值;②别的事务可以插入符合条件的行
- 场景:银行扣款,保持余额一致
5. Serializable
将所有事务串行
- 原理