返回 随笔记录
随笔记录

八、数据库技术

博主
大约 9 分钟

八、数据库技术

范围:MySQL、PostgreSQL、SQL进阶、高可用、分库分表、调优 知识点数量:225项 返回总目录


8.1 MySQL

8.1.1 存储引擎

  • 800. InnoDB特性 - 掌握事务、行锁、外键,理解聚簇索引
  • 801. MyISAM特性 - 掌握全文索引、表锁,理解已废弃
  • 802. 引擎选择 - 掌握适用场景对比,理解InnoDB为默认
  • 803. 表空间 - 掌握共享和独立表空间,理解.ibd文件
  • 804. 页结构 - 掌握16KB页和行格式,理解Compact/Dynamic
  • 805. Redo Log - 掌握物理日志,理解WAL技术
  • 806. Undo Log - 掌握逻辑日志和MVCC,理解回滚段
  • 807. Binlog - 掌握二进制日志,理解STATEMENT/ROW/MIXED
  • 808. Doublewrite Buffer - 掌握双写缓冲,理解页损坏防护
  • 809. Change Buffer - 掌握变更缓冲,理解二级索引优化
  • 810. Adaptive Hash Index - 掌握自适应哈希,理解自动创建

8.1.2 索引

  • 811. B+树索引 - 掌握聚簇和二级索引,理解叶子节点链表
  • 812. 联合索引 - 掌握最左前缀原则,理解索引下推
  • 813. 覆盖索引 - 掌握避免回表,理解Extra: Using index
  • 814. 索引条件下推 - 掌握ICP优化,理解Server层下推
  • 815. 索引失效场景 - 掌握函数、范围、隐式转换、OR条件
  • 816. 全文索引 - 掌握InnoDB全文,理解分词和相关性
  • 817. 哈希索引 - 掌握自适应哈希,理解InnoDB自动优化
  • 818. 前缀索引 - 掌握长字符串索引,理解选择性计算
  • 819. 索引选择性 - 掌握COUNT(DISTINCT)/COUNT(*),理解高选择性
  • 820. 索引设计原则 - 掌握高频查询优先,理解索引维护成本
  • 821. 降序索引 - 掌握MySQL 8.0 DESC索引
  • 822. 不可见索引 - 掌握INVISIBLE,理解索引测试

8.1.3 事务与锁

  • 823. ACID特性 - 掌握原子、一致、隔离、持久
  • 824. 隔离级别 - 掌握RU/RC/RR/Serializable
  • 825. MVCC原理 - 掌握Read View和隐藏列(trx_id、roll_pointer)
  • 826. 行锁 - 掌握Record Lock、Gap Lock、Next-Key Lock
  • 827. Next-Key Lock - 掌握间隙锁+记录锁,理解幻读防护
  • 828. 死锁检测 - 掌握等待图,理解innodb_deadlock_detect
  • 829. 乐观锁实现 - 掌握版本号,理解CAS思想
  • 830. 悲观锁实现 - 掌握SELECT ... FOR UPDATE
  • 831. 表锁 - 掌握LOCK TABLES,理解MDL元数据锁
  • 832. 意向锁 - 掌握IS/IX锁,理解表级意图
  • 833. 自增锁 - 掌握AUTO-INC锁,理解innodb_autoinc_lock_mode
  • 834. 锁等待超时 - 掌握innodb_lock_wait_timeout

8.1.4 查询优化

  • 835. EXPLAIN - 掌握执行计划分析,理解各列含义
  • 836. 访问类型 - 掌握ALL/index/range/ref/eq_ref/const/system
  • 837. Extra列 - 掌握Using filesort、Using temporary、Using index
  • 838. 慢查询日志 - 掌握slow_query_log,理解long_query_time
  • 839. Profiling - 掌握SQL剖析,理解SHOW PROFILE
  • 840. 优化器trace - 掌握optimizer_trace,理解执行计划生成
  • 841. 索引优化 - 掌握索引设计和选择,理解覆盖索引
  • 842. 直方图 - 掌握COLUMN_STATISTICS,理解数据分布
  • 843. 优化器提示 - 掌握USE INDEX/FORCE INDEX/IGNORE INDEX
  • 844. 执行计划缓存 - 掌握Prepared Statement缓存
  • 845. 索引合并 - 掌握Intersection/Union/Sort-Union
  • 846. MRR优化 - 掌握Multi-Range Read,理解顺序IO

