DBA的书籍大致分为几种
1 专业技术类书籍
2 大咖分享工作经验分享
3 以上两类以外 如 盖老师最近新发的 《数据库简史》(属于宏观类的数据库业界的巨作)
今天咱们要说的是第二类书籍,薛晓刚,薛大师的 DBA 实战手记,为了满足读者的好奇心,咱们把目录给大家展示一下。
其实第一种和第二种书籍最大的不同点,在于知识的输出形式的不同,第一类书籍具有技术的专业性,第二类书籍是数据库工作者在多年的工作中,将自己的工作经验和工作方式和业内的同学进行分享的类型。
有时候,工作一段时间,或出入职场,对于本质工作会不清晰,或恍惚,那么读一读,前人的工作经验的总结和一些工作的思路,是让自己重新走上清晰的职场道路的一种方式。
更重要的是,如果在阅读书中的内容后,有新的想法和一些问题,还可以在薛老师有时间的情况下,在本群和薛老师近距离的沟通。
所以如果在工作中遇到一些屏障的时候,可以在这本书里面,找找感觉。
第1章 漫谈数据库
1 什么是数据库
1.2 数据库发展史
- 1.2.1 国外数据库的历史
- 1.2.2 国内数据库的历史
1.3 数据库的主要分类
- 1.3.1 关系数据库:传统交易数据库
- 1.3.2 键值数据库:基于KV键值对的内存数据库
- 1.3.3 列式数据库:列式存储的分析型数据库
- 1.3.4 文档型数据库:松散型数据结构的数据库
- 1.3.5 图数据库:用于社交图谱的数据库
- 1.3.6 时序数据库:适用于物联网场景的数据库
- 1.3.7 搜索引擎数据库:全文索引的数据库
- 1.3.8 多模数据库:具有多种数据库模式的融合数据库
- 1.3.9 最容易忽视的数据库—移动端数据库
1.4 数据库应用的发展趋势
- 1.4.1 国外数据库应用发展趋势
- 1.4.2 国内数据库应用发展趋势
1.5 数据库与新兴数字技术
- 1.5.1 数据库与大数据技术
- 1.5.2 数据库的延伸:区块链、物联网
1.6 与数据库长相厮守的DBA
- 1.6.1 DBA的定义与内涵
- 1.6.2 DBA的工作职责
- 1.6.3 DBA需要具备的能力
- 1.6.4 DBA的价值
- 1.6.5 DBA是可以做一辈子的职业
第2章 如何提升数据库性能
2.1 通过索引提升性能
- 2.1.1 索引的概念及原理
- 2.1.2 索引的种类
- 2.1.3 规避索引使用的误区
- 2.1.4 通过索引实现海量数据中的高效查询
- 2.1.5 自动化索引:数据库自治的趋势
2.2 通过SQL优化提升性能
- 2.2.1 SQL优化实现高速执行任务
- 2.2.2 慎用分页有效提升性能
- 2.2.3 从认知上杜绝低效SQL
2.3 避免数据库对象设计失误
- 2.3.1 避免不必要的多表关联导致的低效查询
- 2.3.2 避免动态计算结果没有单独存储导致的低效查询
- 2.3.3 避免没有明确需求查询条件导致的低效查询
- 2.3.4 避免过度分表
2.4 从识别需求的合理性提升性能
- 2.4.1 拒绝无效需求
- 2.4.2 正确理解开发需求
- 2.4.3 拒绝不合理的需求
- 2.4.4 引导业务改善需求
2.5 减少IO操作提升数据库性能
- 2.5.1 正确认识数据库的性能
- 2.5.2 减少IO交互—批量写入数据(MySQL)
- 2.5.3 减少IO交互—批量写入数据(Oracle)
- 2.5.4 减少IO交互—批量写入数据(PostgreSQL)
- 2.5.5 精简架构
第3章 如何运维好数据库
3.1 运维好数据库的关键:处理故障
- 3.1.1 常见的数据库故障类型
- 3.1.2 数据库故障的危害
3.2 分析处理数据库故障的关键点
- 3.2.1 分析数据库故障的主要原因—SQL
- 3.2.2 分析SQL的主要问题—处理速度慢
- 3.2.3 分析数据库参数对数据库的影响
- 3.2.4 分析硬件短板带来的问题—IO吞吐能力与CPU计算能力
3.3 数据库故障处理的典型案例分析
- 3.3.1 一次Elasticsearch误删除的故障分析
- 3.3.2 一次配置文件丢失导致的MySQL数据库故障分析
- 3.3.3 一次In-Memory丢失引起的故障分析
- 3.3.4 一次疑似分区查询异常的故障分析
- 3.3.5 一次数据库归档导致的故障分析
- 3.3.6 一次数据库binlog写入失败的故障分析
- 3.3.7 一次两表关联导致的故障分析
- 3.3.8 数据库连接数与连接复用不当的故障分析
- 3.3.9 一次数据库CPU使用率100%的故障分析
- 3.3.10 一次数据库索引不当引起的故障分析
- 3.3.11 一次数据库主从延迟过大的故障分析
- 3.3.12 一次数据库主从不一致的故障分析
- 3.3.13 一次Redis数据库无法启动的故障分析
- 3.3.14 一次MySQL数据库数据类型不恰当导致的故障
- 3.3.15 一次数据库全表查询的优化
第4章 如何进行数据库设计 、
- 4.1 数据库都有哪些架构
- 4.1.1 集中式架构
- 4.1.2 分布式架构
- 4.1.3 数据库内部的体系架构
- 4.1.4 “烟囱”式的数据库架构
- 4.1.5 独立业务线的数据库架构
- 4.2 根据实际场景选择数据库架构
- 4.3 五个维度谈数据库选型
- 4.3.1 从业务场景特征维度
- 4.3.2 从数据规模大小维度
- 4.3.3 从用户自身开发团队能力维度
- 4.3.4 从用户自身运维团队能力维度
- 4.3.5 从公司管理能力维度
- 4.4 数据库拆分的利与弊
- 4.4.1 数据库拆分的背景
- 4.4.2 数据库拆分的三大问题:一致性、数据关联、数据同步
- 4.4.3 分表带来的问题:一致性、聚合、排序、扩缩容
- 4.5 如何看待数据库的合并
- 4.5.1 为何要做数据库合并
- 4.5.2 数据库合并的意义:降成本、提升稳定性
- 4.5.3 数据库合并带来的问题:鸡蛋放在一个篮子里
- 4.5.4 数据库合并的前提:高质量SQL、硬件的进步、稳定的基础环境
- 4.6 CAP理论与分布式数据库
- 4.6.1 CAP理论概述
- 4.6.2 CAP理论的延展
- 4.6.3 分库分表不是分布式数据库
- 4.7 如何看待数据库与中间件
- 4.7.1 数据库与中间件:上下游的“难兄难弟”
- 4.7.2 中间件内存溢出的原因:源头还是数据库
- 4.7.3 适当减少数据库与中间件的数量:避免不必要的故障节点
第5章 如何做好数据库之间的数据同步
- 5.1 数据同步的作用
- 5.1.1 实现数据传输
- 5.1.2 实现数据汇聚
- 5.1.3 实现数据迁移
- 5.2 数据库同步的分类
- 5.2.1 同构数据库的同步
- 5.2.2 异构数据库的同步
- 5.2.3 数据库到消息队列的同步
- 5.2.4 数据库到 Hadoop 的数据同步
5.3 同构数据库数据同步的示例
- 5.3.1 使用 dblink 实现 Oracle 数据库之间的数据同步 - 5.3.2 使用物化视图实现远程 Oracle 数据库之间的数据同步
- 5.3.3 使用插件实现 MySQL 数据库之间的数据同步
- 5.3.4 利用数据同步实现 MySQL 的
- 5.3.5 采用多源复制的功能实现 MySQL 数据库之间的数据同步
- 5.3.6 采用主从模式实现 PostgreSQL 主从数据同步
- 5.4 异构数据库同步的实例—基于 OGG
- 5.4.1 CDC 简介
- 5.4.2 OGG 概述
- 5.4.3 OGG 微服务版的安装部署
- 5.4.4 使用 OGG for Oracle 实现 Oracle 数据库之间的数据同步
- 5.4.5 使用 OGG for MySQL 实现 MySQL 与异构数据库的同步
- 5.4.6 使用 OGG for BigData 实现大数据组件与异构数据库的数据同步
第6章 认识 HTAP 技术
- 6.1 HTAP 的概念及其价值
- 6.1.1 HTAP:混合事务/分析处理
- 6.1.2 HTAP 的价值
- 6.2 HTAP 的几种实现方式
- 6.2.1 垂直方向的实现
- 6.2.2 水平方向的实现:以 MySQL、TiDB 数据库为例
- 6.2.3 其他类型数据库的实现方式
第7章 认识数据库的功能原理
- 7.1 优化器—基于统计学原理
- 7.2 数据库的查询—火山模型
- 7.3 数据库 AI—向量化
- 7.4 编译执行
第8章 认识数据库中的数学(逻辑与算法)
- 8.1 数据库中的典型逻辑与算法
- 8.1.1 从斐波那契数列到数据分析
- 8.1.2 增加数据维度处理—减少关联
- 8.1.3 多表关联算法—一对多与多对多
- 8.1.4 排除处理算法—笛卡儿积
- 8.1.5 函数算法—对 SQL 的影响
- 8.2 动态规划法在数据库中的应用
- 8.2.1 动态规划原理 1:爬楼梯
- 8.2.2 动态规划原理 2:背包问题
- 8.2.3 动态规划的五部曲
- 8.3 数据库开发中的逻辑思维
- 8.3.1 元数据的空与非空
- 8.3.2 优化器处理极值和极限:加速查询速度
- 8.3.3 并发处理热点的逻辑:避免锁
- 8.3.4 减库存的逻辑:从设计出发防止超卖
第9章 DBA的日常:数据库管理及开发的最佳实践
- 9.1 七个针对数据库特性的最佳实践
- 9.1.1 Oracle的DML重定向
- 9.1.2 Oracle的资源隔离
- 9.1.3 MySQL的延迟复制—挽救误删除
- 9.1.4 PostgreSQL的延迟复制
- 9.1.5 数据库对于磁盘IO吞吐的要求
- 9.2 面向执行器和优化器的最佳实践
- 9.2.1 主流数据库的事务异常处理机制对比(MySQL、PostgreSQL、Oracle)
- 9.2.2 MySQL和达梦两个数据库优化器的对比
- 9.2.3 SQL语句的解析过程分析
- 9.2.4 优化器的多表关联
- 9.2.5 SQL使用in进行子查询
- 9.2.6 数据归档和数据迁移
- 9.3 数据库的复制(克隆)与高可用受控切换的最佳实践
- 9.3.1 Oracle的PDB数据库克隆
- 9.3.2 MySQL克隆的关键点
- 9.3.3 MySQL的MGR架构以及受控切换
- 9.3.4 PostgreSQL的高可用切换
- 9.3.5 Redis的高可用切换
- 9.4 三个SQL编写的最佳实践
- 9.4.1 关于MyBatis开发框架使用绑定变量的实践
- 9.4.2 使用exists的SQL语句的改写9.4.3 设计上出发减少SQL的标量子查询
- 9.5 时序数据库使用的最佳实践
- 9.5.1 时序数据库的数据库表设计
- 9.5.2 时序数据库的数据分析
- 附录 DBA杂谈
-----
Austindatabases 公众号,主要围绕数据库技术(PostgreSQL, MySQL, Mongodb, Redis, SqlServer,PolarDB, Oceanbase 等)和职业发展,国外数据库大会音译,国外大型IT信息类网站文章翻译,等,希望能和您共同发展。