02 2024 档案
摘要:mysql分库分表 1. 问题 主从架构,读写分离,分担了访问压力 分库分表的时机: ① 前提,项目业务数据逐渐增多,或业务发展比较迅速(单表的数据量达到1000W或20G以后) ② 优化已解决不了性能问题(主从读写分离、查询索引…) ③ IO瓶颈(磁盘IO、网络IO)、CP\瓶颈(聚合查询、连接数
阅读全文
摘要:mysql主从同步原理 1. 问题 主从架构:主库用于写数据,从库用于读数据 主库与从库如何进行同步的? 2. 主从同步原理 MySQL主从复制的核心就是二进制日志 二进制日志(bin log) 记录了所有的 DDL (数据定义语言,增删改查表结构) 语句和 DML (数据操纵语言,增删改查表中的数
阅读全文
摘要:MVCC多版本并发控制 1. 问题 锁:排他锁(如一 个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁) mvcc:多版本并发控制 2. MVCC多版本并发控制 MVCC全称Multi-Version Concurrency Control,多版本并发控制。指维护一个数据的多个版本,
阅读全文
摘要:undo log和redo log的区别 1. 问题 undo log和redo log都是mysql的日志文件,但是功能不一样。 缓冲池(buffer pool):主内存中的一个区域,里面可以缓存磁盘上经常操作的真实数据,在执行增删改查操作时,先操作缓冲池中的数据(若缓冲池没有数据,则从磁盘加载并
阅读全文
摘要:并发事务 1. 问题 ● 并发事务问题:脏读、不可重复读、幻读 ● 隔离级别:读未提交、读已提交、可重复读、串行化 2. 并发事务问题 脏读:一个事务读到另外一个事务还没有提交的数据。 不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。 幻读:一个事务按照条件查询数据时
阅读全文
摘要:事务的特性 1. 问题 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 2. ACID是什么 原子性(Atomicity) :事务是不可分割的最小操作单元,要么全部成功,要么全部失败。 一致性(Co
阅读全文
摘要:sql优化的经验 1. 问题 表的设计优化 索引优化(参考优化创建原则和索引失效) SQL语句优化 主从复制、读写分离 分库分表 2. sql优化的经验 表的设计优化(参考阿里开发手册《嵩山版》) a. 比如设置合适的数值(tinyint int bigint),要根据实际情况选择 b. 比如设置合
阅读全文
摘要:什么情况下索引会失效 1. 问题 索引失效的情况有很多,可以说一些自己遇到过的。 给tb_seller创建联合索引,字段顺序: name,status,address 那如何判断索引是否失效了呢?执行计划explain 2. 什么情况下索引会失效 违反最左前缀法则 如果索引了多列,要遵守最左前缀法则
阅读全文
摘要:索引创建的原则 1. 问题 先陈述自己在实际的工作中是怎么用的 主键索引 唯一索引 根据业务创建的索引(复合索引) 2. 索引创建的原则 针对于数据量较大,且查询比较频繁的表建立索引。单表超过10万数据 (增加用户体验) 针对于常作为查询条件(where)、排序(order by)、分组(group
阅读全文
摘要:覆盖索引 1. 问题 覆盖索引是指查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到。 判断下面的SQL哪些是覆盖索引,为什么? select * from tb_user where id = 1 是,因为根据id查询的,id默认是主键索引,就是聚簇索引,聚簇索引中对应的是整行的记录 s
阅读全文
摘要:聚簇索引与非聚簇索引 1. 问题?什么是聚簇索引与非聚簇索引 什么是聚集索引? 什么是二级索引(非聚集索引)? 什么是回表? 聚集索引=聚簇索引 二级索引=非聚集索引=非聚簇索引 2. 聚簇索引 聚集索引选取规则: 1.如果存在主键,主键索引就是聚集索引。 2.如果不存在主键,将使用第一个唯一(UN
阅读全文
摘要:索引 1. 问题?什么是索引 索引(index) 是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(B+树), 这些数据结构以某种方式引用 (指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。 维护树的数据结构,提高
阅读全文
摘要:优化-sql执行很慢,如何解决 聚合查询:新增临时表 多表查询:优化sql语句结构 表数据量过大查询:添加索引 深度分页查询 解决方案 一个SQL语句执行很慢,如何分析? 可以采用EXPLAIN 或者DESC命令获取MySQL如何执行SELECT语句的信息 展示SQL执行的情况,部分字段说明如下:
阅读全文
摘要:mysql知识体系 1. 优化-如何定位慢查询 -问题引入 聚合查询 多表查询 表数据量过大查询 深度分页查询 表象:页面加载过慢、接口压测响应时间过长(超过1s) 2. 解决方案 方案一:开源工具 调试工具:Arthas (阿尔萨斯) 运维工具:Prometheus 、Skywalking 方案二
阅读全文
摘要:redis单线程 问题引入 ● Redis是纯内存操作, 执行速度非常快 ● 采用单线程,避免不必要的上下文切换可竞争条件,多线程还要考虑线程安全问题 ● 使用I/O多路复用模型, 非阻塞IO Redis是纯内存操作,执行速度非常快,它的性能瓶颈是网络延迟而不是执行速度,I/O多路复 用模型主要就是
阅读全文
摘要:redis分片集群 redis集群的数据读写 总结 问答
阅读全文
摘要:哨兵模式 运行原理 redis 哨兵模式 脑裂 主节点的网络问题导致暂时断开连接了,哨兵重新选举了一个主节点,等到老的主节点重新连上时,将会降级为从节点,它清空自身的数据从主节点重新同步 此时,在老的主节点网络出问题期间收到的数据将会丢失。 需要避免这个问题,可以对redis进行配置 最少有一个从节
阅读全文
摘要:redis 主从复制 主从同步 主节点只复制写,从节点复制读 全量同步 增量同步
阅读全文
摘要:redis分布式锁使用场景 场景一:抢购优惠券,造成超买 单个服务器,加锁 集群部署 机群需要添加分布式锁,可以在不同的服务器下加锁 redis分布式锁实现原理 主从数据的一致性 CAP理论 在分布式中有一种理论叫CAP理论,C表示数据一致性,A表示系统可用性,P表示分区容错性,提出这个理论的人也指
阅读全文
摘要:redis-数据淘汰策略 redis具体的有八种淘汰策略 数据淘汰策略建议 总结 问答
阅读全文
摘要:redis的数据过期策略 惰性删除 定期删除 总结 回答
阅读全文
摘要:如何将redis中的数据持久化? 1.RDB 2.AOF 什么是RDB RDB执行原理 AOF的开启 二者对比 问答
阅读全文
摘要:缓存击穿 互斥锁==分布式锁 互斥锁 多用于关于钱的业务,保持强一致性 性能差一些,因为需要互相等待 逻辑过期 保证高可用性,注重于用户的体验
阅读全文
摘要:缓存穿透 如果有人知道了你的接口请求地址,用不存在的id或者负数疯狂请求,会导致数据库宕机。所以需要预防 布隆过滤器 实现方案:Guava 或者 Redisson 总结
阅读全文