首页>参考读物>计算机科学与技术>数据库

SQL Server 性能优化与管理的艺术
作者 : 黄钊吉 著
出版日期 : 2014-09-22
ISBN : 978-7-111-47324-4
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 493
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

全书共15章,分为三部分,第一部分(第1~2章)为概述部分,阐述SQL Server方面的“性能”及相关概念。并给出常规的性能及性能相关的问题侦测的“方法论”,读者可以通过这两章的介绍,对SQL Server性能问题有一个高层次的认识。第二部分(第3~10章)为知识准备部分,这部分介绍了SQL Server性能相关的基础知识。只有了解了性能及影响性能的相关部分,才能准确地、高效地进行优化。第三部分(第11~15章)为工具使用及优化演示,在多服务器、大数据的环境下,不应该再使用原始的故障侦测方法,借用各种工具能更全面、更高效地找到问题并且解决问题。
通过这三部分的介绍,可以使读者有一个清晰的性能优化及管理方面的认识,并且通过大量演示,让读者能够较快地进入实战阶段。本书的重点主要集中在第二部分,这部分既介绍了性能相关的内容,以便后续使用,也给出了一个后续深入学习的“清单”,让读者可以根据书中的知识点,进行更深入的学习。

图书特色

本书特色
性能优化和管理是一门“技术”,更是一门“艺术”,它需要针对各方面进行权衡,协调各个组件之间的资源使用,避免出现不必要的竞争、内耗等,确保高效。当我们面对SQL Server问题时,虽然有时候没办法一下子找出解决方案,但是可以通过扎实的基础,加上合理的方法论,逐步揭开其神秘面纱。
在大数据、云计算时代,书中所涉及的知识依旧适用,因为本书是以“根源”为出发点的,让读者在理解SQL Server内部机制的前提下,学会运用哲学层面的方法论,找出问题、研究问题并解决问题。
本书中的很多知识点,足以单独成书,书中虽不能完全介绍所有的性能问题及相关解决方案,但是会通过对核心知识的介绍和演示,从而使读者掌握进行常规的性能问题侦测及性能相关数据库管理的方法。

在我多年的SQL Server顾问职业生涯中,所见过的大多数客户对于SQL Server开发都十分在行,但对于数据库的管理和调优却往往相形见绌,造成的结果是大多数用户都知道如何开发和使用SQL Server,却不清楚如何把SQL Server用好。黄钊吉是CSDN SQL Server区的大版主,也是微软最有价值专家,对SQL Server的底层有非常深刻的理解,他的著作《SQL Server性能优化与管理的艺术》填补了如何用好SQL Server这个空白,该书不仅阐述了如何用好SQL Server,更从底层原理剖析了优化方案的根本原因,如果您不仅仅希望了解如何使用SQL Server,更希望深入学习如何用好SQL Server,本书将是您手边的必备书籍。
——宋沄剑,SQL Server MVP,北京格瑞趋势科技有限公司解决方案事业部技术总监
本书是黄钊吉从开发工程师到DBA实践过程中不断积累总结出来的经验,是在生产环境中经过不断验证得到的方法和结论,同时本书也收录了他在论坛中所遇到的各类问题及解决方法,使得本书的内容更加充实、丰厚,特别是在“索引及统计信息”这一章,作者花了大量的心血和篇幅把索引涉及的知识讲解的透彻并易懂,可谓达到了深入浅出的效果,所谓“授人以鱼,不如授人以渔”。
——陈畅亮,SQL Server MVP
怎样的数据库管理技术才能真正有效地支持现代企业的数据库管理?如何提升数据库管理员的工作效率?这些都成为了众多数据库管理员希望了解和掌握的内容。《SQL Server 性能优化与管理的艺术》这本书用了大量的实战案例与您探讨其中的答案,书中不仅介绍了实践中常见的SQL Server数据库优化技巧,更是从思路和方法上给出了详细的总结和归纳,并对大量的实践案例进行了全程分享展示。相信这本书不但能对数据库管理员有所帮助,对数据库开发人员来说,也有着提升相关能力的作用。
——林勇桦,SQL Server MVP
这本书不是大部头的理论书籍,也没有夸夸其谈,恰到好处地从实际出发讲述了性能优化的可落地操作,同时本书也对必要的知识储备进行了阐述,且不乏深度,比较好地做到了深入浅出,是本不错的数据库性能优化方面的参考书。
——汪洋,SQL Server MVP,首席架构师