8.2 SQL进阶

8.2.1 查询技术

  • 847. 子查询 - 掌握相关和不相关子查询,理解EXISTS/IN
  • 848. 窗口函数 - 掌握ROW_NUMBER、RANK、DENSE_RANK、LEAD/LAG
  • 849. CTE (WITH) - 掌握公共表表达式,理解可读性提升
  • 850. 递归查询 - 掌握树形数据查询,理解CTE递归
  • 851. GROUP BY优化 - 掌握聚合优化,理解ONLY_FULL_GROUP_BY
  • 852. JOIN优化 - 掌握嵌套循环和哈希连接,理解驱动表选择
  • 853. PIVOT行转列 - 掌握CASE WHEN实现
  • 854. UNPIVOT列转行 - 掌握UNION ALL实现
  • 855. 排名查询 - 掌握Top N per Group
  • 856. 连续日期统计 - 掌握日历表和LEFT JOIN

8.2.2 存储过程与函数

  • 857. 存储过程 - 掌握PROCEDURE语法,理解IN/OUT/INOUT
  • 858. 自定义函数 - 掌握FUNCTION语法,理解DETERMINISTIC
  • 859. 触发器 - 掌握BEFORE/AFTER触发,理解NEW/OLD
  • 860. 游标 - 掌握结果集遍历,理解OPEN/FETCH/CLOSE
  • 861. 动态SQL - 掌握PREPARE/EXECUTE,理解SQL注入防护
  • 862. 错误处理 - 掌握DECLARE HANDLER,理解EXIT/CONTINUE
  • 863. 事件调度器 - 掌握Event Scheduler,理解定时任务

8.3 PostgreSQL

8.3.1 核心特性

  • 864. MVCC实现 - 掌握多版本原理,理解XID和xmin/xmax
  • 865. 数据类型 - 掌握JSON、数组、范围、UUID
  • 866. 全文搜索 - 掌握tsvector和tsquery,理解分词
  • 867. 窗口函数 - 掌握PG扩展,理解FILTER子句
  • 868. CTE和递归 - 掌握WITH RECURSIVE
  • 869. 索引类型 - 掌握GIN、GiST、BRIN、SP-GiST
  • 870. 表达式索引 - 掌握函数索引
  • 871. 部分索引 - 掌握WHERE条件索引
  • 872. LATERAL JOIN - 掌握横向子查询
  • 873. RETURNING - 掌握插入/更新/删除返回值

8.3.2 高级功能

  • 874. 分区表 - 掌握声明式分区,理解Range/List/Hash
  • 875. 并行查询 - 掌握并行扫描,理解max_parallel_workers
  • 876. JSON操作 - 掌握JSONB,理解索引和查询
  • 877. 自定义类型 - 掌握COMPOSITE和ENUM
  • 878. 扩展 - 掌握PostGIS、pg_trgm等
  • 879. 逻辑复制 - 掌握WAL解析,理解Publication/Subscription
  • 880. FDW - 掌握外部数据包装器,理解跨库查询
  • 881. 物化视图 - 掌握REFRESH MATERIALIZED VIEW
  • 882. VACUUM - 掌握垃圾回收,理解AutoVacuum
  • 883. 连接池 - 掌握PgBouncer,理解连接复用

8.4 数据库架构

8.4.1 高可用

  • 884. 主从复制 - 掌握binlog复制,理解异步/半同步
  • 885. 半同步复制 - 掌握Ack机制,理解rpl_semi_sync_master
  • 886. GTID复制 - 掌握全局事务ID,理解简化复制拓扑
  • 887. MHA高可用 - 掌握自动故障切换,理解VIP漂移
  • 888. MySQL Group Replication - 掌握MGR,理解Paxos变种
  • 889. 读写分离 - 掌握ProxySQL,理解路由规则
  • 890. 主从延迟 - 掌握Seconds_Behind_Master,理解延迟原因
  • 891. 并行复制 - 掌握MTS(Multi-Threaded Slave)
  • 892. 在线DDL - 掌握ALGORITHM=INPLACE,理解gh-ost
  • 893. 故障切换 - 掌握Orchestrator,理解拓扑管理

