二刷剑指offer
【Redis】
- 缓存雪崩和缓存穿透
- 如何解决 Redis 的并发竞争 Key 问题
- 如何保证缓存和数据库的数据一致性
- redis是单线程还是多线程?为什么那么快?
- redis数据分布方式(一致性哈希)
- redis主从复制
【MySQL】
- 事务(ACID)
- 并发一致性问题(丢失修改/读脏数据/不可重复读/幻读)
- 封锁粒度(行、表)、封锁类型(读写、意向)、封锁协议(三级/两段)
- 隔离级别(未提交读/提交读/可重复读/可串行化)
- 多版本并发控制(MVCC快照、版本号)解决RC/RR 无法解决脏读
- 行级锁(Record Lock+Gap Locks=Next-Key Locks)
- 三大范式(每列不可再分/每张表只描述一件事情/每一列数据都和主键直接相关,而不能间接相关)
- B+ Tree 索引原理(顺序访问指针)
- 哈希索引/全文索引/空间数据索引
- 聚簇索引/非聚簇索引--概念
- 回表查询和覆盖索引
- 索引失效的情况(10)
- Explain语句各字段的意义(10)
- 索引的优点(3)
- 最左前缀原则/联合索引如何建立
- 一条SQL语句的执行过程(查:权限/执行器/优化器/权限|| 更:redolog和binlog)
- MyISAM和InnoDB区别(事务、并发、外键、备份、恢复、其他)
- Sharding 策略/问题
- MySQl主从复制(主binlog-->从relay log)
- 主从复制或读写分离等数据不一致性问题(半同步复制法、全同步复制法、缓存记录写key法)
Redis主从复制:
1、当从库和主库建立MS关系后,会向主数据库发送SYNC命令
2、主库接收到SYNC命令后会开始在后台保存快照(RDB持久化过程),并将期间接收到的写命令缓存
起来
3、当快照完成后,主Redis会将快照文件和所有缓存的写命令发送给从Redis
4、从Redis接收到后,会载入快照文件并且执行收到的缓存的命令
5、之后,主Redis每当接收到写命令时就会将命令发送从Redis,从而保证数据的一致