《Sybase ASE 12.5性能优化》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:(美)Jeffrey Garbus等著;张崇文,唐萍,杨中高等译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2005
  • ISBN:7121007258
  • 页数:288 页
图书介绍:本书为整个Sybase服务器性能优化过程提供了全方位指导,从标准系统,优化存储过程,到使用sp_sysmon监控系统,其主要内容包括定义性能,理解I/O完全操作,使用查询优化器,管理内存,以及处理查询。此外,还讨论了应用程序设计,死锁和锁,性能标尺,审计系统,以及解决阻塞系统问题的实用技巧。对于任何想使自己的服务器性能最优化的人,本书可谓是一本必需的实用参考手册。本书是为广大Sybase数据库管理员和技术顾问量身定做的。

第1章 导言 1

1.1 定义性能 1

1.2 权衡 1

1.2.1 规范化、性能与灵活性 1

1.2.2 检索速度与更新速度 2

1.2.3 易于使用与高速事务处理 2

1.2.4 存储空间与花费 2

1.3 关系型数据库管理系统(RDBMS) 2

1.4 期望值 2

1.4.1 查询1 2

1.4.2 查询2 3

1.4.3 查询3 3

1.5 定义和捕获瓶颈 3

1.5.1 可能会导致瓶颈的性能变数 3

1.6 小结:优化方法 5

第2章 物理数据库设计问题 6

2.1 物理存储结构 6

2.2 页面利用率 6

2.3 OAM页与GAM页 7

2.4 数据页 8

2.5 估计表的大小 8

2.5.1 当表还没有被装载时 8

2.5.2 为已经存在的表估计大小 9

2.5.3 估计性能 9

2.6 索引和B树结构 10

2.6.1 索引结构 11

2.6.2 索引类型(APL) 12

2.6.3 在数据的前255字节中保存的统计信息 12

2.6.4 索引类型(DOL) 13

2.6.5 降序索引 15

2.6.6 新增行 15

2.6.7 删除行 16

2.6.8 修改的含义 16

2.6.9 设置填充因子 16

2.7 选择索引 16

2.8 小结 17

第3章 I/O完全操作 18

3.1 I/O简介 18

3.2 剖析硬盘驱动器 18

3.2.1 磁盘CPU 19

3.2.2 磁盘内存 19

3.2.3 主机总线适配器(HBA) 19

3.2.4 访问原理 19

3.2.5 查明我们正在使用哪种类型的磁盘 20

3.2.6 UNIX的iostat命令使用技巧 20

3.3 磁盘阵列 21

3.3.1 内存缓存 21

3.3.2 可选路径 22

3.3.3 主机到磁盘阵列适配器 22

3.3.4 预取算法 22

3.3.5 硬件镜像 22

3.3.6 RAID 5优化 22

3.3.7 切分 23

3.4 存储区域网 23

3.4.1 SCSI协议 24

3.4.2 FCP协议 26

3.5 逻辑卷管理器 28

3.5.1 逻辑卷管理器的优点 28

3.5.2 逻辑卷管理器的缺点 29

3.6 RAID标准 29

3.6.1 常用的RAID标准 29

3.6.2 支持RAID标准的逻辑卷管理器 30

3.6.3 将功能性从LVM移植到磁盘阵列中 31

3.7 I/O始末 31

3.7.1 同步I/O请求 31

3.7.2 异步I/O请求 31

3.7.3 请求 32

3.8 对磁盘存储进行基准测试 34

3.8.1 TPC数据库基准测试 34

3.8.2 准备 34

3.8.3 将测试的内容 35

3.8.4 第一次基准测试(单磁盘) 35

3.8.5 第二次基准测试(多磁盘) 36

3.8.6 dd命令的运行结果 36

3.9 分段对性能的影响 36

3.9.1 磁盘布局 37

3.9.2 Wide thin stripes 37

3.10 Sybase内核线程安排 37

3.10.1 上下文切换 38

3.10.2 ASE内核如何掌握时间 38

3.10.3 时间片和CPU Grace Time 38

3.11 异步预取 39

3.11.1 预测集 40

3.11.2 配置APF 40

3.11.3 APF的预取和丢弃缓存策略 41

3.11.4 使用Sp_sysmon监测APF 41

3.11.5 APF窍门 42

3.12 逻辑页大小 42

3.12.1 页大小的变动 43

3.12.2 空间分配 43

3.12.3 在使用大尺寸页的时候应该留心什么 43

