JavaDriver JavaDriver
首页
  • 基础
  • 并发
  • JVM
  • 设计模式
  • 计算机网络
  • 操作系统
  • 数据结构
  • 算法
  • MYSQL
  • REDIS
  • Netty
  • Kafka
系统设计
非技术
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

YoungAnn

西二旗Java老司机一枚 致力于社会主义添砖Java
首页
  • 基础
  • 并发
  • JVM
  • 设计模式
  • 计算机网络
  • 操作系统
  • 数据结构
  • 算法
  • MYSQL
  • REDIS
  • Netty
  • Kafka
系统设计
非技术
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • MYSQL相关

    • MySQL中 InnoDB 和 MylSAM 的区别是什么?
    • 聚簇索引和非聚簇索引有什么区别?
    • 简述 MySQL 常见索引类型,介绍一下覆盖索引
    • 简述Mysql的事务隔离级别
    • 说一下Mysql锁
    • MySQL 为什么使用 B+ 树来作索引,对比 B 树它的优点和缺点是什么
      • 磁盘存取原理
      • B-/+Tree索引的性能分析
    • 简述乐观锁以及悲观锁的区别以及使用场景
    • 简述脏读和幻读的发生场景,InnoDB 是如何解决幻读的?
    • 简述什么是最左匹配原则
    • MySQL 联合索引底层原理是什么?
    • 产生死锁的必要条件有哪些?如何解决死锁?
    • 简述常见的负载均衡算法
    • 简述 MySQL 的主从同步机制,如果同步失败会怎么样?
    • 如何设计数据库压测方案?
    • 简述数据库中什么情况下进行分库,什么情况下进行分表?
    • 数据库的读写分离的作用是什么?如何实现?
    • 简述 undo log 和 redo log 的作用
    • 什么是 SQL 注入攻击?如何防止这类攻击?
    • MySQL 中 join 与 left join 的区别是什么?
    • 简述 MySQL MVCC 的实现原理
    • MySQL 中 varchar 和 char 的区别是什么?
    • 模糊查询是如何实现的?
  • REDIS相关

  • 数据库
  • MYSQL相关
YoungAnn
2022-05-21
目录

MySQL 为什么使用 B+ 树来作索引,对比 B 树它的优点和缺点是什么

索引本身也是以文件的形式存储在磁盘上,索引查找过程中存在I/O消耗,采用B tree结构可以减少I/O。

# 磁盘存取原理

局部性原理与磁盘预读:当一个数据被用到时,其附近的数据也很快会被用到。 预读的长度一般为页的整数倍,主存和磁盘以页为单位交换数据。

磁盘和磁头构成了存取物理结构。同心圆环是磁道,磁道被划分成一个个段,叫扇区,扇区是最小存储单元。 i/o读取数据的过程:磁盘旋转到指定扇区,磁头移动到指定磁道。 所以减少磁盘旋转或者减少磁头移动就能减少i/o。

# B-/+Tree索引的性能分析

B Tree利用局部性原理可减少i/o次数。 根据B Tree定义可知,检索一次最多需要访问h个节点,h-1次i/o,h是树高,mysql设计者巧妙的将一个节点大小设置为等于一个页大小,每次新建节点都申请一个页的空间,这样就保证一个节点物理上也存储在一个页,这样每个节点只需要一次i/o就可以完全载入。

编辑 (opens new window)
上次更新: 2022/05/22, 00:01:01
说一下Mysql锁
简述乐观锁以及悲观锁的区别以及使用场景

← 说一下Mysql锁 简述乐观锁以及悲观锁的区别以及使用场景→

最近更新
01
电商-商品系统设计
12-17
02
关于如何写OKR
12-09
03
对事不对人 vs 对人不对事
12-09
更多文章>
Theme by Vdoing | Copyright © 2022-2023 YoungAnnn | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式