8.4.2 分库分表

  • 894. 垂直拆分 - 掌握按业务拆分,理解服务化
  • 895. 水平拆分 - 掌握按字段拆分,理解分片键选择
  • 896. 分片策略 - 掌握Hash、Range、List分片
  • 897. ShardingSphere - 掌握Sharding-JDBC和Sharding-Proxy
  • 898. 分布式主键 - 掌握Snowflake,理解时钟回拨处理
  • 899. 跨库JOIN - 掌握绑定表,理解应用层组装
  • 900. 数据迁移 - 掌握双写和校验,理解灰度切换
  • 901. 扩容方案 - 掌握在线扩容,理解一致性Hash
  • 902. 分片键设计 - 掌握高频查询字段,理解数据倾斜
  • 903. 全局序列 - 掌握号段模式、Redis INCR

8.4.3 备份恢复

  • 904. 逻辑备份 - 掌握mysqldump,理解单线程慢
  • 905. 物理备份 - 掌握XtraBackup,理解热备份
  • 906. 增量备份 - 掌握binlog备份,理解基于LSN
  • 907. PITR恢复 - 掌握时间点恢复,理解全量+增量
  • 908. 备份策略 - 掌握全量+增量+binlog
  • 909. 数据归档 - 掌握历史数据迁移,理解分区表归档
  • 910. 备份验证 - 掌握定期恢复测试
  • 911. 克隆插件 - 掌握MySQL Clone Plugin

8.5 数据库调优

8.5.1 配置调优

  • 912. innodb_buffer_pool_size - 掌握内存配置,理解70-80%物理内存
  • 913. innodb_log_file_size - 掌握Redo日志大小,理解大事务
  • 914. max_connections - 掌握连接数配置,理解连接池配合
  • 915. query_cache - 掌握查询缓存(8.0移除),理解替代方案
  • 916. thread_cache_size - 掌握线程缓存,理解连接复用
  • 917. tmp_table_size - 掌握临时表大小,理解内存临时表
  • 918. sort_buffer_size - 掌握排序缓冲,理解会话级分配
  • 919. join_buffer_size - 掌握JOIN缓冲,理解Block Nested Loop
  • 920. 参数优化原则 - 掌握调优方法论,理解基准测试
  • 921. innodb_flush_log_at_trx_commit - 掌握刷盘策略,理解1/2/0

8.5.2 性能诊断

  • 922. 性能模式 - 掌握Performance Schema,理解instrument
  • 923. sys schema - 掌握诊断视图,理解快捷查询
  • 924. 锁监控 - 掌握锁等待分析,理解information_schema
  • 925. 慢查询分析 - 掌握慢日志分析,理解pt-query-digest
  • 926. 连接池监控 - 掌握连接使用率,理解连接泄漏
  • 927. 容量规划 - 掌握增长预测,理解存储计算分离
  • 928. SQL审核 - 掌握SOAR/inception,理解规范检查
  • 929. 基线监控 - 掌握QPS/TPS基线,理解异常检测
  • 930. 表碎片整理 - 掌握OPTIMIZE TABLE,理解重建表

进度统计

  • 领域:数据库技术
  • 知识点总数:225项
  • 已完成:0项
  • 待完成:225项

实战项目建议

  • 项目1:慢查询优化实战 - 分析真实慢查询日志,使用EXPLAIN优化,对比优化前后性能
  • 项目2:MySQL主从搭建 - 搭建一主两从复制架构,配置半同步复制,测试故障切换
  • 项目3:分库分表实践 - 使用ShardingSphere实现1000万订单表的分库分表

常见面试问题

  • MySQL索引为什么用B+树而不是B树/Hash?
  • 什么是MVCC?Read View是如何生成的?
  • 什么是幻读?MySQL RR级别如何解决的?
  • 一条SQL的执行过程是怎样的?
  • 如何进行SQL优化?EXPLAIN各列含义?

推荐学习资源

  • 书籍:《MySQL技术内幕:InnoDB存储引擎》《高性能MySQL》《MySQL是怎样运行的》
  • 视频:极客时间《MySQL实战45讲》《MySQL调优实战》
  • 工具:pt-query-digest、sys schema、Performance Schema

返回总目录

知识点测试

读完文章了?来测试一下你对知识点的掌握程度吧!

评论区

使用 GitHub 账号登录后即可发表评论,支持 Markdown 格式。

如果评论系统无法加载,请确保:

  • 您的网络可以访问 GitHub
  • giscus GitHub App 已安装到仓库
  • 仓库已启用 Discussions 功能