3.12.4 受益于大尺寸页的任务 44

3.13 Sybase ASE基准测试 44

3.13.1 应用基准测试 45

3.13.2 DBA维护基准测试 45

3.14 了解Sp_sysmon中的I/O统计信息 46

3.14.1 内核利用率 46

3.14.2 任务管理 47

3.14.3 高速缓存统计信息 48

3.14.4 磁盘I/O管理 49

3.14.5 设备活动细节 51

第4章 索引 52

4.1 为什么要使用索引 52

4.2 索引的使用标准 52

4.3 索引和性能 53

4.4 确定索引用处 53

4.5 数据分布 53

4.6 索引统计 54

4.6.1 升级11.9版和更高级的统计 54

4.6.2 列统计 55

4.6.3 什么时候使用附加统计 56

4.6.4 为列增加统计 56

4.6.5 为次要列增加统计 56

4.6.6 选择直方图步数 57

4.6.7 使用删除统计命令 57

4.6.8 什么时候行计数可能是不准确的 57

4.7 组合索引 58

4.7.1 复合索引与多个索引的比较 58

4.8 聚簇索引 59

4.9 非聚簇索引 59

4.10 聚簇索引和非聚簇索引的比较 60

4.10.1 聚簇索引I/O消耗 60

4.10.2 非聚簇索引I/O消耗 60

4.10.3 表扫描I/O消耗比较 61

4.11 索引覆盖 61

4.12 多查询索引 62

4.13 OR语句的索引 62

4.13.1 特别的OR策略(多匹配索引扫描) 63

4.14 总结 63

第5章 优化器统计信息 64

5.1 什么是统计 64

5.2 optdiag 64

5.3 统计类型 64

5.3.1 表/索引级的统计 65

5.3.2 列级统计 68

5.4 理解update statistics 74

5.5 编辑列级统计信息 75

5.5.1 为何需要编辑统计信息 75

5.5.2 增加列统计信息 75

5.5.3 修改列级统计信息 78

5.5.4 删除列级统计信息 78

5.5.5 对统计和升级的一些说明 79

5.5.6 对增加或者修改的级列统计信息进行维护 79

5.6 Optdiag的模拟模式 80

5.6.1 什么可以被模拟 80

5.6.2 模拟没有保存在系统表的值 80

5.6.3 模拟列统计信息 81

5.7 在“what-if”分析中的optdiag模拟 82

5.7.1 模拟预备 82

5.7.2 使用模拟统计信息测试查询 82

5.7.3 校验使用的模拟统计信息 82

5.7.4 删除模拟统计信息 83

5.7.5 返回初始列级统计信息 83

第6章 ASE优化器 84

6.1 什么是优化器 84

6.1.1 为什么要学习优化器 84

6.1.2 优化器在查询过程中处于什么位置 85

6.2 优化阶段 85

6.2.1 准备阶段(索引选择阶段) 86

6.2.2 搜索引擎阶段 91

第7章 高速缓存策略 93

7.1 Sybase内存管理 93

7.1.1 内存分配 93

7.1.2 系统中所有内存的分配使用情况 94

7.1.3 在Adaptive Server 12.5中内存管理的变化 95

7.2 内存与性能 97

7.3 程序高速缓存 98

7.3.1 获得关于程序高速缓存大小的信息 98

7.3.2 程序高速缓存大小 99

7.4 数据高速缓存 99

7.4.1 混合工作负荷 99

7.5 命名高速缓存 99

7.5.1 MRU/LRU链 100

7.5.2 缓冲器清理 100

7.6 高速缓存策略 101

7.6.1 选择高速缓存策略 101

7.6.2 大块I/O与高速缓存策略 102

7.6.3 命名高速缓存优化 103

7.6.4 OLTP类型事务策略 103

7.6.5 DSS类型事务策略 104

7.6.6 宽松策略 105

7.7 大块I/O性能 105

7.8 配置高速缓存需要考虑的问题 106

第8章 并行查询处理 108

8.1 引言 108

8.2 为什么使用并行查询 108

8.3 并行处理模型 108

8.4 并行查询如何访问对象 109

8.4.1 基于散区的表扫描 110

8.4.2 基于散列的非聚簇索引扫描 110

8.4.3 基于散列的聚簇索引扫描 110

8.4.4 基于分区的扫描 110

8.4.5 基于分区的聚簇索引扫描 111

8.5 并行查询的ASE配置 111

8.6 控制并行查询的数量 111