你是否有过这样的经历:当你负责的数据库系统逐渐变慢或者突然变慢时,却不知道应如何优化;或者你有一定的SQL Server基础,看过很多优化的书籍,但是面对性能问题时,仍困惑于该从哪里下手?本书的初衷就是针对这些情景提出解决方案,希望通过本书让你了解常规的性能及管理问题侦测,并找出对应的解决方案。

作者简介
黄钊吉?数据平台架构师,从事数据库管理、优化及平台搭建工作,获得MCITP 2008 DBA认证、MCSE DATA Platform 认证,CSDN论坛SQL Server 大版主、博客专家,2013年至2014年连续两年被评为SQL Server MVP。曾参与服饰类电子商务网站、银行系统的开发管理工作及ERP系统、欧洲信用卡平台系统(基于亚马逊云服务,AWS)的数据库管理及平台架构工作。

图书前言

为什么要写这本书
大学时我就已经开始接触SQL Server了,而真正将它用于工作也有6个年头了。不管别人对它的评价如何,我依旧深爱着它。工作之后,接触到的SQL Server性能问题越来越多,也让我越来越着迷。后来我成为了专职的DBA,对性能问题的探索也从兴趣变成了工作职责。
这几年来一直在学习SQL Server,看了很多有关书籍,可真遇到性能问题的时候,还是一下子就蒙了,望着书架上那几十本书,不知该从哪里找类似的问题。其实很多人都有类似的经历,在看到CPU利用率很高、内存占了很多、整个SQL Server很慢时,常常不知道该怎么着手找到根源并处理。这也就成了我写这本书的一个初衷,我希望给出一个方法论,并给出一些后续学习的“大纲”,使读者运用书中的知识,去处理工作中遇到的绝大部分性能问题。
关系数据库发展到今天,各个关系数据库管理系统之间的差异已经很小,只是实现方式可能有所不同。基于这种情况,对于DBA来说,更重要的不是如何操作,而是掌握一个方法论和思路,有了方法论和思路,不管是对Oracle还是MySQL,或者其他数据库管理系统,都可以实施优化,解决性能问题。找到问题的根源,处理问题,然后再检查、再处理,不管是数据库性能优化还是其他行业、领域的问题侦测,这个流程都是可以直接套上去或者稍作修改即可使用的。这也是本书的一个特色,不仅告诉读者SQL Server相关知识,还提供了基本方法和思路。
SQL Server是世界级企业数据库领域的拳头产品,想要透彻了解它的每一个细节几乎不可能,但是我们即使不知道源代码,也可以很好地利用SQL Server来实现业务需求。我基于个人的工作经历进行写作,并且参考了大量国内外资料,以实用为目的来介绍知识。书中涉及的知识点较多,其中一些展开足以独立成书。所以,这里更多的是给出一个“提纲”,让读者知道“有这个知识点”,如果读者有兴趣深入了解,可以去学习相关的专门资料。
读者对象
作为一本非入门书籍,本书假定读者已经有了一定的SQL Server基础和经验。本书主要面向的读者群体如下。
初中级SQL Server DBA
中高级SQL Server 相关程序员
使用SQL Server的项目负责人
SQL Server 爱好者
对关系数据库性能优化有兴趣的读者
有志成为DBA、数据库设计、数据库架构的IT从业人员
如何阅读本书
本书分为以下3部分。
第一部分是概述部分,介绍一些与性能相关的概念。
第二部分是与SQL Server性能相关的一些理论知识,为后续的使用打下基础。
第三部分主要是工具的使用,在了解了相关知识之后,就要学会如何去用。作为一直以界面友好著称的微软产品,SQL Server同样提供了很多快速定位问题甚至直接指出问题的工具,供开发人员使用。
如果你是一名有少许经验的初学者,建议按顺序学习本书。如果你已经有一定的基础,可以从第二部分开始学习。另外,本书也可以作为开发人员外理工作中常见问题的一个“手册”。
勘误和支持
由于作者的水平有限,编写的时间也很紧迫,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如读者发现有错误或者有疑问,欢迎发邮件到本人邮箱:huangzhaoji@hotmail.com,或者在本人的微博上留言,微博地址:http://weibo.com/u/3187132617。书中的一些重要脚本或者篇幅比较长的脚本将发布在机械工业出版社的机工新阅读网站(www.cmpreading.com)上供读者下载,很期待能够听到读者们的真挚反馈。
致谢
我首先要感谢我的家人,特别是我的未婚妻李琳玲。写书占用了我几乎所有的休息时间,陪家人的时间基本上变成了“0”。但是他们一直理解我,并在工作和生活起居上为我打理一切。他们的辛勤付出为这本书的撰写创造了良好的环境。
然后我要感谢机械工业出版社给了本书出版的机会,特别感谢机械工业出版社华章分社的编辑杨绣国老师,感谢她在成书过程中对我的全力支持。也因为出书,逼自己学习大量的知识,使自己能在短时间内,不管是在知识上还是在写作水平上有了明显的提高。
感谢SQL Server圈子中的很多高手,特别是MVP 宋沄剑、张骞、林勇桦、王成辉、陈畅亮、蔡传雄,还有某电商DBA 侯亚俊,某公司的CIO矫正,以及这个仓促写就的名单之外的更多朋友们,感谢你们长期的支持和帮助。
谨以此书,献给我最亲爱的家人,以及众多热爱SQL Server的朋友们!

