新書推薦:
《
国术健身 易筋经
》
售價:HK$
33.4
《
古罗马800年
》
售價:HK$
188.2
《
写出心灵深处的故事:踏上疗愈之旅(修订版)(创意写作书系)
》
售價:HK$
66.1
《
控制权视角下的家族企业管理与传承
》
售價:HK$
87.4
《
冯友兰和青年谈心系列
》
售價:HK$
167.3
《
利他主义的生意:偏爱“非理性”的市场(英国《金融时报》推荐读物!)
》
售價:HK$
77.3
《
认知行为疗法:心理咨询的顶层设计
》
售價:HK$
99.7
《
FANUC工业机器人装调与维修
》
售價:HK$
99.7
|
內容簡介: |
本书是一线DBA技术专家精心之作,积作者多年的经验结晶和**实践,也是目前市场上为数不多通过存储原理来讲解性能调优,剖析SQLServer架构从而帮助读者快速高效调优数据库的图书。书中首先简要介绍了SQLServer与性能实践相关的一些基础语法及配置信息,提出与数据库性能相关的几个概要信息,再根据SQLServer数据的内部实现原理讲解如何调整和优化SQLServer数据库实例的配置;接着介绍SQLServer数据库存储引擎的语句优化,执行计划内部原理以及索引等综合因素分析如何优化数据库语句,保证数据库的稳定性及效率;*后从SQLServer的数据库性能监控及高可用性解决方案,提出性能监控及设计层面的优化。
|
目錄:
|
目 录?Contents
序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 磁盘IO 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 IO及数据文件配置 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 ProfilerTrace 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
|
內容試閱:
|
Forword 1?序1大学时就开始接触SQL Server,毕业之后从事的工作是.Net开发,在开发过程中,因在真实的环境中运用SQL Server,所以期间积累了更多的相关知识,这为后来成为一个专职DBA打下了坚实的基础。成为专职的DBA之后,逐渐完善了自己在数据库方面的知识结构,而这则为本次的写作提供了坚实的后盾。
目前我在某大型互联网公司带领DBA团队运维TB级的数据库,平时的工作涉及设计存储、高可用和灾备的方案,还主导内部运维平台的研发,运维上千台服务器。
工作后,我习惯在博客园写技术博客,现今已有6个年头,坚持写原创技术博客的目的是分享自己在使用SQL Server过程中遇到的各种问题,没有想到的是,因为这些分享获得了微软SQL Server方向最有价值专家(MVP)的称号,同时还认识了很多圈子里面的技术大师。此外,自己平时也喜欢参加一些大大小小的线下技术沙龙,最近还有幸作为演讲嘉宾受邀参加了2015年DTCC(中国数据库技术大会),演讲的主题是《深入理解SQL Server存储结构》,有兴趣的读者可以到IT168下载相关的资料和PPT。
本书能够顺利出版,首先要感谢机械工业出版社华章公司的编辑杨绣国老师,她在这一年多的时间中始终支持我的写作,正是她的鼓励和帮助引导我顺利完成了全部书稿。
感谢我的家人,他们是我写作的源泉,也是我坚持完稿的坚强后盾。感谢父母给予我生命并育我成人,感谢妻子朝夕相伴并给予我鼓励和慰藉。特别是我的妻子和刚出生的女儿,正是她们的付出才让我有更多时间专注于本书的撰写,祝愿家人健康、快乐。
感谢SQL Server圈子中的各位专家,特别是MVP 宋沄剑、黄钊吉、林勇桦,还有来自京 东的高文佳、来自新蛋的何文通等,以及一起合作写书的吴一晴。
谨以此书献给我最亲爱的家人,以及众多热爱 SQL Server数据库的朋友们!
陈畅亮,SQL Server MVP2015年07月于中国广州序2?Forword 2为什么写这本书大学时接触了SQL Server,从此便对SQL Server有着深厚的兴趣。在大学期间,我会充分利用时间学习SQL Server的各种语法、特性,以及如何管理好一个大的SQL Server数据库系统,在课余时间也会到图书馆里翻阅数据库理论及SQL Server相关的书籍。可惜,由于学校里没有太多的机会接触实际应用,很多知识都停留在理论层面上,印象不够深刻。
毕业以后,第一份工作是做C#开发,也经常接触SQL Server。做了3年后,勉勉强强可以进行架构维护了,此时接触了一些数据库相关的ORM框架,也做了一些SQL Server相关的维护和调优,最后毅然转投入SQL Server DBA的行列,2010年我到一家美国上市电子商务公司旗下做了一名SQL Server的数据库管理员。
从2010年到现在,经历了4个年头的Black Friday、Cyber Monday,这期间有过一些挫折,也有了一些经验,感觉有些东西沉淀了下来,想分享一下,虽陆续也有一些博客文章在网络上发表出来,却很是零散,不成体系。
后来一次偶然的机会,编辑联系我写本相关的书,思考许久,我决定答应下来,我想借着这次机会,强迫自己写出一些有用的东西,作为这几年来对自己的一个交代!
读者对象本书的读者需要有一定的数据库基础,在掌握SQL语法编程及一些数据库应用的基础上再阅读本书,大致包括以下几类:
数据库工程师;数据库管理员;数据库架构设计师;软件工程师;运维工程师。
……
|
|