8.7 如何执行并行查询 112

8.7.1 并行查询测试——单个查询 112

8.7.2 并行查询测试——多个查询 113

8.7.3 平衡吞吐量 114

8.8 工作进程不足 114

8.8.1 并行排序 115

8.8.2 配置生产者进程数量 115

8.8.3 配置消费者进程的数量 116

8.8.4 排序缓冲区 116

8.8.5 为优化性能配置ASE 116

8.8.6 Set sort_resources命令 116

8.8.7 期望的性能 117

8.9 监测并行查询 117

8.9.1 showplan 117

8.9.2 跟踪日志 118

第9章 应用程序设计 122

9.1 客户端设计 122

9.2 资源竞争 122

9.2.1 内存与缓存 124

9.2.2 临时数据库 124

9.3 应用程序的维护 125

9.3.1 索引 125

9.3.2 分区与并行 126

9.3.3 死锁 126

9.3.4 隔离水平 127

9.4 游标 128

9.5 事务长度 128

9.6 数据确认 129

9.7 数据处理 129

9.8 标准化与非标准化 130

9.9 HTML与XML 130

9.10 应用程序设计过程 131

第10章 T-SQL编程 132

10.1 本章简介 132

10.2 存储过程与内置代码 132

10.2.1 程序返回代码和错误处理 137

10.3 触发器 139

10.4 特征函数 142

10.4.1 子查询 145

10.4.2 事务嵌套级别和模式 147

10.4.3 Java函数 148

第11章 优化存储过程 149

11.1 简介 149

11.2 我应该从哪里开始 149

11.3 优化存储过程 149

11.4 存储并执行存储过程 150

11.4.1 建立查询树:解析方法 150

11.4.2 建立查询计划:编译 150

11.5 计划阶段 152

11.6 测试并调试存储过程 152

11.6.1 调试技巧 153

11.7 使用SARG(Search Arguments) 154

11.7.1 匹配SARG中的数据类型 154

11.7.2 SARG指导方针 156

11.8 临时表和存储过程 156

11.9 性能评估 158

11.9.1 showplan选项 158

11.9.2 统计信息时间 159

11.9.3 统计信息IO 159

11.9.4 fmtonly命令 159

11.9.5 forceplan命令 159

11.9.6 Table count 160

11.9.7 指定策略(index…prefetch…mru_lru…parallel) 160

11.9.8 sp_cachestrategy命令 160

11.9.9 sort_merge命令 160

11.9.10 parallel_degree命令 160

11.9.11 工具的使用 160

11.9.12 Showplan报告的解释 161

11.9.13 运行过程中存储过程的测量 162

11.9.14 连接列和搜索形参的检查 163

11.9.15 避免存储过程的“热点” 164

11.10 存储过程性能的提高 164

第12章 锁 166

12.1 对象为何要被锁定 166

12.2 ANSI事务隔离级别 166

12.2.1 级别0 166

12.2.2 级别1 166

12.2.3 级别2 167

12.2.4 级别3 167

12.2.5 默认隔离级别 167

12.2.6 设置会话隔离级别 167

12.2.7 设定语句隔离级别 168

12.2.8 锁定表命令 168

12.3 锁的粒度 168

12.3.1 页/行锁的类型 169

12.3.2 表锁 169

12.4 ASE锁定方案 169

12.4.1 全页锁 170

12.4.2 数据页锁 170

12.4.3 数据行锁 170

12.5 指定锁定方案 170

12.5.1 服务器级别锁定 170

12.5.2 表级别锁定 171

12.6 并行性问题 171

12.6.1 全页锁 171

12.6.2 数据页锁 171

12.6.3 数据行锁 172

12.7 配置锁升级 172

12.8 设定锁升级值 173

12.9 配置锁 173

12.10 游标锁定 174

12.11 小结 174

第13章 死锁 175

13.1 什么是死锁 175

13.1.1 各种类型的死锁 175

13.1.2 使用保持锁的死锁 176

13.1.3 Front-End死锁 177

13.1.4 错误1205 177

13.2 配置选择 177

13.2.1 死锁检查 178

13.2.2 死锁的避免 178

13.3 小结 179

第14章 配置 180

14.1 如何查看配置设定 180

14.2 显示级 180

14.3 如何改变配置值 182

14.3.1 使用sp_configure来指定配置文件 182

14.4 Sybase ASE 11.5版本配置新特征 183

14.4.1 错误日志消息扩展 184

14.4.2 存储过程的扩展 185

