DBA“老兵”薛晓刚及其团队奉献给广大同仁的数据库实践经验集,内容涵盖数据库性能调优、故障处理、架构设计、数据同步、SQL算法等诸多内容,解读广大数据库从业者普遍关心的技术问题。 本书由盖国强、白鳝(徐戟)、贺仁龙倾情作序,周正中(德哥)、侯圣文、耿航、吴洋鼎力推荐。 全书采用全彩印刷,阅读体验佳;全书内容丰富,通过剖析众多真实案例,解读原理、分享技巧、提供思路,内容具备较强的启发性和指导性。
售 价:¥
纸质售价:¥121.70购买纸书
6.7
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐

序言1
序言2
序言3
前言
第1章 漫谈数据库
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.关系数据库兼容文档型数据库特性
2.关系数据库兼容KV型数据库的特性
3.关系数据库兼容图数据库的特性
1.3.9 最容易忽视的数据库——移动端数据库
1.移动端数据库的特点
2.移动端数据库与服务端数据库区别
3.移动端数据库的前景
1.4 数据库应用的发展趋势
1.4.1 国外数据库应用发展趋势
1.4.2 国内数据库应用发展趋势
1.趋势一:多模数据库实现一库多用
2.趋势二:统一框架支撑分析与事务混合处理
3.趋势三:运用AI实现管理自治
4.趋势四:充分利用新兴硬件
5.趋势五:与云基础设施深度结合
6.趋势六:隐私计算技术助力安全能力提升
7.趋势七:区块链数据库辅助数据存证溯源
1.5 数据库与新兴数字技术
1.5.1 数据库与大数据技术
1.5.2 数据库的延伸:区块链、物联网
1.区块链
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 索引的概念及原理
1.索引的概念
2.索引的原理
3.索引的容量
4.索引的层级
5.索引的效率
2.1.2 索引的种类
1.B-树索引
2.唯一索引
3.主键索引
4.复合索引
5.函数索引
6.位图索引
7.部分索引
8.全文索引
9.反转索引
2.1.3 规避索引使用的误区
2.1.4 通过索引实现海量数据中的高效查询
2.1.5 自动化索引:数据库自治的趋势
2.2 通过SQL优化提升性能
2.2.1 SQL优化实现高速执行任务
1.SQL优化快速(实时)生成报表
2.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)
1.准备工作:安装开发工具IntelliJ IDEA
2.编写代码:声明和配置
3.数据库准备:建立表
4.代码调试
2.5.3 减少IO交互——批量写入数据(Oracle)
2.5.4 减少IO交互——批量写入数据(PostgreSQL)
2.5.5 精简架构
第3章 如何运维好数据库
3.1 运维好数据库的关键:处理故障
3.1.1 常见的数据库故障类型
1.CPU使用率过高
2.慢SQL导致系统几乎不可用
3.磁盘满导致数据库不可用
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数据库之间的数据同步
1.使用dblink实现数据同步
2.dblink的使用局限性
5.3.2 使用物化视图实现远程Oracle数据库之间的数据同步
1.使用物化视图实现数据同步
2.物化视图的优势与劣势
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数据库之间的数据同步
1.OGG for Oracle的软件安装
2.启动OGG for Oracle的准备工作
3.OGG for Oracle的初始连接通道配置
4.OGG for Oracle的提取进程配置
5.OGG for Oracle的复制进程配置
6.OGG for 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的价值
1.HTAP解决了异构数据库的数据结构问题
2.HTAP解决了跨库查询的数据延迟问题
3.HTAP满足了查询分析的实时性需求
4.HTAP消除或减少了数据的冗余
5.HTAP解决了数据一致性的问题
6.HTAP解决了数据传输高成本的问题
7.HTAP解决了数据传输稳定性的问题
8.HTAP实现了一定程度大数据离线计算的替代
6.2 HTAP的几种实现方式
6.2.1 垂直方向的实现:以Oracle数据库为例
6.2.2 水平方向的实现:以MySQL、TiDB数据库为例
6.2.3 其他类型数据库的实现方式
第7章 认识数据库的功能原理
7.1 优化器——基于统计学原理
7.2 数据库的查询——火山模型
1.火山模型的基础概念和原理
2.从设计模式的角度理解火山模型
3.火山模型在SQL执行中的应用
4.火山模型的优点和局限性
7.3 数据库AI——向量化
1.向量化在SQL优化中的应用
2.向量化的优点和局限性
3.向量化的实现技术和方法
7.4 编译执行
1.编译执行的基本概念和原理
2.编译执行在SQL优化中的应用
3.编译执行的优点和局限性
第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:背包问题
1.0-1背包问题描述
2.动态规划
3.动态规划的应用
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杂谈
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