加载中

MySQL

文章分类

浏览该分类下的所有文章

12 篇文章 1

一次OOM排查实录

日志在中途被截断,排查发现 Linux OOM Killer 杀掉了运行在 2 GB 机器上的 Java 进程。根因是未限制 JVM 堆、MySQL 默认占用大量内存且无 Swap。通过为三个 Spring‑Boot 项目统一‑Xms/Xmx(512 M、256 M)、调小 MySQL 参数(innodb_buffer_pool_size=128M、关闭 performance_schema、减小连接数等)并创建 2 GB swap,内存使用降至安全区,服务恢复稳定。文末给出排查命令和后续升级建议。

CentOS 7 安装 JDK 8、MySQL 8、Redis 6、Nginx保姆级教程

本文提供在 CentOS 7 上快速部署 JDK 8、MySQL 8、Redis 6 与 Nginx 的完整步骤。包括检查并卸载旧 Java、通过 yum 安装 OpenJDK 并配置 JAVA_HOME;备份并替换 yum 源后添加 MySQL 官方仓库、安装并启动服务、放通 3306 端口;安装 gcc 编译 Redis、修改配置、创建 systemd service 实现开机自启;安装 EPEL 后使用 yum 安装 Nginx、设置开机启动、检查状态并放通 HTTP/HTTPS 端口。每部分均给出关键命令与参考链接,适合作为新手保姆级教程。

MySQL 新增字段但 Java 实体未更新:全面解析与解决方案

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

代码优化的部分实例

文章通过多个实战案例阐述代码优化方法:① 用 String.format 或 StringBuilder 替代“+”拼接,提高可读性和效率;② 采用 BufferedInputStream/BufferedOutputStream 并使用缓冲数组,显著提升大文件 I/O 性能;③ 将循环中查询的集合转为 Map ,减少嵌套遍历,降低 CPU 开销;④ 使用完 ResultSet、PreparedStatement、Connection 等资源后及时 close,遵守正确的关闭顺序,防止资源泄漏;⑤ 引入数据库连接池(如 Druid、C3P0 等)复用连接,避免频繁创建/销毁导致的性能瓶颈和连接数上限问题。整体强调可读性、执行效率和资源管理的最佳实践。

Explain详解与索引最佳实践

EXPLAIN 用 EXPLAIN 关键字模拟优化器执行,返回查询计划而非结果。支持 EXPLAIN EXTENDED(显示优化信息并可通过 SHOW WARNINGS 查看改写语句)和 EXPLAIN PARTITIONS(显示访问的分区)。文章详细解释了每列含义:id、select_type、table、type(访问方式从 system、const、eq_ref、ref、range、index 到 ALL)、possible_keys、key、key_len、ref、rows、Extra(如 Using index、Using where、Using temporary、Using filesort 等)。通过示例表展示索引的使用情况及 key_len 计算规则。索引最佳实践包括:复合索引遵守最左前缀原则,避免在索引列上使用函数或隐式类型转换导致失效;范围查询应使用合适的索引;利用覆盖索引可显著提升查询效率。

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

索引是 MySQL 用于快速定位数据的有序结构,常见实现包括二叉树、红黑树、Hash、B‑Tree 与 B+Tree。InnoDB 采用聚集索引,数据本身以 B+Tree 组织,叶节点存完整记录;主键建议使用整数自增,以保证唯一、占用小、插入稳定。非主键(辅助)索引只保存索引键和主键值,查询时需先定位辅助索引再“回表”到主键树获取完整行。联合索引遵循左前缀原则,省去冗余单列索引。MyISAM 则使用非聚集索引,索引文件与数据文件分离。相较于 B‑Tree,B+Tree 只在叶子存数据且叶子链式相连,提升了范围查询和磁盘 I/O 效率,是 MySQL 默认的底层索引结构。

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

本文系统阐述了 MySQL 并发事务导致的脏写、脏读、不可重复读、幻读等一致性问题,介绍了事务的 ACID 特性及四种隔离级别(read‑uncommitted、read‑committed、repeatable‑read、serializable)及其实现原理,重点分析了表锁、行锁、意向锁、间隙锁和临键锁的作用与区别,比较了 InnoDB 行级锁与 MyISAM 表级锁的性能影响,并提供了锁状态查询、死锁检测与排查方法以及通过索引、缩小锁范围等实际的锁优化建议。

MySQL常见面试题总结

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

面试现场【MySQL篇】

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

Java面试必会知识点

抱歉,我无法直接访问该链接中的内容。请您把文章的正文粘贴在这里,我会根据提供的文本为您生成符合要求的摘要。

面试现场【综合篇】

面试现场综合篇提供了一套完整的技术面试指南,涵盖项目亮点、代码设计、零拷贝实现方式、五大IO模型及NIO与多路复用差异、Future阻塞获取原理、ReentrantLock 与 synchronized 的区别与实现、AQS、乐观/悲观锁、Paxos 协议、B+树特性、TCP 拥塞控制、JVM 实践、分库分表弊端、分布式事务(包括 TCC)以及 RocketMQ 的可靠性保障等热点话题,并配以原理解析和实现要点,帮助面试者系统复习核心概念与面试要点。

脏写、脏读、不可重复读和幻读

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