返回 随笔记录
八、数据库技术
博主
大约 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 功能