- 从一条日结 SQL 一夜之间慢了一百倍切入,拆解执行计划漂移的根因:InnoDB 统计信息靠随机采样、变更越阈值就重算、基数估不准、代价模型据此改选全表扫描。给出直方图、采样页数、重建统计等治本手段与索引提示的止血边界,并附三个避坑经验。 从一条日结 SQL 一夜之间慢了一百倍切入,拆解执行计划漂移的根因:InnoDB 统计信息靠随机采样、变更越阈值就重算、基数估不准、代价模型据此改选全表扫描。给出直方图、采样页数、重建统计等治本手段与索引提示的止血边界,并附三个避坑经验。
- 半同步复制解决了异步复制的数据丢失风险,但AFTER_COMMIT和AFTER_SYNC两种等待模式的差异直接决定了故障切换时是否丢数据。MGR基于Paxos协议实现自动选主与脑裂防护,GTID则让主从切换不再依赖手工位点。本文从复制的基本原理出发,拆解MySQL复制的三层机制——异步复制的流程、半同步复制的等待模式、MGR的一致性协议与GTID的全局事务标识,并给出生产环境的选型建议。 半同步复制解决了异步复制的数据丢失风险,但AFTER_COMMIT和AFTER_SYNC两种等待模式的差异直接决定了故障切换时是否丢数据。MGR基于Paxos协议实现自动选主与脑裂防护,GTID则让主从切换不再依赖手工位点。本文从复制的基本原理出发,拆解MySQL复制的三层机制——异步复制的流程、半同步复制的等待模式、MGR的一致性协议与GTID的全局事务标识,并给出生产环境的选型建议。
- MySQL 查询优化可以按这个顺序:先看执行计划EXPLAIN SELECT ...重点关注 type、key、rows、Extra。给 WHERE / JOIN / ORDER BY 常用字段建索引CREATE INDEX idx_user_name ON user(name);建立合适的联合索引INDEX(a, b, c)遵循最左匹配原则。避免索引失效不要对索引列使用函数:WHERE Y... MySQL 查询优化可以按这个顺序:先看执行计划EXPLAIN SELECT ...重点关注 type、key、rows、Extra。给 WHERE / JOIN / ORDER BY 常用字段建索引CREATE INDEX idx_user_name ON user(name);建立合适的联合索引INDEX(a, b, c)遵循最左匹配原则。避免索引失效不要对索引列使用函数:WHERE Y...
- 从运营点了一次列表「末页」卡住二十多秒切入,拆解 LIMIT 大偏移为什么慢、EXPLAIN 的 rows 为什么看不出来,再用覆盖索引与延迟关联、keyset 游标、解耦总数、产品层筛选、宽索引五种方案对比,最后给出该改 SQL 还是该改产品的分水岭判断。 从运营点了一次列表「末页」卡住二十多秒切入,拆解 LIMIT 大偏移为什么慢、EXPLAIN 的 rows 为什么看不出来,再用覆盖索引与延迟关联、keyset 游标、解耦总数、产品层筛选、宽索引五种方案对比,最后给出该改 SQL 还是该改产品的分水岭判断。
- InnoDB的并发控制核心就是MVCC——通过Undo Log版本链和Read View实现“读不阻塞写、写不阻塞读”。本文拆解版本链的构建方式、Read View的四个核心字段、RC与RR隔离级别下Read View生成时机的差异、快照读与当前读的底层区别,以及长事务导致undo log膨胀的根因。 InnoDB的并发控制核心就是MVCC——通过Undo Log版本链和Read View实现“读不阻塞写、写不阻塞读”。本文拆解版本链的构建方式、Read View的四个核心字段、RC与RR隔离级别下Read View生成时机的差异、快照读与当前读的底层区别,以及长事务导致undo log膨胀的根因。
- 从一次大促超卖事故切入,拆解"先查后改"为什么会在并发下超卖、原子 UPDATE 的当前读与行锁原理、热点行的分桶拆解方案、Redis 预扣的一致性代价,以及隔离级别和索引类型如何影响锁范围,最后给出库存扣减的正确性优先顺序。 从一次大促超卖事故切入,拆解"先查后改"为什么会在并发下超卖、原子 UPDATE 的当前读与行锁原理、热点行的分桶拆解方案、Redis 预扣的一致性代价,以及隔离级别和索引类型如何影响锁范围,最后给出库存扣减的正确性优先顺序。
- 集群与分布式是数据库架构选型中最容易被混淆的一对概念。集群通过复制解决高可用与并发压力,分布式通过拆分解决写入瓶颈与海量数据。本文系统拆解两者的本质差异与适用边界,对比主从复制、读写分离集群、共享存储集群三条技术路线的原理与代价,给出可落地的选型决策框架,并结合共享存储集群的缓存融合机制与实测数据,分析国产化环境下核心交易系统的集群落地路径。 集群与分布式是数据库架构选型中最容易被混淆的一对概念。集群通过复制解决高可用与并发压力,分布式通过拆分解决写入瓶颈与海量数据。本文系统拆解两者的本质差异与适用边界,对比主从复制、读写分离集群、共享存储集群三条技术路线的原理与代价,给出可落地的选型决策框架,并结合共享存储集群的缓存融合机制与实测数据,分析国产化环境下核心交易系统的集群落地路径。
- InnoDB以16KB的页为单位管理数据,但很多人只知道“页分裂会降低性能”,不清楚页分裂在什么条件下触发、页合并何时发生、填充因子如何影响空间利用率。本文从数据页的物理结构出发,拆解页分裂与页合并的触发机制、顺序插入与随机插入的性能差异、填充因子的作用与调优策略,帮你理解InnoDB存储引擎最底层的运行逻辑。 InnoDB以16KB的页为单位管理数据,但很多人只知道“页分裂会降低性能”,不清楚页分裂在什么条件下触发、页合并何时发生、填充因子如何影响空间利用率。本文从数据页的物理结构出发,拆解页分裂与页合并的触发机制、顺序插入与随机插入的性能差异、填充因子的作用与调优策略,帮你理解InnoDB存储引擎最底层的运行逻辑。
- 从一次接口超时告警切入,把一条 SQL 在 MySQL 里的完整路径拆成七段(连接器、查询缓存、解析器、预处理器、优化器、执行器、存储引擎),用 optimizer_trace 和 Handler_read 变量判断慢在哪一段,并给出慢查询排查的顺序与三个避坑经验。 从一次接口超时告警切入,把一条 SQL 在 MySQL 里的完整路径拆成七段(连接器、查询缓存、解析器、预处理器、优化器、执行器、存储引擎),用 optimizer_trace 和 Handler_read 变量判断慢在哪一段,并给出慢查询排查的顺序与三个避坑经验。
- 选主键时,很多人会在“自增ID”和“业务复合主键”之间犹豫。复合主键看起来更“自然”——订单明细用(订单ID,商品ID),用户角色用(用户ID,角色ID)。但在InnoDB的索引组织表结构下,复合主键会带来索引膨胀、二级索引体积暴涨、写入性能下降等隐藏代价。本文从InnoDB的存储结构出发,拆解复合主键和自增主键的物理差异,给出可量化的选型依据。 选主键时,很多人会在“自增ID”和“业务复合主键”之间犹豫。复合主键看起来更“自然”——订单明细用(订单ID,商品ID),用户角色用(用户ID,角色ID)。但在InnoDB的索引组织表结构下,复合主键会带来索引膨胀、二级索引体积暴涨、写入性能下降等隐藏代价。本文从InnoDB的存储结构出发,拆解复合主键和自增主键的物理差异,给出可量化的选型依据。
- OLTP和OLAP是数据库最常被混淆的一对概念。很多人知道“OLTP是交易,OLAP是分析”,但不清楚它们在存储结构、索引设计、执行引擎上的根本差异。本文从数据组织方式、查询模式、优化目标三个层面,拆解OLTP和OLAP的本质区别,并结合实际使用场景给出选型建议。 OLTP和OLAP是数据库最常被混淆的一对概念。很多人知道“OLTP是交易,OLAP是分析”,但不清楚它们在存储结构、索引设计、执行引擎上的根本差异。本文从数据组织方式、查询模式、优化目标三个层面,拆解OLTP和OLAP的本质区别,并结合实际使用场景给出选型建议。
- MySQL的JOIN优化中,驱动表的选择直接决定执行效率。“小表驱动大表”这句口诀几乎人人都会背,但真正理解其底层逻辑的人不多——驱动表看的是过滤后结果集,不是表的总行数;Hash Join引入后,Join Buffer的角色也发生了根本变化。本文从驱动表选择逻辑、Join Buffer工作机制、MySQL 8.0.20之后的算法演进三个层面,拆解多表JOIN的底层原理与实战调优方法。 MySQL的JOIN优化中,驱动表的选择直接决定执行效率。“小表驱动大表”这句口诀几乎人人都会背,但真正理解其底层逻辑的人不多——驱动表看的是过滤后结果集,不是表的总行数;Hash Join引入后,Join Buffer的角色也发生了根本变化。本文从驱动表选择逻辑、Join Buffer工作机制、MySQL 8.0.20之后的算法演进三个层面,拆解多表JOIN的底层原理与实战调优方法。
- 如果只有一个容器:docker run ...还能接受。但如果项目需要:NginxWebMySQLRedis手动执行四五条 docker run 就开始麻烦了。这就是 Compose 的用武之地。Compose 是什么?可以把多个容器的配置写进一个 YAML 文件。例如:services: web: image: nginx:alpine ports: - "8080... 如果只有一个容器:docker run ...还能接受。但如果项目需要:NginxWebMySQLRedis手动执行四五条 docker run 就开始麻烦了。这就是 Compose 的用武之地。Compose 是什么?可以把多个容器的配置写进一个 YAML 文件。例如:services: web: image: nginx:alpine ports: - "8080...
- NineData支持Oracle到OceanBase MySQL数据复制,可将结构复制、全量复制、增量复制和数据对比纳入同一条迁移链路。企业可以先准备目标端结构,再完成历史数据初始化,随后持续同步业务变化,让异构数据库迁移按阶段推进。 NineData支持Oracle到OceanBase MySQL数据复制,可将结构复制、全量复制、增量复制和数据对比纳入同一条迁移链路。企业可以先准备目标端结构,再完成历史数据初始化,随后持续同步业务变化,让异构数据库迁移按阶段推进。
- 数据库是每个后端开发者的必修课,但面对SQL语法、数据库设计、性能优化、国产数据库等众多知识点,初学者往往不知从何入手。本文先扫盲数据库的核心概念与分类,再梳理一条从SQL基础到数据库设计、性能优化、国产数据库实战的完整学习路径,帮助零基础读者建立系统化的数据库开发能力。 数据库是每个后端开发者的必修课,但面对SQL语法、数据库设计、性能优化、国产数据库等众多知识点,初学者往往不知从何入手。本文先扫盲数据库的核心概念与分类,再梳理一条从SQL基础到数据库设计、性能优化、国产数据库实战的完整学习路径,帮助零基础读者建立系统化的数据库开发能力。
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签