- 1 合理使用范式和反范式1.1 范式遵循范式的优点:范式化的更新通常比反范式要快。当数据较好的范式化后,很少或者没有重复的数据。范式化的数据比较小,可以放在内存中,操作比较快。遵循范式的缺点:通常需要进行表关联。1.2 反范式反范式优点:所有的数据都在同一张表中,可以避免关联。可以设计有效的索引。反范式缺点:表格内的冗余较多,删除数据时候会造成表有些有用的信息丢失。1.3 如何选择 在实际... 1 合理使用范式和反范式1.1 范式遵循范式的优点:范式化的更新通常比反范式要快。当数据较好的范式化后,很少或者没有重复的数据。范式化的数据比较小,可以放在内存中,操作比较快。遵循范式的缺点:通常需要进行表关联。1.2 反范式反范式优点:所有的数据都在同一张表中,可以避免关联。可以设计有效的索引。反范式缺点:表格内的冗余较多,删除数据时候会造成表有些有用的信息丢失。1.3 如何选择 在实际...
- 很多DBA看到EXPLAIN输出里的Using temporary就紧张,觉得查询“肯定慢”。但Using temporary不等于“磁盘临时表”——MySQL优先在内存中创建临时表,只有数据量超过阈值才会落盘。本文拆解临时表的三种形态、触发条件、内存与磁盘的判定方法,以及4种优化方案,帮你精准判断什么时候该出手、什么时候可以不管。 很多DBA看到EXPLAIN输出里的Using temporary就紧张,觉得查询“肯定慢”。但Using temporary不等于“磁盘临时表”——MySQL优先在内存中创建临时表,只有数据量超过阈值才会落盘。本文拆解临时表的三种形态、触发条件、内存与磁盘的判定方法,以及4种优化方案,帮你精准判断什么时候该出手、什么时候可以不管。
- 在企业级数据库应用中,随着业务量的增长,数据库的读写压力日益增大。传统的开源MySQL数据库在扩展性方面遇到了明显的瓶颈——添加只读节点时需要复制全量数据,导致扩展时间长且成本高。这个问题在电商大促、节日营销等流量激增场景下尤为突出,直接影响业务成果和客户满意度。华为云TaurusDB作为华为自研的最新一代企业级云原生数据库,完全兼容MySQL,采用计算存储分离架构,最大支持128TB的海量... 在企业级数据库应用中,随着业务量的增长,数据库的读写压力日益增大。传统的开源MySQL数据库在扩展性方面遇到了明显的瓶颈——添加只读节点时需要复制全量数据,导致扩展时间长且成本高。这个问题在电商大促、节日营销等流量激增场景下尤为突出,直接影响业务成果和客户满意度。华为云TaurusDB作为华为自研的最新一代企业级云原生数据库,完全兼容MySQL,采用计算存储分离架构,最大支持128TB的海量...
- 数据库开发是每个后端开发者的必修课,但面对关系型、非关系型、国产数据库等众多选择,新手往往不知从何入手。本文从选型决策、SQL编写、表结构设计、性能调优到工具链选择,梳理一条清晰的数据库开发学习路径,并结合国产数据库环境下的开发实战经验,帮助新手快速建立系统化的数据库开发能力。 数据库开发是每个后端开发者的必修课,但面对关系型、非关系型、国产数据库等众多选择,新手往往不知从何入手。本文从选型决策、SQL编写、表结构设计、性能调优到工具链选择,梳理一条清晰的数据库开发学习路径,并结合国产数据库环境下的开发实战经验,帮助新手快速建立系统化的数据库开发能力。
- MySQL优化器有一个“自作聪明”的行为——当单列索引无法完全覆盖查询时,它可能选择索引合并(Index Merge) ,同时使用多个单列索引,把结果集合并起来。听起来很合理对吧?但索引合并有严格的适用条件,用错了比全表扫描还慢——尤其是UNION类型的索引合并,需要对多个结果集去重和排序,代价极高。本文拆解索引合并的3种类型、3个踩坑场景,以及什么时候该用复合索引替代。 MySQL优化器有一个“自作聪明”的行为——当单列索引无法完全覆盖查询时,它可能选择索引合并(Index Merge) ,同时使用多个单列索引,把结果集合并起来。听起来很合理对吧?但索引合并有严格的适用条件,用错了比全表扫描还慢——尤其是UNION类型的索引合并,需要对多个结果集去重和排序,代价极高。本文拆解索引合并的3种类型、3个踩坑场景,以及什么时候该用复合索引替代。
- 生成图片:不要沿用上面的图片风格,重新生成 4 张文章封面图供我选择,16:9 主标题:MySQL持久性最佳实践 副标题:redo刷盘参数三档取舍与故障分析 文章概述:实测innodb_flush_log_at_trx_commit的0、1、2三档性能,讲清进程崩溃与断电下的丢数据边界,以及redo、doublewrite、双1的关系,给出选型建议。 生成图片:不要沿用上面的图片风格,重新生成 4 张文章封面图供我选择,16:9 主标题:MySQL持久性最佳实践 副标题:redo刷盘参数三档取舍与故障分析 文章概述:实测innodb_flush_log_at_trx_commit的0、1、2三档性能,讲清进程崩溃与断电下的丢数据边界,以及redo、doublewrite、双1的关系,给出选型建议。
- MySQL 8.0.18开始引入的EXPLAIN ANALYZE,直接把实际执行时间和行数输出给你看,不用猜了。本文对比传统EXPLAIN和EXPLAIN ANALYZE的差异,展示如何用新工具把执行计划分析这件事从“猜”变成“看”。 MySQL 8.0.18开始引入的EXPLAIN ANALYZE,直接把实际执行时间和行数输出给你看,不用猜了。本文对比传统EXPLAIN和EXPLAIN ANALYZE的差异,展示如何用新工具把执行计划分析这件事从“猜”变成“看”。
- 一条中午就该提交的UPDATE,在事务里挂了70多分钟,整张订单表堵死40分钟。文章从processlist里不起眼的Sleep连接讲起,拆解MDL排队机制、lock_wait_timeout默认一年的坑、行锁与元数据锁两套超时的差异,以及RR隔离级别下长事务如何钉住purge水位线、让undo只涨不缩。最后给出commit与kill的判断标准,以及长事务监控与DDL变更的治理方法。 一条中午就该提交的UPDATE,在事务里挂了70多分钟,整张订单表堵死40分钟。文章从processlist里不起眼的Sleep连接讲起,拆解MDL排队机制、lock_wait_timeout默认一年的坑、行锁与元数据锁两套超时的差异,以及RR隔离级别下长事务如何钉住purge水位线、让undo只涨不缩。最后给出commit与kill的判断标准,以及长事务监控与DDL变更的治理方法。
- 在软件开发过程中,数据存储一直是一个绕不开的话题。从早期的文件系统,到如今各种数据库技术百花齐放,数据库已经成为现代应用系统的重要基础设施。其中,关系型数据库(Relational Database)凭借其成熟的理论基础、稳定的数据一致性以及完善的生态体系,长期占据企业应用开发的核心位置。本文将简单介绍关系型数据库的发展背景、基本概念、核心特点以及常见应用场景。 什么是关系型数据库关系型数据... 在软件开发过程中,数据存储一直是一个绕不开的话题。从早期的文件系统,到如今各种数据库技术百花齐放,数据库已经成为现代应用系统的重要基础设施。其中,关系型数据库(Relational Database)凭借其成熟的理论基础、稳定的数据一致性以及完善的生态体系,长期占据企业应用开发的核心位置。本文将简单介绍关系型数据库的发展背景、基本概念、核心特点以及常见应用场景。 什么是关系型数据库关系型数据...
- 以五个真实排障案例拆解MySQL慢查询的反直觉真相:type=index不等于快、索引会拖垮写入、LIMIT救不了深分页、大JOIN未必优于小查询、慢SQL常常是受害者不是凶手。主张收到慢查询先证明瓶颈,动索引前先做减法。 以五个真实排障案例拆解MySQL慢查询的反直觉真相:type=index不等于快、索引会拖垮写入、LIMIT救不了深分页、大JOIN未必优于小查询、慢SQL常常是受害者不是凶手。主张收到慢查询先证明瓶颈,动索引前先做减法。
- 数据库迁移的5种策略,以及我踩过的3个坑——从"删库跑路"到"丝滑上线"的血泪史前言如果说微服务拆分是一场豪赌,那数据库迁移就是赌桌上最危险的那个筹码。代码出问题了,回滚就行。但数据库呢?数据丢了就是丢了,回滚可能意味着用户账户余额归零、订单记录消失、聊天记录蒸发。我职业生涯里经历过 4 次比较大规模的数据库迁移,从 MySQL 5.6 升 8.0、从单库拆分成分库分表、从自建机房迁到云上、... 数据库迁移的5种策略,以及我踩过的3个坑——从"删库跑路"到"丝滑上线"的血泪史前言如果说微服务拆分是一场豪赌,那数据库迁移就是赌桌上最危险的那个筹码。代码出问题了,回滚就行。但数据库呢?数据丢了就是丢了,回滚可能意味着用户账户余额归零、订单记录消失、聊天记录蒸发。我职业生涯里经历过 4 次比较大规模的数据库迁移,从 MySQL 5.6 升 8.0、从单库拆分成分库分表、从自建机房迁到云上、...
- 大家好,我是数据库小学妹👋 我踩过的坑,你别再踩。 “为什么MySQL的索引用B+树,不用哈希,不用红黑树?”很多DBA面试都会被问到这个问题。你的答案是"B+树矮胖、叶子节点有链表、支持范围查询"。面试官如果接着问:那为什么矮胖就好?你该怎么答? 我在这方面也被问住过,后来自己啃了几天存储引擎的源码和文档,才把这层窗户纸捅破。今天不背八股,从磁盘IO这个最底层的约束,一步步推,为什么最后是 大家好,我是数据库小学妹👋 我踩过的坑,你别再踩。 “为什么MySQL的索引用B+树,不用哈希,不用红黑树?”很多DBA面试都会被问到这个问题。你的答案是"B+树矮胖、叶子节点有链表、支持范围查询"。面试官如果接着问:那为什么矮胖就好?你该怎么答? 我在这方面也被问住过,后来自己啃了几天存储引擎的源码和文档,才把这层窗户纸捅破。今天不背八股,从磁盘IO这个最底层的约束,一步步推,为什么最后是
- 很多人觉得分区表是“轻量级分库分表”——数据分开放、查询只扫一个区、过期数据直接DROP分区,听起来很完美。但分区表有严格的适用边界和隐藏代价:分区键选错导致所有查询都扫全部分区、分区数量过多导致DDL巨慢、跨分区查询比普通表还慢……本文从分区表的核心原理出发,拆解4种分区类型、3个真实踩坑场景,以及分区表与分库分表的本质区别,帮你一次性搞清楚到底该不该用。 很多人觉得分区表是“轻量级分库分表”——数据分开放、查询只扫一个区、过期数据直接DROP分区,听起来很完美。但分区表有严格的适用边界和隐藏代价:分区键选错导致所有查询都扫全部分区、分区数量过多导致DDL巨慢、跨分区查询比普通表还慢……本文从分区表的核心原理出发,拆解4种分区类型、3个真实踩坑场景,以及分区表与分库分表的本质区别,帮你一次性搞清楚到底该不该用。
- 从一次真实死锁现场切入,讲清行锁、间隙锁、插入意向锁的加锁机制与死锁形成原理,手把手教你怎么用show engine innodb status和information_schema定位死锁,并给出加锁顺序设计等避坑清单。 从一次真实死锁现场切入,讲清行锁、间隙锁、插入意向锁的加锁机制与死锁形成原理,手把手教你怎么用show engine innodb status和information_schema定位死锁,并给出加锁顺序设计等避坑清单。
- MySQL 5.7引入原生JSON类型,8.0支持多值索引,至今已近十年。但大量开发人员仍在把JSON当“万能兜底字段”——不管什么数据都往里塞,等查询慢到怀疑人生才想起来排查。本文拆解JSON字段查询的5个高频踩坑场景,给出虚拟列索引、多值索引等正确的优化方案。 MySQL 5.7引入原生JSON类型,8.0支持多值索引,至今已近十年。但大量开发人员仍在把JSON当“万能兜底字段”——不管什么数据都往里塞,等查询慢到怀疑人生才想起来排查。本文拆解JSON字段查询的5个高频踩坑场景,给出虚拟列索引、多值索引等正确的优化方案。
上滑加载中
推荐直播
-
华为云码道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华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签