Quick View

关联知识库:Quick View

Quick View

  1. MySQL
  2. PgSQL
  3. VS
  4. 分布式DB
  5. Future,语义向量支持

1. MySQL

MySQL索引

考古:MySQL索引,存储引擎,收购等历史变迁.md

大事件:2010年,MySQL 5.5(Oracle发布)使用InnoDB作为默认的存储引擎

发展历史

  • 2001年,InnoDB(From Innobase Oy Company)作为第三方存储引擎集成到MySQL
  • 2006年,Oracle收购Innobase
  • 2008年,Sun收购MySQL
  • 2009年,Oracle收购Sun
  • 2010年,MySQL 5.5(Oracle发布)使用InnoDB作为默认的存储引擎
  • 2013年,MySQL 发布5.6
  • 2015年,MySQL发布5.7,截止到2025年8月,MySQL官方文档支持的最旧一个版本
    至此,MySQL的初期发展历史告一段落,世界继续前行...

# MySQL索引结构发展历史:从B树到B+树的演进之路.md

MySQL索引发展历史:二叉树 to B树 to B+树 to B+树查询渐进式优化

  • B树多路平衡:降低树高度,减少IO
  • B+树仅叶子节点存储数据(叶子节点也可存索引):进一步降低树高度,叶子节点使用双向链表链接:范围查询友好

索引基本盘

  • 聚簇索引和非聚簇索引的工作方式

    • 聚簇索引:索引和数据一起存放在B+树的叶子节点上。通过主键查询最终读到叶子节点,拿到数据。
    • 非聚簇索引:由索引和聚簇索引构成,先通过索引找到聚簇索引的地址,例如主键,最后执行聚簇索引的查询(回表)拿到数据。
    • 覆盖索引(策略?)对于非聚簇索引的查询优化:通过宽索引策略,将需要的数据放在索引中,避免回表(再进行一次聚簇索引的查询)。
  • 非聚簇索引的子分类

    • 唯一索引(带唯一约束的非聚簇索引):除加速外还有字段值不能重复(邮箱,手机号等)的数据约束
    • 普通索引(不带唯一约束的非聚簇索引):仅加速
      • 单列索引
      • 多列/复合/联合索引:保持索引命中需将查询字段保持和索引相同的连续性。(最左前缀原则?)
        • 覆盖策略(索引):避免回表。

B+树查询渐进式优化

  • 自适应哈希索引(AHI):

    • v5.5引入。“MySQL自带缓存”,识别连续访问,自动(自适应)创建哈希索引,加速后续访问。
    • MySQL8.0默认开启,但仍需DBA考虑维护成本和收益之间的权衡。核心参数:AHI锁争用和内存使用情况。判断进行分区数的增加或者直接关闭AHI。
  • 索引条件下推(v5.6):通过过滤(应用所有查询条件到存储引擎)避免多条件查询的无效回表。

  • MySQL 8.0

    • 不可见索引:索引的逻辑删除,安全,可逆的“软删除”方案。
    • 降序索引:版本前通过ASC升序索引的反向扫描实现降序,当前版本原生支持,效率更高。

MySQL性能优化

# MySQL性能优化最佳实践深度解析.md

思路:结合业务需求,对以下方面进行考量

  • 索引:设计符合业务需求且有助于性能提升的索引。
  • 查询:符合业务需求且达到较高的索引命中率,避免慢查询。
  • 服务器配置
    • InnoDb缓冲池(buffer_pool), 建议值:物理内存的70%-80%,减少磁盘IO
    • 线程池优化
  • 持续的性能监控
    • 慢日志
    • CPU,内存监控等

TODO 可展开

InnoDB quick view

️ InnoDB存储引擎深度技术报告:架构原理与性能优化实践.md

  • 广泛使用,生态强大
  • MVCC和事务支持
  • 行锁粒度和高并发
  • 性能优化buffer_pool

2. PgSQL

3. VS

4. 分布式DB

# 分布式关系型数据库解决方案深度解析.md
数据库主键技术选型深度分析:UUID vs 自增ID的单机与分布式选择.md

  • 读写分离
  • 分库分表
  • 存储计算分离,ES
posted @ 2025-08-31 19:00  吾以观复  阅读(9)  评论(0)    收藏  举报