《SQL Server运维之道》
本书内容
《SQL Server运维之道》从一位拥有多年数据库运维经验的“老司机”视角出发,循序渐进地介绍SQL Server数据库。
《SQL Server运维之道》分为4篇,共9章,内容涵盖数据库基础、性能优化、开发、架构高可用性与运维等多个方面。基础篇(第1章和第2章)从安装部署讲起,探讨SQL Server在容器化和云原生环境下的安装部署,以及Linux平台上的架构设计与性能表现。性能篇(第3~6章)聚焦数据库性能优化,内容包括新特性加速数据库恢复、事务与锁、索引优化以及数据库自动驾驶能力等。开发篇(第7章和第8章)重点介绍数据库安全性及多模态能力,着重讲解区块链技术在数据库安全方面的创新应用,以及图数据、JSON数据和空间地理数据等多模态数据的支持。架构与运维篇(第9章)围绕数据库高可用性和运维展开,详细讲解AlwaysOn高可用性集群的搭建与高级功能。
《SQL Server运维之道》结合实际生产案例,旨在帮助读者学以致用,解决数据库运维中的痛点。
本书作者
林勇桦
13年数据库领域深耕经验,中国 DBA 联盟(ACDU)成员,三届微软 SQLServer 方向MVP。专注于MySQL、Redis、SQL Server.MongoDB 等数据库技术,具备人工智能专业硕士背景,曾任大型网络游戏公司数据库负责人,深谙企业级数据库架构设计与性能调优。长期活跃于技术社区,致力于分享实战经验推动数据库技术在高并发、大数据场景中的落地实践。
本书读者
《SQL Server运维之道》既适合数据库初学者,也适合有一定基础的开发人员,还适合作为培训机构和大中专院校的教学用书。
本书目录
目 录
第1篇 基础篇
第1章 数据库的安装与配置2
1.1 SQL Server概述2
1.1.1 SQL Server简介2
1.1.2 SQL Server的发展历史2
1.2 安装前的准备5
1.3 Windows平台部署6
1.3.1 安装包上的改进6
1.3.2 SQL Server安装向导详解8
1.3.3 验证安装17
1.3.4 静默安装19
1.4 Linux平台部署21
1.4.1 使用CentOS Stream 9部署SQL Server22
1.4.2 正式部署Linux上的SQL Server22
1.4.3 安装阶段23
1.4.4 与MySQL安装包的对比30
1.4.5 配置阶段31
1.5 容器平台部署38
1.5.1 使用Docker部署SQL Server39
1.5.2 在Kubernetes上部署SQL Server41
1.5.3 部署Minikube单机版42
1.6 安装过程中的常见问题45
1.6.1 Windows平台45
1.6.2 Linux平台46
1.6.3 容器平台47
1.7 安装示例数据库47
1.7.1 下载和安装示例数据库47
1.7.2 使用示例数据库进行测试和学习49
第2章 Linux平台上的架构与优化51
2.1 Linux平台上的进程模型51
2.2 Linux平台上的整体架构53
2.2.1 SQL PAL的内部结构54
2.2.2 系统底层屏蔽神器56
2.2.3 容器化架构56
2.3 Linux平台上的功能演进58
2.4 Linux平台上的性能表现59
2.4.1 TPC-C/TPC-E基准测试榜单59
2.4.2 Linux平台性能测试报告61
2.4.3 SQL Server 2022最新TPC-H性能表现65
2.4.4 自测Linux平台上数据库 TPC-H 性能65
2.5 数据库补丁模型66
2.5.1 数据库补丁版本确认68
2.5.2 Linux平台上部署最新补丁包69
第2篇 性能篇
第3章 性能优化新特性74
3.1 加速数据库恢复74
3.1.1 问题背景74
3.1.2 加速数据库恢复介绍80
3.1.3 解决方案81
3.1.4 技术原理82
3.1.5 ADR收益验证90
3.1.6 ADR迭代改进94
3.1.7 单库48TB的ADR应用案例95
3.2 TempDB元数据优化97
3.2.1 问题背景98
3.2.2 问题痛点98
3.2.3 解决方案99
3.2.4 功能收益100
3.3 Buffer Pool缓冲池并行扫描100
3.3.1 问题背景100
3.3.2 问题痛点101
3.3.3 解决方案101
3.3.4 使用场景102
3.4 事务日志并行重做102
3.4.1 问题背景102
3.4.2 问题痛点103
3.4.3 解决方案105
3.4.4 事务日志上的其他改进108
第4章 数据库事务、锁和等待110
4.1 事务与ACID110
4.2 事务的隔离级别和数据一致性111
4.3 数据库锁115
4.3.1 锁粒度115
4.3.2 锁类型115
4.3.3 锁兼容性116
4.3.4 轻量级锁:闩锁116
4.3.5 列存储索引的事务隔离级别117
4.4 慢查询日志记录阻塞和死锁127
4.4.1 阻塞127
4.4.2 死锁129
4.4.3 扩展事件记录历史阻塞和死锁132
4.5 数据库等待137
4.5.1 从CPU的角度看等待137
4.5.2 数据库执行SQL语句的机制138
4.5.3 等待类型139
4.5.4 并行等待141
4.5.5 多任务等待142
4.5.6 数据库日志等待143
4.5.7 锁定等待144
4.5.8 各类I/O等待145
4.5.9 其他等待146
4.5.10 扩展事件记录历史等待148
4.6 创新硬件持久内存151
4.6.1 技术特点151
4.6.2 性能参数对比151
4.6.3 数据库支持152
第5章 索引优化154
5.1 索引简介154
5.2 索引组织和分类154
5.3 传统B树索引157
5.3.1 相关术语157
5.3.2 堆表158
5.3.3 聚集索引表和非聚集索引159
5.3.4 数据访问方式160
5.3.5 数据同步方式167
5.3.6 B树索引的维护和建议168
5.4 列存储索引和集中式架构HTAP数据库172
5.4.1 HTAP数据库简介172
5.4.2 在OLAP领域的发展172
5.4.3 列存储索引上的演进173
5.4.4 列存储索引原理176
5.4.5 列存储索引维护和建议183
5.4.6 聚集列存储索引分区表187
5.4.7 双11期间30TB业务数据实时分析案例192
5.5 内存优化索引192
5.5.1 混合存储引擎架构194
5.5.2 内存优化索引维护和建议195
5.5.3 内存优化表犄角旮旯197
第6章 数据库自动驾驶199
6.1 智能数据库概述199
6.2 智能查询处理演进202
6.3 智能查询优化底座205
6.3.1 查询存储内部原理209
6.3.2 查询存储中的关键数据210
6.3.3 查询存储的使用场景212
6.4 近似唯一值计数218
6.4.1 近似唯一值计数概述218
6.4.2 近似唯一值计数使用示例219
6.5 行模式内存授予反馈221
6.5.1 内存授予反馈概述222
6.5.2 内存授予反馈使用示例222
6.5.3 内存授予反馈注意事项229
6.6 参数敏感执行计划优化229
6.6.1 参数敏感执行计划优化概述230
6.6.2 参数敏感执行计划优化使用示例230
6.6.3 参数敏感执行计划优化注意事项234
第3篇 开发篇
第7章 数据库安全性236
7.1 数据库安全功能演进236
7.2 动态数据掩码238
7.2.1 DDM屏蔽规则239
7.2.2 DDM的工作方式240
7.2.3 DDM使用示例241
7.3 行级安全性243
7.3.1 RLS的工作方式244
7.3.2 RLS使用示例244
7.4 始终加密247
7.4.1 始终加密使用示例247
7.4.2 取消始终加密253
7.5 时态表254
7.5.1 时态表的工作方式254
7.5.2 时态表使用示例256
7.5.3 时态表注意问题258
7.6 账本📒表259
7.6.1 账本📒表的工作方式259
7.6.2 账本📒表使用示例261
7.6.3 数据库验证264
第8章 多模态数据库268
8.1 多模态数据库功能演进268
8.2 图数据269
8.2.1 图数据库概述270
8.2.2 图数据功能使用示例270
8.2.3 图数据的新特性276
8.3 时间序列数据277
8.3.1 时间序列数据概述277
8.3.2 时间序列函数使用示例277
8.4 JSON数据281
8.4.1 JSON函数使用示例282
8.4.2 JSON索引286
8.4.3 原生JSON数据类型287
第4篇 架构与运维篇
第9章 数据库高可用性290
9.1 数据库高可用性概述290
9.2 高可用性集群方案291
9.3 Always On可用性组的演进295
9.4 Always On可用性组架构与性能优化297
9.4.1 基本架构和可用性模式297
9.4.2 数据同步原理299
9.4.3 数据同步延迟301
9.4.4 仅配置模式辅助副本303
9.5 Linux平台上的Always On可用性组303
9.5.1 Pacemaker集群管理器概述304
9.5.2 Pacemaker集群上的Always On架构305
9.5.3 部署DNS服务307
9.5.4 Linux平台上的Always On集群搭建310
9.5.5 集群故障转移测试和维护建议322
9.6 Always On可用性组的高级功能和新特性326
9.6.1 包含可用性组327
9.6.2 跨平台仅读取缩放可用性组329
9.6.3 损坏数据页自动修复330
9.6.4 辅助副本使用快照隔离级别333
本书特色
本文摘自《SQL Server运维之道》,获出版社和作者授权发布。
《SQL Server运维之道》本书内容《SQL Server运维之道》从一位拥有多年数据库运维经验的“老司机