事务是具备原子性、一致性、隔离性、持久性(ACID)四特性的工作单元。类型包括扁平、带保存点、链、嵌套和分布式事务,InnoDB 支持前四种。原子与持久通过 undo/redo 日志实现,隔离依赖锁机制和 MVCC,默认 REPEATABLE READ 采用 Next‑Key 锁防止幻读。MySQL 使用 ROLLBACK 与 SAVEPOINT 完成回滚,但不原生支持嵌套事务。

InnoDB通过共享锁(S)和排他锁(X)实现行级并发控制;意向锁(IS/IX)在表级表明细粒度需求。锁算法包括Record、Gap和Next‑Key锁,其中Next‑Key用于防止幻读。死锁产生于事务相互等待,常用超时回滚和wait‑for‑graph检测并回滚undo最小事务。InnoDB不进行锁升级,行锁通过索引项加锁,间隙锁锁定记录间范围防止插入导致幻读。

MySQL优化是通过降低瓶颈、节省资源、提升响应速度实现的。重点在于合理使用索引(避免LIKE%开头、确保首列命中、OR条件两端均为索引),用JOIN取代低效子查询;插入时可禁用索引、唯一性检查、外键检查或批量INSERT/LOAD DATA INFILE 加速。面对千万级数据,先优化SQL和索引,再加缓存、读写分离、分区表、垂直或水平拆分。慢查询需打开日志、分析EXPLAIN,关注type、key、key_len、rows、Extra,消除filesort、temporary 等。EXPLAIN 用于查看查询计划,重点检查连接类型、选用索引、扫描行数及额外信息,以指导进一步调优。

本文概述了关系数据库设计的三大范式:1NF要求字段原子化,2NF消除非主属性对候选键的部分依赖,3NF进一步去除传递依赖以避免冗余。随后介绍了 MySQL 常用存储引擎,重点比较了事务安全的 InnoDB(行锁、外键、ACID)与不支持事务的 MyISAM(插入查询快)。接着说明了 redo log、undo log 与 binlog 的作用:redo 保证事务持久,undo 支持回滚与 MVCC,binlog 记录所有修改用于复制。随后阐述 InnoDB 实现 MVCC 的隐藏列、undo 版本链和 ReadView 机制,保障 REPEATABLE READ 隔离。最后简述 MySQL 主从复制流程:master 将变更写入 binlog,slave 通过 I/O 线程拉取并写入 relay log,SQL 线程重放日志实现数据同步,属于异步复制。

Spring Boot是基于 Spring 的脚手架框架,遵循“约定优于配置”,可快速构建独立运行的准生产级项目。通过 Starter 简化依赖管理,使用 @EnableAutoConfiguration 实现自动装配,核心注解如 @SpringBootApplication、@Conditional 系列控制 Bean 的实例化。启动时 SpringApplication.run 完成环境准备、容器创建、监听器通知等步骤,提供监控、云原生集成等优势。

Spring的核心是IoC与AOP,IoC通过DI(构造、setter、接口注入)实现对象解耦,AOP统一处理日志、事务等横切关注点。容器分为轻量的BeanFactory和功能更全的ApplicationContext,后者默认单例并支持事件、国际化等高级特性。Bean通过XML或注解(@Component、@Service、@Repository、@Controller、@Autowired、@Qualifier、@Scope、@PostConstruct、@PreDestroy)注册管理,作用域包括singleton、prototype、request、session、globalSession。Spring利用三级缓存解决单例setter循环依赖。@Autowired 按类型注入,@Resource 默认按名称注入。