SQL Server MVP 黄钊吉

上架指导

计算机\数据库

封底文字

本书特色
性能优化和管理是一门“技术”,更是一门“艺术”,它需要针对各方面进行权衡,协调各个组件之间的资源使用,避免出现不必要的竞争、内耗等,确保高效。当我们面对SQL Server问题时,虽然有时候没办法一下子找出解决办法,但是可以通过扎实的基础,加上合理的方法论,逐步揭开其神秘面纱。
在大数据、云计算时代,书中所涉及的知识依旧适用,因为本书是以“根源”为出发点的,让读者在理解SQL Server内部机制的前提下,可运用哲学层面的方法论,找出问题、研究问题并解决问题。
本书中的很多知识点,足以单独成书,书中虽不能完全介绍所有的性能问题及相关解决方案,但是会通过对核心知识的介绍和演示,从而使读者掌握进行常规的性能问题侦测及性能相关数据库管理的方法。

赞誉


在我多年的SQL Server顾问职业生涯中,所见过的大多数客户对于SQL Server开发都十分在行,但对于数据库的管理和调优却往往相形见绌,造成的结果是大多数用户都知道如何开发和使用SQL Server,却不清楚如何把SQL Server用好。黄钊吉是CSDN SQL Server区的大版主,也是微软最有价值专家,对SQL Server的底层有非常深刻的理解,他的著作《SQL Server性能优化及管理艺术》填补了如何用好SQL Server这个空白,该书不仅阐述了如何用好SQL Server,更从底层原理剖析了优化方案的根本原因,如果您不仅仅希望了解如何使用SQL Server,更希望深入学习如何用好SQL Server,该书将是您手边的必备书籍。
——宋沄剑,SQL Server MVP,北京格瑞趋势科技有限公司解决方案事业部技术总监


本书是黄钊吉从开发工程师到DBA实践过程中不断积累总结出来的经验,是在生产环境中经过不断验证得到的方法和结论,同时本书也收录了他在论坛中所遇到的各类问题及解决方法,使得本书的内容更加充实、丰厚,特别是在“索引及统计信息”这一章,作者花了大量的心血和篇幅把索引涉及的知识讲解的透彻并易懂,可谓达到了深入浅出的效果,所谓“授人以鱼,不如授人以渔”。
——陈畅亮,SQL Server MVP

