MySQL 索引为什么快?一次讲透 B+ 树
索引为什么能快这么多?没有索引时,查一条数据要从头到尾扫全表,数据量大了就是灾难。加了合适的索引,MySQL 用 B+ 树把查找复杂度从 O(n) 降到 O(log n)。B+ 树是什么结构?
索引为什么能快这么多?没有索引时,查一条数据要从头到尾扫全表,数据量大了就是灾难。加了合适的索引,MySQL 用 B+ 树把查找复杂度从 O(n) 降到 O(log n)。B+ 树是什么结构?
为什么要读写分离? 业务量大了之后,一台数据库扛不住:读请求远多于写请求。于是把一台主库(写)和多台从库(读)搭起来。 写操作走主库,主库自动把数据同步给从库;读请求分散到从库,压力立刻就下来了。
Redis 为什么这么快? 因为它把数据放在内存里,读写不碰磁盘;而且用了单线程模型,避免了多线程切换的开销。 常见用途:缓存热点数据、做排行榜(zset)、存验证码和登录态、简单的消息队列。
事务的 ACID 是什么? 事务就是把一堆操作捆成一个原子操作,要么全成功,要么全回滚。 A 原子性:操作不可分割,全做或全不做 C 一致性:数据库从一个一致状态到另一个 I 隔离性:事务之间互不干扰 D 持久性:提交后永久生效
慢查询排查三步走 页面卡、接口慢,先别急着加机器,大概率是某条 SQL 在拖后腿。 第一步,开慢查询日志,把超过 1 秒的 SQL 记下来;第二步,用 EXPLAIN 看这条 SQL 有没有走索引、扫描了多少行;第三步,针对性加索引或改写 SQL。