SQL Server性能调优领域的扛鼎之作,一线资深DBA技术专家多年工作经验结晶
深入解析SQL Server的内部实现原理和存储引擎,揭示调整和优化SQL Server数据库实例及语句的方案
根据SQL Server的性能监控及高可用性解决方案,展示性能监控及设计层面的优化技巧
当你的SQL Server数据量不断增大时,你的数据库可能会出现一些性能上的问题,你是否会因为无法找到根本原因而苦恼?即使知道原因却因为性能优化相关知识的薄弱而无法下手呢?不用担心,本书将提供一条捷径,使您从整体上把握整个优化的过程,简单地按照章节查阅本书,就可以快速找到简单、高效优化SQL Server的方法,把精力放在业务的实现上。同时书中还深入剖析了SQL Server存储架构,帮助你深入了解SQL Server原理,以便在面对SQL Server问题时,你也可以找到最合适的方法修复或者回避问题。另外,本书还展示了SQL Server优化上的许多技巧,了解这些技巧可以帮助你少走弯路。
更多精彩,点击进入品牌店查阅>>
本书是一线DBA技术专家呕心沥血之作,积作者多年的经验结晶和实践,也是目前市场上为数不多通过存储原理来讲解性能优化、剖析SQL Server架构以帮助读者快速高效调优数据库的图书。
书中首先简要介绍了SQL Server与性能实践相关的一些基础语法及配置信息,提出与数据库性能相关的几个概要信息,再对SQL Server数据的内部实现原理进行讲解,告诉读者如何调整和优化SQL Server数据库实例的配置,接着通过SQL Server数据库存储引擎的语句优化、执行计划内部原理以及索引等综合因素分析如何优化数据库语句,保证数据库的稳定性及效率,最后是从SQL Server的数据库性能监控及高可用性解决方案出发,提出性能监控及设计层面的优化。
序1
序2
第1章 安装、配置SQL Server 1
1.1 SQL Server概述 1
1.1.1 简介 1
1.1.2 发展历史 1
1.2 SQL Server安装 2
1.2.1 硬件准备与性能 2
1.2.2 操作系统的选择 3
1.3 SQL Server配置 4
1.3.1 配置管理器 4
1.3.2 数据库实例配置 5
1.4 小结 6
第2章 影响SQL Server性能的因素 7
2.1 服务器硬件 8
2.1.1 内存 8
2.1.2 CPU 8
2.1.3 磁盘I/O 9
2.1.4 网络带宽 9
2.2 SQL Server版本对性能的限制 10
2.3 SQL Server系统的配置 10
2.3.1 内存配置 10
2.3.2 CPU配置 11
2.3.3 I/O及数据文件配置 11
2.4 数据库结构的设计 12
2.4.1 好的性能出自好的设计 12
2.4.2 约束对性能的影响 12
2.4.3 适当的冗余 13
2.5 T-SQL语句的编写 13
2.5.1 编写T-SQL语句的注意事项及小窍门 13
2.5.2 使用简单SQL语句 14
2.6 小结 14
第3章 T-SQL与性能调优 15
3.1 编写健壮的T-SQL语句 15
3.2 使用查询语句 17
3.2.1 SELECT语句 17
3.2.2 SELECT语句的性能 18
3.3 使用排序子句 19
3.3.1 排序子句 19
3.3.2 排序的性能影响 19
3.3.3 排序对Tempdb的影响 20
3.4 使用T-SQL汇总 21
3.4.1 GROUP BY 21
3.4.2 DISTINCT 22
3.4.3 GROUP BY与性能 22
3.5 UPDATE语句 22
3.5.1 UPDATE 23
3.5.2 UPDATE语句与事务影响 23
3.6 DELETE语句 25
3.6.1 DELETE、TRUNCATE TABLE 25
3.6.2 删除操作与事务日志 26
3.7 使用过滤条件(WHERE子句) 26
3.7.1 合理优化因素 26
3.7.2 合理利用索引 27
3.8 连接查询 27
3.8.1 连接类型 27
3.8.2 认识连接操作 28
3.9 子查询 30
3.9.1 子查询与性能 31
3.9.2 IN、EXISTS与LEFT JOIN的性能对比 31
3.9.3 FOR XML子句 32
3.10 批量更新数据 34
3.10.1 BULK...INSERT 34
3.10.2 INSERT...SELECT 34
3.10.3 SELECT...INTO 35
3.10.4 OUTPUT子句 35
3.10.5 MERGE 36
3.10.6 BCP工具 36
3.11 运行时动态管理视图 36
3.12 小结 37
第4章 SQL Server的内存管理 38
4.1 Windows的内存管理 38
4.1.1 32位操作系统 39
4.1.2 64位操作系统 41
4.2 SQL Server的内存管理 41
4.2.1 SQLOS内存管理组件 41
4.2.2 内存中的数据 44
4.3 诊断内存瓶颈 46
4.3.1 资源管理器诊断示例 48
4.3.2 性能计数器诊断示例 48
4.4 案例分析 49
4.4.1 案例一:内存不足造成的磁盘超负荷 49
4.4.2 案例二:内存不足的信号(RESOURCE_SEMAPHORE) 50
4.5 小结 53
第5章 SQL Server的任务调度 54
5.1 任务调度者 54
5.2 工作者 55
5.3 任务 57
5.4 任务调度与资源等待 58
5.5 CPU性能监控及示例 61
5.5.1 使用动态管理视图诊断 61
5.5.2 使用性能计数器诊断 62
5.5.3 MDW 63
5.6 小结 65
第6章 SQL Server执行计划分析 66
6.1 查看执行计划 66
6.2 查询优化器与执行计划的选择 70
6.2.1 统计信息 71
6.2.2 统计信息与执行计划(示例详解) 74
6.3 常用的执行计划操作符 75
6.3.1 数据访问操作符 76
6.3.2 关联操作符 79
6.3.3 聚合操作符 83
6.4 执行计划缓存及重编译 86
6.4.1 语句级别的重编译 87
6.4.2 导致重编译的因素 87
6.4.3 监视和解决重编译问题 88
6.5 执行计划实践 88
6.5.1 案例一(参数嗅探) 88
6.5.2 案例二(疯狂的重编译) 93
6.6 小结 95
第7章 索引 96
7.1 索引概念 97
7.1.1 什么是索引 97
7.1.2 索引的类型 97
7.1.3 特殊的索引 98
7.2 索引的物理结构 99
7.2.1 基本概念 99
7.2.2 查看文件存储格式的几种方法 103
7.2.3 RID的物理结构 110
7.2.4 UNIQUIFIER物理结构 117
7.2.5 堆表行记录的物理结构 129
7.2.6 堆表非聚集索引的物理结构 149
7.2.7 聚集索引的物理结构 185
7.2.8 非聚集索引的物理结构 191
7.2.9 NULL位图物理结构 197
7.2.10 行溢出物理结构 203
7.2.11 LOB的物理结构 209
7.3 索引的选择 229
7.3.1 覆盖索引 230
7.3.2 索引的分析 231
7.4 查看缺失的索引 238
7.4.1 执行计划中查看缺失索引 238
7.4.2 查看所有缺失索引的字段 238
7.5 查看无效索引 240
7.6 案例分析:统计信息失效 240
7.7 小结 243
第8章 锁、事务与性能 244
8.1 锁、事务要解决的问题 244
8.2 事务的控制 249
8.3 锁粒度 250
8.4 锁模式 250
8.5 锁兼容性 251
8.6 阻塞、死锁及性能优化 253
8.7 锁的监控 255
8.7.1 与锁相关的性能计数器 255
8.7.2 锁相关的动态管理视图简介 256
8.7.3 SQL Profiler 256
8.7.4 死锁标记 256
8.8 轻量级锁闩锁 259
8.8.1 闩锁模式 259
8.8.2 闩锁的兼容性 260
8.8.3 查看闩锁 260
8.9 自定义事务报警 262
8.9.1 阻塞报警 262
8.9.2 死锁报警 264
8.10 小结 265
第9章 理解和使用Tempdb 266
9.1 Tempdb的工作 266
9.2 表变量、临时表 267
9.2.1 统计信息 269
9.2.2 临时表和表变量的索引 269
9.2.3 表结构修改 270
9.3 Tempdb的并发阻塞 270
9.4 监视Tempdb 274
9.4.1 性能计数器 274
9.4.2 动态管理视图 274
9.5 小结 275
第10章 SQL Server数据库性能监控 276
10.1 SQL Profiler/Trace 276
10.1.1 选择跟踪模板 276
10.1.2 选择跟踪事件 278
10.1.3 过滤跟踪 279
10.2 Data Collector与MDW 280
10.2.1 MDW的配置 280
10.2.2 查看性能报表 281
10.3 性能监控的性能计数器 284
10.4 扩展事件 285
10.5 小结 288
第11章 SQL Server数据库企业级配置与性能 289
11.1 数据库表的配置 289
11.1.1 数据压缩 289
11.1.2 分区表和分区视图 290
11.2 高可用性解决方案 290
11.2.1 企业数据库发展阶段 290
11.2.2 业务功能的数据同步 293
11.3 小结 298
★数据库系统是一个复杂的、每个组件紧密联系的系统,因此在调优数据库的过程中需要以深度和广度的知识作为后盾,否则可能使得调优不会有很好的结果,或是所做的操作产生预料之外的副作用。本书的内容不仅包含调优所需的理论基础,还有在实际工作中基于真实案例的经验,高级DBA进阶必读!
—— 宋沄剑 微软SQL Server MVP
★SQL Server是功能强大、界面友好的数据库管理系统,新版的SQL Server 更是提供了列式存储和In-memory等新功能。本书作者作为多年SQL Server和MySQL的DBA及团队负责人,在运维和优化方面有很深的造诣。作为SQL Server MVP,他为广大同行提供了更为专业的协助和指导,在与作者交流多年的经历中,我能感受到其对优化,特别是索引优化方面有着深入的理解。本书以实操为目的,介绍实用技巧,非常值得一看。
—— 黄钊吉 微软SQL Server MVP
★目前市面上SQL Server相关的书所包含的知识面大都太广,对性能优化版块的讲解并不是十分透彻。本书包含了笔者长期从事DBA职业以来的个人沉淀,不只讲解了性能优化的方式方法,更从底层原理方向揭开了SQL Server性能优化的神秘面纱,让其“不再让人感到恐惧”。如果你希望成为真正的SQL Server性能优化高手,那么本书是“必读的”!
—— 何文通 新蛋网DBA
★这是一本精华版的SQL Server技术内幕,以DBA的视角深入透彻地讲解数据库底层原理,结合实战场景进行论证,辅以作者深厚的写作功底和丰富的工作经验,为读者循序渐进地解读性能优化过程中难点和误区。这是一本汇聚作者在博客园中的诸多经典文章的大师之作,强烈推荐无论是初学者还是专业DBA都“必看”。
—— 高文佳 京东DBA