DBA 实战手记 (薛晓刚) -- 综合类数据库技能经验类书籍介绍_数据库

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信息类网站文章翻译,等,希望能和您共同发展。