事务是数据库的原子操作单元,必须满足ACID(原子性、一致性、隔离性、持久性)。常见类型包括扁平事务、带保存点的扁平事务、链事务、嵌套事务和分布式事务。MySQL InnoDB 支持前四种并通过 undo log、redo log、Buffer Pool、MVCC 与锁机制实现 ACID,其中原子性依赖 undo log,持久性依赖 redo log 的预写式日志,隔离性通过行锁、间隙锁(Next‑Key Lock)和多版本并发控制实现,可重复读(默认)能防止脏读、不可重复读和幻读。MySQL 不原生支持嵌套事务,可用保存点模拟。事务回滚使用 ROLLBACK 或 ROLLBACK TO SAVEPOINT。

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

MySQL优化涉及系统、表结构、索引和SQL等多个层面。查询时应合理使用索引,避免前缀% LIKE、正确建多列索引、用 JOIN 替代子查询;插入可通过禁用索引、唯一性检查、批量 INSERT 或 LOAD DATA 提升速度。面对千万级大表,先优化 SQL 与索引,再加缓存、读写分离、分区或垂直/水平拆分。慢查询需打开慢查询日志,用 EXPLAIN 分析并改进索引、结构、分页等。使用 EXPLAIN 时重点关注 type、key、key_len、rows、Extra,防止出现 Using filesort、Using temporary 等低效情况。

本文先说明三范式:1NF要求字段原子化,2NF消除非键对候选键的部分依赖,3NF去除传递依赖,满足3NF可避免冗余。再简述MySQL两大引擎InnoDB(事务)和MyISAM(高查询)。随后介绍redo log保事务持久性、undo log用于回滚、binlog记录修改。InnoDB MVCC基于隐藏列、undo 版本链。最后阐述主从复制:主库写 binlog→从库拉至 relay log 并重放,实现同步。

Spring Boot 是基于 Spring 的脚手架框架,采用“约定优于配置”理念,使项目能够快速、独立运行并具备生产级特性。它通过提供大量 Starter(起步依赖)简化 Maven 依赖管理,只需声明功能即可自动引入所需库。启动时,Application 类的 main 方法调用 SpringApplication.run,完成环境准备、容器创建、Banner 打印、监听器通知等步骤。自动装配依赖 @EnableAutoConfiguration、@Import 等注解,结合 spring.factories 中的 AutoConfiguration 类和 @Conditional 系列条件注解,在满足类路径、Bean、属性等条件时自动实例化并注入相应 Bean,实现零配置集成。Spring Boot 的优势包括快速构建、无容器部署、运行时监控以及与云平台天然兼容。

Spring的核心是IoC和AOP,IoC通过DI实现,由BeanFactory或ApplicationContext容器管理Bean。容器提供singleton、prototype、request、session等作用域,并支持Bean的创建、初始化、销毁生命周期。Spring使用三级缓存解决单例循环依赖。常用注解包括@Component系列、@Autowired/@Qualifier、@Resource、@Scope、@PostConstruct/@PreDestroy等,用于声明Bean、注入依赖、控制作用域和生命周期。BeanFactory是基础工厂,已被功能更强的ApplicationContext取代。