EXPLORE · 循迹而来

MySQL

FOLLOW YOUR CURIOSITY

把同一个话题,读得更深。

这个话题下有 20 篇手记。

MySQL 加了字段而 Java 实体没跟上会怎样

670 阅读

MySQL 表新增字段但对应 Java 实体未同步,会导致 MyBatis 映射错误、数据丢失或 JPA 启动失败等异常,进而出现功能异常、数据不一致和排查困难。根本原因在于 ORM 映射未保持同步,往往是手动更新疏漏或误以为 ddl‑auto 能双向同步。解决思路分为三层:①紧急修复——根据报错快速在实体类、resultMap 或 @Column 中补全字段并重新部署;②流程规范——使用 Liquibase/Flyway 管理数据库版本,强制在同一次代码提交中同步 SQL 脚本和实体改动,禁用生产环境的 ddl‑auto=update;③辅助工具——利用 IDE 插件、MyBatis Generator 等自动生成代码,强化 Code Review。通过版本控制、CI/CD 自动迁移和团队规范,可根除数据库‑代码不同步导致的故障。

代码优化的部分实例

1300 阅读

文章通过几个实际案例展示常见的代码优化手段。先用 String.format 代替“+”或 StringBuilder 拼接长字符串,提高可读性;再将普通 I/O 改为 BufferedInputStream/BufferedOutputStream 并使用缓冲区,显著提升文件读写性能;通过把循环中第二层集合转为 Map ,利用键直接查找,减少嵌套循环次数;强调使用完 ResultSet、PreparedStatement、Connection 等资源后必须按顺序关闭,防止泄漏;最后指出频繁创建数据库连接的开销,推荐使用 Druid、C3P0 等连接池来复用连接,提高并发和稳定性。整体强调简洁、可读、低耗资源的编程实践。

Explain详解与索引最佳实践

1365 阅读

Explain是MySQL用于模拟优化器执行SQL、查看执行计划的工具,支持普通、EXPLAIN EXTENDED(提供优化后语句与filtered)和EXPLAIN PARTITIONS(显示访问分区)等变种。Explain输出的列包括id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra等,分别说明查询层次、查询类型、访问的表、访问方式(system、const、eq_ref、ref、range、index、ALL)、可用索引、实际使用的索引、索引字节长度、匹配列或常量、估计行数以及额外信息(Using index、Using where、Using temporary、Using filesort 等)。索引最佳实践包括:使用全值匹配、遵循最左前缀原则、避免在索引列上做函数或类型转换、将日期函数转为范围查询以利用索引、创建覆盖索引以消除回表、尽量避免全表扫描、临时表和文件排序。通过EXPLAIN检查并优化查询,可显著提升MySQL性能。

深入理解Mysql索引底层数据结构与算法

1266 阅读

索引是 MySQL 用来加速查询的有序数据结构,通过 B+Tree(或哈希)可把全表扫描降为几次磁盘 I/O。文章概述了二叉树、红黑树、哈希、B‑Tree 与 B+Tree 的特性,重点说明 B+Tree 只在叶节点存数据、非叶节点仅存键并采用双向链指针,从而提升区间访问效率。随后比较 InnoDB(聚集索引,表数据本身即 B+Tree)和 MyISAM(非聚集索引分离)的文件布局,阐述主键应为整型自增以保持索引稳定。进一步解释二级索引、联合索引的回表过程及左前缀原则,指出冗余索引的产生。最后说明 B 树与 B+Tree 的区别,并论证 MySQL 选用 B+Tree 能降低树高、减少 I/O,从而实现高效查询。

深入理解Mysql锁与事务隔离级别

1172 阅读

本文系统阐释了 MySQL 并发控制的核心机制,包括事务的 ACID 特性、脏读/脏写、不可重复读、幻读等并发问题,以及对应的四种事务隔离级别(READ‑UNCOMMITTED、READ‑COMMITTED、REPEATABLE‑READ、SERIALIZABLE)与 MVCC、间隙锁、Next‑Key 锁的实现原理。进一步比较了 MyISAM 的表锁与 InnoDB 的行锁、意向锁、共享/排他锁的行为差异,演示了不同隔离级别下的读写冲突和死锁情形,并提供了通过索引、锁粒度、系统状态变量等手段进行锁优化和死锁诊断的实用建议。

MySQL常见面试题总结

1154 阅读

文章系统梳理了MySQL面试常见知识点:索引原理及Hash、B+树区别,聚簇与非聚簇、联合索引顺序与使用场景;事务的ACID特性、四种隔离级别及锁机制;表结构设计要点,如主键选自增、NOT NULL、char/varchar 区别;InnoDB 与 MyISAM 的特性比较;binlog 三种格式、超大分页优化、慢查询分析与分表策略;存储过程优缺点及数据库三范式。

MySQL 主从复制与高可用面试问答

1086 阅读

文章介绍MySQL主从架构的概念、优势及应用,详细阐述基于 binlog 的复制流程及主从一致性保障,比较主主、主从、主备的区别,分析导致主从延迟的硬件、事务、网络等因素并给出相应优化措施,最后列举双机主备、一主一从、一主多从、MariaDB 多主集群以及基于中间件的高可用方案,帮助读者构建可靠的数据库高可用环境。

数据库事务里的脏写脏读不可重复读与幻读

1425 阅读

文章说明并发事务会产生脏写、脏读、不可重复读和幻读四类并发问题,并通过示例阐明其产生原因:未提交事务被其他事务读写导致数据回滚或结果不一致。随后介绍事务隔离机制和四种隔离级别(READ‑UNCOMMITTED、READ‑COMMITTED、REPEATABLE‑READ、SERIALIZABLE),说明各级别对上述现象的防护能力,并指出 MySQL 默认使用 REPEATABLE‑READ。