14.4.3 资源限制 185

14.5 用于NT平台的新配置参数 186

14.6 在Sybase ASE 11.9.2版本上的新配置特征 186

14.6.1 改变了的配置参数 189

14.6.2 重新命名了的配置参数 189

14.7 ASE 12的新配置参数 189

14.7.1 对现有配置参数的改变 192

14.8 Sybase ASE 12.5配置的变化 193

14.8.1 ASE 12.5有何新特点 193

14.8.2 升级 193

14.8.3 新配置参数 193

14.8.4 ASE中的内存 194

14.9 新的动态配置选项 197

14.9.1 改变了的配置选项 198

14.9.2 已删除的配置选项 198

第15章 如何读取Sp_sysmon输出 199

15.1 介绍 199

15.2 Sp_sysmon是如何工作的 199

15.3 什么时候运行Sp_sysmon 200

15.4 如何去运用这些数据呢 200

15.4.1 内核利用(Kernel Utilization) 201

15.4.2 任务管理 205

15.4.3 事务管理 207

15.4.4 锁管理 210

15.4.5 索引管理 212

15.4.6 磁盘I/O管理 215

15.4.7 数据高速缓存管理 217

15.4.8 过程cache管理 223

15.5 小结 225

第16章 网络性能 226

16.1 Sybase ASE如何处理客户连接 226

16.2 如何辨别网络性能问题 227

16.3 导致网络性能问题的可能原因 227

16.3.1 理解网络性能和结果语句的秘诀 230

16.4 总结 231

第17章 性能标准 232

17.1 CPU的利用率 232

17.2 存储管理 233

17.2.1 旋转锁 233

17.2.2 上下文高速缓存丢失 233

17.2.3 整个高速缓存丢失(或高速缓存命中)和整个高速缓存搜索 234

17.2.4 每秒钟高速缓存搜索 234

17.2.5 死锁 235

17.2.6 锁 235

17.3 I/O管理 235

17.3.1 从Sp_sysmon中统计磁盘数据 235

17.3.2 使用iostat的磁盘统计 236

17.4 网络管理 236

17.4.1 接收或发送网络包 236

第18章 审计系统 238

18.1 优化审计系统 238

18.1.1 可以审计什么 239

18.2 Sybsecurity数据库 239

18.3 安装审计系统 240

18.3.1 通过installsecurity安装审计系统 240

18.3.2 通过auditinit安装审计系统 240

18.4 审计表 240

18.4.1 了解审计表 241

18.4.2 改变当前审计表 244

18.4.3 存档审计表 245

18.4.4 设置阈值过程 245

18.4.5 将阈值过程添加到每一个审计段 246

18.5 当记录审计数据时 247

18.6 审计配置参数与系统程序 247

18.6.1 审计的系统程序 248

18.7 管理审计系统事务日志 248

18.7.1 截断事物日志 248

18.7.2 管理无截断的事物日志 249

18.7.3 设备充满时挂起审计 249

18.7.4 设置审计选项的例子 249

18.8 审计队列 250

18.9 查询审计追踪 250

18.10 回顾审计与性能 251

第19章 抽象查询计划 252

19.1 将查询与计划联系 253

19.2 抽象查询计划语言 253

19.2.1 访问方法详细说明 253

19.2.2 完整计划和部分计划例子 254

19.2.3 识别表 254

19.3 细说连接类型 255

19.4 提示与部分计划 256

19.5 非法或者不一致计划的详细说明 256

19.6 为子查询计划创建抽象计划 256

19.6.1 实现子查询 257

19.6.2 展平查询 257

19.6.3 嵌套子查询 258

19.7 重新格式化 259

19.8 OR策略 259

19.9 未指定store运算符 259

19.10 有关编写抽象计划的提示 260

19.10.1 捕获现有的计划 260

19.11 系统升级前后比较 260

第20章 各类主题 262

20.1 基本控制程序(BCP) 262

20.1.1 基本控制程序类型 262

20.1.2 如何使用基本控制程序 262

20.1.3 如何提高基本控制程序的性能 263

20.2 数据库一致性检查工具(DBCC)锁的注意事项 263

20.3 临时数据库(tempdb)性能问题 264

20.3.1 临时数据库性能诀窍 264

20.3.2 临时数据库中的锁冲突 267

20.4 日志瓶颈 267

20.5 小结 267

附录A 使用固态加速器优化Sybase ASE 268

附录B 碎片和数据库性能 274