SQL Server 2008查询性能优化
白轩美诗139+70
¥
17.98
2.6折
¥
69
九品
仅1件
作者[美]弗里奇、[美]达姆 著;姚军 译
出版社人民邮电出版社
出版时间2010-08
版次1
印刷时间2022-03
印次1
印数2千册
装帧平装
货号支持挂刷认可下单
上书时间2024-09-23
商品详情
- 品相描述:九品
-
好品
- 商品描述
-
好品
图书标准信息
-
作者
[美]弗里奇、[美]达姆 著;姚军 译
-
出版社
人民邮电出版社
-
出版时间
2010-08
-
版次
1
-
ISBN
9787115230294
-
定价
69.00元
-
装帧
平装
-
开本
16开
-
纸张
胶版纸
-
页数
444页
-
字数
627千字
-
正文语种
简体中文
- 【内容简介】
-
《SQLServer2008查询性能优化》通过大量实例,详细介绍了SQLServer数据库系统优化的各种方法和技巧。内容涵盖了数据库应用系统中各种性能瓶颈的表现形式及其发生的根源和解决方法,从硬件瓶颈到查询、索引设计以及数据库管理等,贯穿了数据库系统知识的各个方面。最后以一个实际的工作负载将所有技巧联系起来,并且提供了“宝典”式的最佳实践列表。
《SQLServer2008查询性能优化》适合于关心数据库应用系统性能的开发人员和数据库管理人员阅读。通过阅读《SQLServer2008查询性能优化》,不仅可以学习到数据库性能管理的许多知识和技巧,还有助于养成良好的编程习惯,为实现高性能的数据库应用系统打下基础。
- 【作者简介】
-
弗里奇(GrantFritchey),为FMGlobal(一家行业领先的工程和保险公司)工作,担任首席DBA。他使用各种语言(如VB、C#和Java等)开发了许多大规模的应用程序,从版本6.0开始使用SQLServer。他曾经为3家失败的.com公司担任财务和咨询工作,还是DissectingSQLServerExecutionPlans一书的作者。
达姆(SajalDam),拥有位于印度班加罗尔的印度理工学院的计算机科学技术硕士学位,并且使用微软技术超过16年。他已经在设计数据库应用和管理软件开发方面拥有了很广泛的背景。Saial还在从前端网页到后端数据库的基于微软技术的应用程序上,具备了故障定位和性能优化的大量经验。他有许多为《财富》500强公司设计可伸缩的数据库解决方案和最大化数据库环境性能的经验。
- 【目录】
-
第1章SQL查询性能调整1
1.1性能调整过程2
1.1.1核心过程2
1.1.2迭代过程4
1.2性能vs.价格7
1.2.1性能目标7
1.2.2“足够好”的调整7
1.3性能基线8
1.4工作的重点9
1.5SQLServer性能杀手10
1.5.1低质量的索引10
1.5.2不精确的统计11
1.5.3过多的阻塞和死锁11
1.5.4不基于数据集的操作11
1.5.5低质量的查询设计12
1.5.6低质量的数据库设计12
1.5.7过多的碎片12
1.5.8不可重用的执行计划13
1.5.9低质量的执行计划13
1.5.10频繁重编译计划13
1.5.11游标的错误使用13
1.5.12错误配置数据库日志14
1.5.13过多使用或者错误配置tempdb14
1.6小结14
第2章系统性能分析15
2.1性能监视器工具15
2.2动态管理视图17
2.3硬件资源瓶颈18
2.3.1识别瓶颈18
2.3.2瓶颈解决方案19
2.4内存瓶颈分析19
2.4.1SQLServer内存管理20
2.4.2AvailableBytes23
2.4.3Pages/sec和PageFaults/sec计数器23
2.4.4BufferCacheHitRatio24
2.4.5PageLifeExpectancy24
2.4.6CheckpointPages/sec24
2.4.7Lazywrites/sec24
2.4.8MemoryGrantsPending25
2.4.9TargetServerMemory(KB)和TotalServerMemory(KB)25
2.5内存瓶颈解决方案25
2.5.1优化应用程序工作负载26
2.5.2为SQLServer分配更多内存27
2.5.3增加系统内存27
2.5.4更换32位处理器为64位处理器27
2.5.5启用3GB进程空间28
2.5.6在32位SQLServer中使用4GB以上内存28
2.6磁盘瓶颈分析29
2.6.1磁盘计数器30
2.6.2%DiskTime30
2.6.3CurrentDiskQueueLength31
2.6.4DiskTransfers/sec31
2.6.5DiskBytes/sec32
2.6.6Avg.DiskSec/Read和Avg.DiskSec/Write32
2.7磁盘瓶颈解决方案32
2.7.1优化应用程序工作负载33
2.7.2使用更快的磁盘驱动器33
2.7.3使用一个RAID阵列33
2.7.4使用SAN系统35
2.7.5恰当地对齐磁盘35
2.7.6使用电池后备的控制器缓存36
2.7.7添加系统内存36
2.7.8创建多个文件和文件组36
2.7.9将表和索引放在不同的磁盘上39
2.7.10将日志文件保存到独立的物理磁盘39
2.7.11表的分区40
2.8处理器瓶颈分析40
2.8.1%ProcessorTime41
2.8.2%PrivilegedTime41
2.8.3ProcessorQueueLength42
2.8.4ContextSwitches/sec42
2.8.5BatchRequests/sec42
2.8.6SQLCompilations/sec42
2.8.7SQLRecompilations/sec43
2.9处理器瓶颈解决方案43
2.9.1优化应用程序工作负载43
2.9.2消除过多的编译/重编译43
2.9.3使用更多或更快的处理器44
2.9.4使用大的二级(L2)/三级(L3)缓存44
2.9.5运行更高效的控制器/驱动程序44
2.9.6不运行不必要的软件45
2.10网络瓶颈分析45
2.10.1BytesTotal/sec45
2.10.2%NetUtilization46
2.11网络瓶颈解决方案46
2.11.1优化应用程序工作负载46
2.11.2增加网络适配器47
2.11.3节制和避免中断47
2.12SQLServer总体性能47
2.12.1丢失索引48
2.12.2数据库阻塞49
2.12.3不可重用的执行计划50
2.12.4总体表现50
2.13创建一个基线51
2.13.1创建性能计数器的一个可重用列表51
2.13.2使用性能计数器列表创建一个计数器日志54
2.13.3最小化性能监视器开销55
2.14以基线为标准的系统状态分析56
2.15小结57
第3章SQL查询性能分析58
3.1SQLProfiler工具58
3.1.1Profiler跟踪59
3.1.2事件60
3.1.3数据列62
3.1.4过滤器64
3.1.5跟踪模板65
3.1.6跟踪数据65
3.2跟踪的自动化66
3.2.1使用GUI捕捉跟踪66
3.2.2使用存储过程捕捉跟踪67
3.3结合跟踪和性能监视器输出68
3.4SQLProfiler建议69
3.4.1限制事件和数据列69
3.4.2丢弃性能分析所用的启动事件70
3.4.3限制跟踪输出大小70
3.4.4避免在线数据列排序71
3.4.5远程运行Profiler71
3.4.6限制使用某些事件71
3.5没有Profiler情况下的查询性能度量71
3.6开销较大的查询72
3.6.1识别开销较大的查询73
3.6.2识别运行缓慢的查询77
3.7执行计划78
3.7.1分析查询执行计划80
3.7.2识别执行计划中开销较大的步骤82
3.7.3分析索引有效性83
3.7.4分析连接有效性84
3.7.5实际执行计划vs.估算执行计划88
3.7.6计划缓存89
3.8查询开销90
3.8.1客户统计90
3.8.2执行时间91
3.8.3STATISTICSIO92
3.9小结94
第4章索引分析95
4.1什么是索引95
4.1.1索引的好处97
4.1.2索引开销98
4.2索引设计建议100
4.2.1检查WHERE子句和连接条件列100
4.2.2使用窄索引102
4.2.3检查列的唯一性103
4.2.4检查列数据类型106
4.2.5考虑列顺序107
4.2.6考虑索引类型109
4.3聚簇索引109
4.3.1堆表110
4.3.2与非聚簇索引的关系110
4.3.3聚簇索引建议112
4.4非聚簇索引117
4.4.1非聚簇索引维护117
4.4.2定义书签查找117
4.4.3非聚簇索引建议118
4.5聚簇索引vs.非聚簇索引118
4.5.1聚簇索引相对于非聚簇索引的好处119
4.5.2非聚簇索引相对于聚簇索引的好处120
4.6高级索引技术121
4.6.1覆盖索引122
4.6.2索引交叉124
4.6.3索引连接125
4.6.4过滤索引126
4.6.5索引视图128
4.6.6索引压缩132
4.7特殊索引类型134
4.7.1全文索引134
4.7.2空间索引135
4.7.3XML135
4.8索引的附加特性135
4.8.1不同的列排序顺序135
4.8.2在计算列上的索引136
4.8.3BIT数据类型列上的索引136
4.8.4作为一个查询处理的CREATEINDEX语句136
4.8.5并行索引创建136
4.8.6在线索引创建137
4.8.7考虑数据库引擎调整顾问137
4.9小结137
第5章数据库引擎调整顾问139
5.1数据库引擎调整顾问机制139
5.2数据库引擎调整顾问实例143
5.2.1调整一个查询143
5.2.2调整一个跟踪工作负载146
5.3数据库引擎调整顾问的局限性148
5.4小结149
第6章书签查找分析150
6.1书签查找的目的150
6.2书签查找的缺点152
6.3分析书签查找的起因153
6.4解决书签查找155
6.4.1使用一个聚簇索引155
6.4.2使用一个覆盖索引155
6.4.3使用索引连接158
6.5小结160
第7章统计分析161
7.1统计在查询优化中的角色161
7.2索引列上的统计162
7.2.1更新统计的好处162
7.2.2过时统计的缺点164
7.3在非索引列上的统计165
7.3.1在非索引列上统计的好处166
7.3.2丢失非索引列上的统计的缺点169
7.4分析统计172
7.4.1密度174
7.4.2多列索引上的统计174
7.4.3过滤索引上的统计175
7.5统计维护176
7.5.1自动维护177
7.5.2人工维护179
7.5.3统计维护状态181
7.6为查询分析统计的有效性182
7.6.1解决丢失统计问题182
7.6.2解决过时统计问题184
7.7建议186
7.7.1统计的向后兼容性186
7.7.2自动创建统计186
7.7.3自动更新统计187
7.7.4自动异步更新统计189
7.7.5收集统计的采样数量189
7.8小结190
第8章碎片分析191
8.1碎片的成因191
8.1.1UPDATE语句引起的页面分割193
8.1.2INSERT语句引起的页面分割196
8.2碎片开销197
8.3分析碎片数量200
8.4碎片解决方案204
8.4.1卸载并重建索引204
8.4.2使用DROP_EXISTING子句重建索引205
8.4.3执行ALTERINDEXREBUILD语句205
8.4.4执行ALTERINDEXREORGANIZE语句207
8.5填充因子的重要性209
8.6自动维护212
8.7小结217
第9章执行计划缓冲分析218
9.1执行计划生成218
9.1.1解析器219
9.1.2代数化器220
9.1.3优化221
9.2执行计划缓冲227
9.3执行计划组件227
9.3.1查询计划227
9.3.2执行上下文227
9.4执行计划的老化228
9.5分析执行计划缓冲228
9.6执行计划重用229
9.6.1即席工作负载230
9.6.2预定义工作负载231
9.6.3即席工作负载的计划可重用性231
9.6.4预定义工作负载的计划可重用性239
9.7查询计划Hash和查询Hash248
9.8执行计划缓冲建议251
9.8.1明确地参数化查询的可变部分252
9.8.2使用存储过程实现业务功能252
9.8.3使用sp_executesql编程以避免存储过程维护252
9.8.4实现准备/执行模式以避免重传查询字符串253
9.8.5避免即席查询253
9.8.6对于动态查询sp_executesql优于EXECUTE253
9.8.7小心地参数化查询的可变部分254
9.8.8不要允许查询中对象的隐含解析254
9.9小结254
第10章存储过程重编译256
10.1重编译的好处和缺点256
10.2确认导致重编译的语句258
10.3分析重编译起因260
10.3.1架构或绑定变化261
10.3.2统计变化261
10.3.3延迟对象解析264
10.3.4SET选项变化266
10.3.5执行计划老化266
10.3.6显式调用sp_recompile267
10.3.7显式使用RECOMPILE子句268
10.4避免重编译269
10.4.1不要交替使用DDL和DML语句270
10.4.2避免统计变化引起的重编译271
10.4.3使用表变量273
10.4.4避免在存储过程中修改SET选项275
10.4.5使用OPTIMIZEFOR查询提示276
10.4.6使用计划指南277
10.5小结281
第11章查询设计分析282
11.1查询设计建议282
11.2在小结果集上操作283
11.2.1限制选择列表中的列数283
11.2.2使用高选择性的WHERE子句284
11.3有效地使用索引284
11.3.1避免不可参数化的搜索条件285
11.3.2避免WHERE子句列上的算术运算符289
11.3.3避免WHERE子句列上的函数290
11.4避免优化器提示292
11.4.1连接提示293
11.4.2索引提示295
11.5使用域和参照完整性296
11.5.1非空约束297
11.5.2声明参照完整性299
11.6避免资源密集型查询301
11.6.1避免数据类型转换301
11.6.2使用EXISTS代替COUNT(*)验证数据存在303
11.6.3使用UNIONALL代替UNION304
11.6.4为聚合和排序操作使用索引305
11.6.5避免在批查询中的局部变量306
11.6.6小心地命名存储过程309
11.7减少网络传输数量311
11.7.1同时执行多个查询311
11.7.2使用SETNOCOUNT311
11.8降低事务开销312
11.8.1减少日志开销312
11.8.2减少锁开销314
11.9小结315
第12章阻塞分析316
12.1阻塞基础知识316
12.2理解阻塞317
12.2.1原子性317
12.2.2一致性320
12.2.3隔离性320
12.2.4持久性321
12.3数据库锁321
12.3.1锁粒度322
12.3.2锁升级325
12.3.3锁模式326
12.3.4锁兼容性332
12.4隔离级别332
12.4.1未提交读333
12.4.2已提交读333
12.4.3可重复读335
12.4.4可序列化(Serializable)338
12.4.5快照(Snapshot)343
12.5索引对锁的作用343
12.5.1非聚簇索引的作用344
12.5.2聚簇索引的作用346
12.5.3索引在可序列化隔离级别上的作用346
12.6捕捉阻塞信息347
12.6.1使用SQL捕捉阻塞信息347
12.6.2Profiler跟踪和被阻塞进程报告事件349
12.7阻塞解决方案351
12.7.1优化查询352
12.7.2降低隔离级别352
12.7.3分区争用的数据353
12.7.4争用数据上的覆盖索引354
12.8减少阻塞的建议354
12.9自动化侦测和收集阻塞信息355
12.10小结359
第13章死锁分析360
13.1死锁基础知识360
13.2使用错误处理来捕捉死锁361
13.3死锁分析362
13.3.1收集死锁信息362
13.3.2分析死锁364
13.4避免死锁368
13.4.1按照相同的时间顺序访问资源368
13.4.2减少被访问资源的数量369
13.4.3最小化锁的争用369
13.5小结370
第14章游标开销分析372
14.1游标基础知识372
14.1.1游标位置373
14.1.2游标并发性374
14.1.3游标类型376
14.2游标开销比较378
14.2.1游标位置的开销比较378
14.2.2游标并发性上的开销比较380
14.2.3在游标类型上的开销比较381
14.3默认结果集383
14.3.1好处384
14.3.2缺点384
14.4分析SQLServer游标开销386
14.5游标建议390
14.6小结392
第15章数据库工作负载优化393
15.1工作负载优化基础知识393
15.2工作负载优化步骤394
15.3捕捉工作负载397
15.4分析工作负载399
15.5识别开销最大的查询400
15.6确定开销最大的查询的基线资源使用402
15.6.1总体资源使用402
15.6.2详细资源使用402
15.7分析和优化外部因素405
15.7.1分析应用程序使用的批级别选项405
15.7.2分析统计有效性406
15.7.3分析碎片整理需求406
15.8分析开销最大的查询的内部行为410
15.8.1分析查询执行计划410
15.8.2识别执行计划中开销较大的步骤412
15.8.3分析处理策略的效率412
15.9优化代价最大的查询412
15.9.1修改现有索引413
15.9.2分析连接提示的应用415
15.9.3避免聚簇索引扫描操作417
15.9.4修改过程418
15.10分析对数据库工作负载的影响420
15.11迭代各个优化阶段421
15.12小结424
第16章SQLServer优化检查列表425
16.1数据库设计425
16.1.1平衡不足和过多的规范化426
16.1.2从实体完整性约束中得利427
16.1.3从域和参照完整性约束中得利428
16.1.4采用索引设计最佳实践430
16.1.5避免在存储过程名称中使用sp_前缀431
16.1.6最小化触发器的使用431
16.2查询设计432
16.2.1使用SETNOCOUNTON命令432
16.2.2显式定义对象所有者432
16.2.3避免不可参数化的搜索条件432
16.2.4避免WHERE子句列上的算术运算符433
16.2.5避免优化器提示434
16.2.6远离嵌套视图434
16.2.7确保没有隐含的数据类型转换435
16.2.8最小化日志开销435
16.2.9采用重用执行计划的最佳实践435
16.2.10采用数据库事务最佳实践436
16.2.11消除或减少数据库游标开销437
16.3配置设置437
16.3.1AffinityMask437
16.3.2内存配置选项437
16.3.3并行性开销阈值438
16.3.4最大并行度438
16.3.5优化即席工作负载438
16.3.6查询调控器开销限制439
16.3.7填充因子(%)439
16.3.8被阻塞过程阈值439
16.3.9数据库文件布局439
16.3.10数据库压缩440
16.4数据库管理440
16.4.1保持统计最新440
16.4.2保持最小数量的索引碎片数量441
16.4.3循环使用SQL错误日志文件441
16.4.4避免像AUTO_CLOSE或AUTO_SHRINK这样的自动化数据库功能441
16.4.5最小化SQL跟踪开销442
16.5数据库备份442
16.5.1增量和事务日志备份频率442
16.5.2备份分布443
16.5.3备份压缩444
16.6小结444
点击展开
点击收起
— 没有更多了 —
好品
以下为对购买帮助不大的评价