关系型数据库
关系型数据库通过表、行、列来组织数据,支持 ACID 事务和复杂查询。是企业应用最常用的数据存储方式。
数据库基础
ACID 特性
- 原子性 (Atomicity): 事务要么全部成功、要么全部失败
- 一致性 (Consistency): 数据始终处于一致状态
- 隔离性 (Isolation): 事务相互隔离、互不影响
- 持久性 (Durability): 事务提交后数据永久保存
关系模型
- 表: 行的集合、列代表属性、主键唯一标识
- 关系: 一对一、一对多、多对多、自我关系
- 范式: 第一范式、第二范式、第三范式、BCNF
常见数据库
MySQL
- 特性: 开源、轻量级、LAMP 标准组件
- 存储引擎: InnoDB、MyISAM、性能差异
- 版本: MySQL 5.7、8.0、新特性和改进
- 分支: MariaDB、Percona、优化版本
PostgreSQL
- 特性: 功能完整、稳定可靠、高级特性丰富
- 扩展: 全文搜索、JSON、XML、PostGIS
- MVCC: 多版本并发控制、高并发支持
- 性能: 复杂查询优化、执行计划、索引类型
其他数据库
- Oracle: 企业级、功能完整、商业支持
- SQL Server: Windows 集成、Business Intelligence
- SQLite: 嵌入式、文件本地、轻量级应用
SQL 语言
基础查询
- SELECT: 列选择、表达式、DISTINCT、LIMIT
- WHERE: 条件过滤、组合条件、NULL 检查
- ORDER BY: 排序字段、升序降序、多列排序
- GROUP BY: 分组聚合、HAVING 过滤
高级查询
- JOIN: INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN
- 子查询: 标量子查询、行子查询、表子查询
- 通用表表达式: WITH 语句、递归 CTE、复杂查询
- 窗口函数: OVER、PARTITION BY、ROW_NUMBER、RANK
数据修改
- INSERT: 单行插入、批量插入、INSERT SELECT
- UPDATE: 条件更新、多列更新、全表更新
- DELETE: 条件删除、级联删除、删除全表
索引优化
索引类型
- B-Tree 索引: 默认索引、范围查询、排序快速
- Hash 索引: 精确匹配、内存表、等值查询
- 全文索引: 文本搜索、模糊查询、倒排索引
- GiST/GIN: PostgreSQL 专有、复杂查询、自定义类型
索引优化
- 创建策略: 选择列、复合索引、覆盖索引
- 维护: 索引碎片整理、重建、删除未使用
- 监控: 索引使用情况、慢查询分析、执行计划
查询优化
- 执行计划: EXPLAIN、成本分析、索引使用
- 查询改写: 避免全表扫描、避免函数调用
- 统计信息: 直方图、行数估算、查询优化
事务处理
隔离级别
- Read Uncommitted: 最低隔离、脏读、可见
- Read Committed: 防止脏读、幻读可能
- Repeatable Read: MySQL 默认、可重复读、幻读存在
- Serializable: 最高隔离、串行化、性能最低
并发控制
- 锁机制: 行锁、表锁、谓词锁、间隙锁
- 死锁: 死锁产生、死锁检测、死锁破除
- MVCC: 版本控制、快照隔离、读写分离
数据持久化
WAL (Write-Ahead Logging)
- 原理: 先写日志、再写数据、保证持久性
- 性能: 性能权衡、批量提交、同步方式
检查点
- 作用: 数据一致性、恢复时间、磁盘空间
- 流程: Dirty page 刷盘、LSN 记录、日志回收
恢复机制
- 崩溃恢复: 前滚、回滚、两阶段提交
- 备份恢复: 全量备份、增量备份、时间点恢复
架构与扩展
单机优化
- 配置参数: 内存分配、缓存大小、连接数
- 存储优化: SSD、RAID、存储架构
- 网络: 本地连接、跨域连接、带宽限制
主从复制
- 同步复制: 主从同步、延迟控制、一致性保证
- 异步复制: 性能优先、可能不一致、故障恢复
- 配置: Binlog、Masterinfo、Relaylog
分布式扩展
- 分库分表: Sharding Key、一致性 Hash、中间件
- 分片策略: 范围分片、Hash 分片、目录分片
- 跨分片查询: 多片查询、结果聚合、分布式事务
备份与恢复
备份策略
- 全量备份: mysqldump、xtrabackup、物理备份
- 增量备份: Binlog 备份、差异备份、条件备份
- 备份验证: 备份测试、恢复测试、完整性检查
灾难恢复
- RTO: 恢复时间目标、快速恢复机制
- RPO: 恢复点目标、数据丢失最小化
- 故障转移: 自动故障转移、手动介入、验证机制
监控与维护
性能监控
- 关键指标: QPS、TPS、响应时间、慢查询
- 监控工具: Prometheus、Grafana、MySQL Exporter
- 告警阈值: CPU、内存、磁盘、连接数
日志分析
- 慢查询日志: 查询时间、IO 操作、优化建议
- 错误日志: 启动错误、运行时错误、告警信息
- 通用日志: 所有操作、调试用、开销大
应用开发
ORM 框架
- SQL: 编写映射、自动生成、类型安全
- 操作: 查询、创建、更新、删除
- 关联: 一对多、多对多关系、级联操作
- 缓存: N+1 问题、预加载、查询优化
最佳实践
- 连接管理: 连接池、连接复用、超时设置
- SQL 编写: SQL 注入防护、参数化查询、事务处理
- 性能: 索引使用、查询优化、批量操作
- 可维护性: 命名规范、文档完整、版本控制