图书信息作者: 胡百敬等著
出 版 社: 电子工业出版社
出版时间: 2008-6-1
字数: 900000
版次: 1
页数: 715
开本: 16开
I S B N : 9787121062964
分类: 图书 >> 计算机/网络 >> 数据库 >> SQL
定价:¥80.00
编辑推荐数据库系统经年累月,可能由于数据累积、使用人数增加、应用人数增加、应用而扩增、当初系统设计不良等原因,导致性能变差。然而,性能调校的能力是需要培养的,一般来说,需要的不只是数据库的经验,还要对商业领域知识、系统架构设计、应用程序撰写,以及操作系统、网络环境架设、各种监控工具程序有了解,才能在复杂的系统中,找到症结所在并有效解决。
本书适合SQL Server DBA阅读,书中提供了性能调校或错误处理的建议与提示,并通过实际案例,协助DBA建立正确的观念,充分了解系统架构,进而在阅读中传承功力,并打通任督二脉,领略其中运用之奥妙。
完整涵盖企业数据库管理最经典且实用的课题,凭借作者多年的顾问经验,定义、找寻与解决性能调校之疑问,深入探究SQL Server的运行原理,如索引、游标、数据访问界面,事务与锁定等,探索和模拟SQL Server与性能相关之议题,破解DBA日常所面临的问题,并提供最佳方案,详解系统设计应注意之事项,程序撰写之建议,同时解析各数据库对象使用方式的优劣。
随书光盘内容包括:范例程序,性能调校计划,压力测试计划。
盛情推荐:
台湾微软资深产品行销经理——李玉秀。
精诚资讯知识产品事业部技术开发处资深处长——张智凯。
内容简介数据库系统经年累月地运行,日久便可能面临数据累积量大、使用人数增加、应用面扩增、当初系统设计有局限等问题,导致性能变差,这就需要调试人员进行性能调校。然而,他们进行性能调校的能力是需要培养的,一般来说,需要的不只是数据库方面的知识和经验,还要对商业领域知识、系统架构设计、应用程序撰写,以及对操作系统、网络环境架设、各种监控工具程序等都有一定的了解,才能在复杂的系统中,找到症结所在,完成调校任务。
本书正是为满足上述需要而编写的,适合SQL Server DBA阅读,书中提供了性能调校和错误处理的建议与提示,并通过实际案例,协助DBA建立正确的观念、充分了解系统架构,进而在阅读中传承功力,并打通任督二脉,领略其中运用之奥妙。
图书目录第1章 性能调校概观
1.1 什么是性能调校
1.2 建立性能的基线
1.3 性能调校的步骤——DETECT
1.3.1 各阶段重点说明
1.3.2 练习DETECT方法
1.3.3 二分查找
1.3.4 定义瓶颈
1.4 结语
第2章 SQL Server架构简介
2.1 SQL Server运行架构
2.1.1 SQL Server的访问架构
2.1.2 SQL Server 的核心引擎
2.1.3 SQL Server动态自我管理
2.2 各项硬件使用剖析
2.2.1 内存管理
2.2.2 中央处理器
2.2.3 磁盘子系统
2.3 仿真系统运行
2.4 结语
第3章 性能调校相关工具程序
3.1 综观的工具
3.1.1 SQLDiag 公用程序概述
3.1.2 观察影响效率的内容
3.1.3 性能监视器
3.2 进一步的分析工具
3.2.1 Management Studio
3.2.2 SQL Profiler概述
3.3 针对特定对象的工具
3.3.1 Database Engine Tuning Advisor
3.3.2 查询编辑器
3.3.3 网络监视器
3.3.4 DBCC
3.3.5 跟踪标记
3.4 Performance Dashboard Reports
3.4.1 SQL Server 2005 Performance Dashboard Reports
3.4.2 Performance Dashboard Reports 主要的分析途径
3.4.3 Performance Dashboard Reports 所提供的各式报表
3.4.4 Blocking 报表
3.4.5 General Wait 报表
3.4.6 其他细节报表
3.4.7 扩展Performance Dashboard Reports 报表功能
3.5 压力测试工具程序
3.5.1 Microsoft Application Center Test
3.5.2 Load Simulator
3.5.3 自行编写压力测试程序
3.6 结语
第4章 动态管理视图和函数
4.1 动态管理视图和函数简介
4.2 动态管理视图和函数的使用范例
4.3 观察各种资源的使用情况
4.3.1 内存缓存区
4.3.2 CPU 的使用
4.3.3 执行计划重用
4.3.4 锁定与被锁定的关系
4.3.5 I/O 的使用
4.3.6 tempdb 系统数据库的使用
第5章 数据库设计
5.1 数据库设计
5.2 使用分割数据表切割和平行运行
5.2.1 分割数据表的使用范例
5.2.2 分割数据表与大量数据加载的集成
5.3 TEMPDB 系统数据库的规划
5.3.1 tempdb 的用途
5.3.2 SQL Server 2005 针对tempdb 所做的改良
5.3.3 监控tempdb 的使用
5.3.4 性能考虑
5.4 备份与还原
5.4.1 数据库恢复模式
5.4.2 数据库恢复模式之间的切换
5.5 大量数据加载
5.6 设计磁盘子系统
5.7 结语
第6章 索引
6.1 索引概观
6.1.1 建立索引与相关的属性设置
6.1.2 平行建立索引
6.1.3 在线索引
6.1.4 集群索引与非集群索引
6.1.5 排序
6.1.6 与索引相关的系统视图
6.1.7 是否值得建索引
6.2 索引维护
6.2.1 观察数据不连续
6.2.2 使用动态管理函数观察数据不连续
6.2.3 重组、重建与停用索引
6.3 优化执行计划的各阶段
6.4 统计
6.4.1 更新统计
6.5 覆盖索引
6.6 在视图与计算字段上建立索引
6.6.1 如何有效地建立Indexed View
6.6.2 Indexed View的适用范围
6.7 单一查询使用多个索引
6.8 结语
第7章 T-SQL语法
7.1 有效地查询参数
7.1.1 不要对数据域做运算
7.1.2 勿负向查询
7.1.3 勿在Where 子句对字段使用函数
7.1.4 小心使用OR 操作
7.2 连接
7.2.1 连接
7.2.2 Join 语句
7.2.3 嵌套循环连接
7.2.4 合并连接
7.2.5 哈希连接
7.2.6 连接与子查询
7.3 其他注意事项
7.3.1 INSERT、DELETE 和UPDATE
7.3.2 子查询
7.3.3 搭配EXISTS与IN的子查询
7.3.4 通过连接更新数据
7.3.5 查询提示
7.4 新的DML语句
7.4.1 Common Table Expression
7.4.2 获取排名或顺序的函数
7.5 SQL Server 提供的公共变量
7.6 结语
第8章 重用执行计划
8.1 编译与高速缓存执行计划
8.2 影响计划重用的因素
8.3 执行计划与Execution Context
8.4 观察执行计划的使用
8.5 需要重新编译计划
8.5.1 不同参数使用相同执行计划可能引发的问题
8.5.2 以提示影响查询引擎所建立的执行计划
第9章 交易与锁定管理
9.1 锁定
9.1.1 锁定的种类及范围
9.1.2 锁定的兼容性
9.1.3 可锁定的资源
9.1.4 锁定与交易隔离等级
9.1.5 动态的锁定管理
9.1.6 锁定逾时
9.2 数据行版本控制
9.2.1 数据行版本控制基本运行行为
9.2.2 “数据行版本控制”使用时机
9.2.3 “数据行版本控制”TEMPDB 数据库资源管理
9.3 交易
9.3.1 交易行为概述
9.3.2 批处理与交易
9.3.3 嵌套交易
9.3.4 存储点
9.3.5 锁定提示
9.3.6 使用交易之注意事项
9.4 死锁状况
9.4.1 发生Cycle 死锁
9.4.2 发生Conversion 死锁
9.4.3 分布式死锁
9.4.4 SQL Server 无法侦测的死锁实例
9.5 观察与分析系统的锁定状况
9.5.1 观察SQL Server 当前执行的状况
9.5.2 观察与分析系统的锁定状况
9.6 锁定的原因及相关处理
9.6.1 费时的查询或交易
9.6.2 不正确的交易或交易隔离等级设置
9.6.3 交易未正确处理
9.6.4 未检测到的分布式死锁
9.6.5 锁定数据粒度(Lock Granularity)太高或太低
9.6.6 Compile Blocking
9.6.7 基本原则
9.7 结语
第10章 前端应用程序设计
10.1 程序架构
10.2 用户端与SQL服务器的交互
10.2.1 用户端访问SQL Server 的模式
10.2.2 准备再执行的模式
10.2.3 测试各种执行SQL 语句方式的性能
10.2.4 Connection Pooling
10.3 多数据结果集
10.3.1 SQL Server 数据访问与结果集
10.3.2 工作阶段内容信息与MARS
10.3.3 前端程序经由MARS访问
10.3.4 MARS的执行方式
10.3.5 同时读取与更新数据
10.4 光标
10.4.1 光标概观
10.4.2 默认结果集
10.4.3 服务器端光标
10.4.4 使用光标的T-SQL语句
10.4.5 与光标相关的系统存储过程
10.4.6 通过前端程序访问四种类型的光标
10.4.7 异步使用光标
10.4.8 使用光标时应注意的事项
10.5 数据高速缓存
10.5.1 使用高速缓存的原因
10.5.2 .NET Framework 与Microsoft patterns & Practices Enterprise Library提供的高速缓存
10.5.3 访问Caching Application Block
10.6 应用程序错误处理
第11章 Visual Studio 2005 Team Edition For Database Professional
11.1 DB Pro 所支持的功能
11.2 建立数据库项目并控制对象的SQL Script
11.2.1 建立项目
11.2.2 将数据库定义加入源代码版本控制
11.3 建立数据库内新对象
11.3.1 部署项目定义到数据库
11.3.2 依项目内容更新数据库Schema 定义
11.4 修改数据库内对象名称
11.5 测试
11.5.1 产生测试数据
11.5.2 数据库的单元测试
11.5.3 数据库单元测试的方面
11.5.4 以DB Pro 设计与执行单元测试
11.5.5 通过测试条件定义单元测试的结果是成功或失败
11.5.6 负载测试
11.6 Service Release 1 与Power Tools 的功能
11.6.1 Power Tools 为VSTS Database Pro 新增的功能
附录A 数据库对象的命名惯例与访问标准
A.1 建立命名规则
A.2 数据库使用惯例
附录B 数据库服务器的容量规划
附录C 应用程序架构范例
图书章节第1章 性能调校概观
一般而言,影响数据库整体性能的因素如图1.1所示。
若数据库设计得宜,注意了切割数据、保留了访问灵活性,有效地使用了SQL语句,数量适当且有用的索引,避免长时间广泛的锁定,充足的硬件资源等,则系统将可有效地提供服务,如图1.1所示。各种影响性能的因素中,最重要的是基础设计,但大多数的案例由于时间急迫、对技术的认知有限、需求不明确等因素,导致系统结构缺少扩充性,仅能一味地升级硬件,但整体性能无法大幅改善。
增加CPU对系统的性能当然会有帮助,但结果不一定能让人满意,例如,交易锁定过多且长久,数据表字段多且长度大,所属的SQL语句无法有效地平行运算,又不能将工作分成多个批处理同时执行等,则更多的CPU也无法解决问题。
性能调校不是一件简单的事,一般来说需要有广泛的经验与知识,不单单是数据库的经验,还要对商业逻辑、系统架构设计、编写应用程序、操作系统、架设网络环境、使用各种侦测与监控工具程序、安全与防毒等,都有基本的了解,才能在复杂的系统中,找到症结所在。
因为性能问题往往不会单纯地呈现出来,让你一眼就知道答案。最简单的例子,当你看到CPU很忙时,长时间百分之百的使用率,可能直觉就是CPU性能不足。但其实可能是硬盘性能不足,或是内存容量不够,让CPU一直忙于I/O。这个例子只是简单地告诉你,性能问题的症结往往不是表象所呈现出来的。从不同的方面去看,往往会有不同的解释。
早先,微软的性能调校制式文件上标示着各项成功元素所占的百分率:先前的经验19%、解决问题的能力22%、是否有完备的顾问服务16%、产品的熟悉程度26%、计算机的相关知识13%、运气4%,见图1.2。天啊!你是全世界最强的信息人员,若上苍不眷顾,还是有4%的机会不得成功。