怎样的数据库管理技术才能真正有效地支持现代企业的数据库管理?如何提升数据库管理员的工作效率?这些都成为了众多数据库管理员希望了解和掌握的内容。《SQLServer 性能优化及管理艺术》这本书用大量的实战案例与您了探讨其中的答案,书中不仅介绍了实践中常见的SQL Server数据库优化技巧,更是从思路和方法上给出了详细的总结和归纳,并对大量的实践案例进行了全程分享展示。相信这本书不但能对数据库管理员有所帮助,对数据库开发人员来说,也有着提升相关能力的作用。
——林勇桦,SQL Server MVP

这本书没有罗列大部头的理论,也没有夸夸其谈,恰到好处地从实际出发讲述了性能优化的可落地操作,同时本书也对必要的知识储备进行了阐述,且不乏深度,比较好地做到了深入浅出,是本不错的数据库性能优化方面的参考书。
——汪洋,SQL Server MVP,首席架构师

作者简介

黄钊吉 著:暂无简介

图书目录

前 言
第一部分 SQL Server性能优化概述
第1章 性能概述 2
1.1 何为性能 2
1.2 性能指标 3
1.3 性能目标 3
1.4 影响性能的常见因素 4
1.4.1 应用程序的体系结构 4
1.4.2 应用程序设计 5
1.4.3 事务和隔离级别 5
1.4.4 T-SQL代码 5
1.4.5 硬件资源 6
1.4.6 SQL Server配置 6
1.5 小结 8
第2章 初探优化 9
2.1 优化论 9
2.2 定义问题 10
2.2.1 使用工具找到性能瓶颈 12
2.2.2 通过性能数据进行分类 12
2.3 根据性能数据分析问题 14
2.4 验证处理手段及部署 14
2.5 问题归档 15
2.6 小结 15
第二部分 SQL Server性能优化理论知识
第3章 体系结构 18
3.1 SQL Server查询体系 18
3.2 数据库事务 22
3.2.1 事务特性 22
3.2.2 事务类型 22
3.3 查询的生命周期 23
3.3.1 SQL Server组件 23
3.3.2 缓冲池 23
3.3.3 简单的SELECT查询过程 23
3.4 执行模型 28
3.5 SQLOS 30
3.6 SQL Server 内存 30
3.6.1 物理内存和虚拟内存 30
3.6.2 SQL Server 内存 32
3.6.3 内存问题诊断 34
3.6.4 优化SQL Server内存配置 34
3.6.5 优化Ad-Hoc 工作负载 36
3.7 小结 38
第4章 硬件资源 39
4.1 CPU 39
4.1.1 SQL Server工作负载类型 39
4.1.2 CPU评估 40
4.1.3 CPU配置 43
4.2 存储系统 43
4.2.1 磁盘I/O 43
4.2.2 驱动器类型 44
4.2.3 RAID配置 45
4.2.4 配置存储系统 46
4.2.5 检查读写速率 46
4.3 CPU 性能侦测 48
4.3.1 侦测CPU压力 48
4.3.2 研究CPU相关的等待信息 49
4.3.3 查找CPU消耗高的查询 50
4.3.4 常见高CPU利用率的原因 51
4.4 I/O性能侦测 59
4.5 小结 59
第5章 查询优化器 60
5.1 查询过程 60
5.2 查询优化器 62
5.2.1 产生执行计划 62
5.2.2 连接 63
5.3 执行引擎 66
5.3.1 数据访问操作 66
5.3.2 聚合操作 70
5.3.3 并行执行 73
5.4 统计信息和开销预估 73
5.4.1 统计信息 73
5.4.2 统计信息维护 77
5.4.3 计算列上的统计信息 78
5.4.4 过滤索引上的统计信息 79
5.4.5 预估数量错误 81
5.4.6 更新统计信息 81
5.5 优化器工作过程 83
5.6 小结 88
第6章 索引及统计信息 89
6.1 索引基础 90
6.1.1 为什么要索引 90
6.1.2 索引的主要类型 91
6.1.3 索引元数据 91
6.2 索引存储基础 92
6.2.1 SQL Server存储基础 92
6.2.2 页的组织 95
6.2.3 检查工具 98
6.2.4 页碎片 110
6.3 索引统计信息 113
6.3.1 索引层级的统计信息 113
6.3.2 索引使用的统计信息 117
6.3.3 索引操作的统计信息 120
6.3.4 索引物理统计信息 126
6.4 索引误区及使用建议 127
6.4.1 常见误区 127
6.4.2 索引使用建议 135
6.4.3 关于索引的查询建议 137
6.5 索引维护 143
6.5.1 索引碎片 143
6.5.2 索引统计信息维护 155
6.6 索引工具 156
6.6.1 缺失索引DMO 156
6.6.2 使用DMO 158
6.6.3 数据库引擎优化顾问 159
6.6.4 使用DMO侦测索引问题 162
6.7 索引策略 165
6.7.1 堆 165
6.7.2 聚集索引 167
6.7.3 非聚集索引 168
6.7.4 索引存储 182
6.7.5 索引视图 185
6.8 索引分析 187
6.8.1 索引方法论 187
6.8.2 监控 188
6.8.3 分析 199
6.8.4 实施 212
6.8.5 重复 213
6.9 案例 213
6.10 小结 215
第7章 等待 216
7.1 等待简介 217
7.1.1 什么是等待 217
7.1.2 为什么需要等待信息 218
7.1.3 保存等待信息 218
7.2 查询等待 219
7.3 并行执行 219
7.3.1 CXPACKET 220
7.3.2 CXPACKET潜在问题 221
7.3.3 降低CXPACKET等待 221
7.3.4 CXPACKET深度分析 222
7.3.5 CXPACKET建议 222
7.4 多任务等待 223
7.4.1 SOS_SCHEDU-LER_YIELD 223
7.4.2 多任务类型 225
7.4.3 多任务潜在问题 226
7.4.4 降低多任务等待 226
7.5 I/O 等待 227
7.6 备份和还原等待 231
7.7 锁定等待 231
7.8 数据库日志等待 233
7.9 外部资源等待 235
7.10 其他常见的等待类型 237
7.11 小结 238
第8章 执行计划 239
8.1 基础知识 239
8.1.1 查询提交 240
8.1.2 预估与实际执行计划 241
8.1.3 执行计划重用 242
8.1.4 清除缓存的执行计划 243
8.1.5 执行计划格式 243
8.1.6 使用DMO获取缓存中的执行计划 243
8.1.7 使用SQL Trace自动获取执行计划 244
8.2 图形化执行计划 244
8.2.1 基础知识 245
8.2.2 单表查询 245
8.2.3 表关联 252
8.2.4 筛选数据 256
8.2.5 常见操作符 258
8.2.6 INSERT/UPDATE/DELETE的执行计划 261
8.2.7 复杂查询 264
8.3 控制执行计划 280
8.3.1 查询提示 281
8.3.2 联接提示 293
8.3.3 表提示 297
8.4 扩展信息 298
8.4.1 阅读庞大的执行计划 298
8.4.2 并行操作 305
8.4.3 强制参数化 306
8.4.4 使用计划指南 307
8.5 案例 313
8.6 小结 316
第9章 锁、阻塞和死锁 317
9.1 并发和事务 318
9.1.1 悲观并发和乐观并发 319
9.1.2 事务 320
9.1.3 丢失更新 325
9.2 锁的基础 327
9.2.1 锁定概述 327
9.2.2 锁资源/锁类型 328
9.2.3 锁模式 329
9.2.4 锁的持续时间 330
9.2.5 锁的所有权 330
9.2.6 锁的元数据 331
9.3 高级锁概念 332
9.3.1 锁兼容性 332
9.3.2 锁模式转换 333
9.3.3 意向锁 335
9.3.4 键范围锁 335
9.3.5 锁升级 336
9.3.6 其他类型的锁 338
9.3.7 非锁定引起的阻塞 339
9.4 控制锁行为 339
9.4.1 通过隔离级别控制并发性和锁定行为 340
9.4.2 设定锁的超时时间 340
9.4.3 锁提示 341
9.5 悲观并发的故障侦测 341
9.5.1 侦测锁定 341
9.5.2 阻塞的故障排查 344
9.6 乐观并发 348
9.6.1 行版本存储 349
9.6.2 行版本存储工作机制 349
9.6.3 基于快照的隔离模式 349
9.6.4 监控和管理版本存储 350
9.6.5 管理版本存储 351
9.6.6 选择并发模式 353
9.7 死锁 354
9.7.1 死锁类型 354
9.7.2 自动死锁侦测 356
9.7.3 捕获死锁 356
9.7.4 读懂死锁图 363
9.7.5 最小化死锁 364
9.8 监控和处理 366
9.8.1 使用DMV捕获阻塞信息 366
9.8.2 使用Extended Events和blocked_process_report事件捕获 368
9.8.3 阻塞问题解决方案 368
9.8.4 建议 369
9.9 小结 371
第10章 TempDB 372
10.1 TempDB简介 372
10.1.1 TempDB是什么 372
10.1.2 什么操作会用到TempDB 373
10.2 TempDB上的常见问题及监控 378
10.2.1 空间问题 378
10.2.2 TempDB的I/O瓶颈 382
10.2.3 过多的DDL操作导致系统表上的瓶颈 383
10.3 优化TempDB 383
10.3.1 配置TempDB 384
10.3.2 优化TempDB 385
10.3.3 扩充阅读 386
10.4 小结 386
第三部分 工具使用
第11章 使用传统工具定位瓶颈 388
11.1 使用性能监视器及PAL收集和分析性能 389
11.1.1 性能监视器 389
11.1.2 数据收集器集 392
11.1.3 使用PAL分析 403
11.2 使用DMO获取性能数据 407
11.2.1 DMO介绍 407
11.2.2 示例 407
11.3 使用Profiler获取性能数据 414
11.3.1 用法及注意事项 414
11.3.2 Profiler示例 416
11.3.3 SQL Trace示例 419
11.4 DBCC命令 422
11.4.1 DBCC SQLPERF 422
11.4.2 DBCC INPUTBUFFER 424
11.4.3 DBCC TRACEON/TRACEOFF 425
11.4.4 DBCC SHOWCONTIG 425
11.4.5 DBCC OPENTRAN 426
11.5 小结 427
第12章 使用新工具定位瓶颈 428
12.1 PSSDIAG 428
12.2 PowerShell 434
12.2.1 简介 434
12.2.2 打开PowerShell 434
12.2.3 使用PowerShell侦测服务器问题 435
12.3 小结 438
第13章 Extended Events 439
13.1 简介 439
13.2 创建扩展事件 444
13.3 查询收集的数据 449
13.3.1 监视实时数据 449
13.3.2 使用T-SQL查看 451
13.4 案例 452
13.5 小结 458
第14章 其他工具 459
14.1 SQLDiag 459
14.2 数据库性能优化顾问 462
14.2.1 使用DTA进行单查询分析 462
14.2.2 使用DTA进行全库分析 466
14.3 Windows事件日志及
SQL Server Errorlog 470
14.3.1 Windows事件日志 470
14.3.2 SQL Server 错误日志 471
14.4 小结 472
第15章 优化服务器配置 473
15.1 数据库工作负载特点 473
15.1.1 基础知识 473
15.1.2 工作负载配置 474
15.2 工作负载优化步骤 477
15.2.1 数据库设计 477
15.2.2 查询设计 478
15.2.3 数据库服务器配置 478
15.2.4 数据库管理 479
15.2.5 数据库备份 480
15.3 小结 481

教学资源推荐
作者: Abraham Silberschatz, Henry F.Korth, S.Sudarshan
作者: 何玉洁 编著
作者: [美] 亚伯拉罕·西尔伯沙茨 (Abraham Silberschatz) [美] 亨利·F. 科思 (Henry F. Korth) [印] S. 苏达尔尚(S. Sudarshan) 著
作者: Abraham Silberschatz, Henry F.Korth, S.Sudarshan
参考读物推荐
作者: [美]Kevin Loney,George Koch
作者: Sumit Sarin 钟鸣 孙登峰
作者: [美]丹尼尔·尼希特(Daniel Nichter) 著