Skip to content

关系型数据库 ​

关系型数据库通过表、行、列来组织数据,支持 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 注入防护、参数化查询、事务处理
  • 性能: 索引使用、查询优化、批量操作
  • 可维护性: 命名规范、文档完整、版本控制