第一篇 Sybase IQ产品综述 1
第一章 简介 3
第一节 Sybase IQ简述 3
1 IQ的历史 3
2 IQ的产品定位 3
3 为什么使用IQ 4
4 IQ的典型使用场景 4
4.1 查询分析系统 4
4.2 分布式数据集市 4
4.3 数据仓库 5
第二节 Sybase IQ的优势 6
1 极高的查询速度 6
2 高效率的数据装载 6
3 高效的数据压缩 6
4 超大规模数据容量 6
5 无限的可扩展性 6
6 灵活性 7
7 大幅降低总体拥有成本 7
第三节 Sybase IQ主要技术特征 7
1 独特的按列存储 7
2 数据压缩 8
3 独特的索引结构 9
3.1 数据属性与SQL使用方式的关系 9
3.2 位图索引(Bitmap) 9
3.3 Bit-Wise索引技术 10
4 查询优化 11
5 支持多种模型 11
6 并行操作 11
7 可扩展能力 12
第四节 数据仓库参考架构的性能基准测试 13
1 概述 13
2 详细说明 14
2.1 平台配置概览 14
2.2 IQ服务器配置 14
2.3 数据加载 15
2.4 性能测试详细情况 16
2.5 性能测试用查询语句 17
第二章 Sybase IQ的体系结构 21
第一节 基本概念 21
1 Adaptive Server Anywhere 21
2 Anywhere Database 21
3 Enterprise Database 21
4 IQ Database 21
5 Freelist 21
6 DBSpace 21
7 Catalog Store 22
8 IQ Store 22
9 IQ Local Store 22
10 IQ Temporary Store 22
11 IQ Message Log 22
12 IQ Transaction Log 22
13 Join Index 22
14 Metadata 23
15 Multiplex 23
16 Object 23
17 Proxy Database 23
18 Synchronize命令 23
19 Synchronization机制 23
第二节 Sybase IQ产品组成 23
1 IQ数据库服务器 23
2 客户端工具 24
第三节 Sybase IQ的架构 24
1 IQ Server概览 24
2 IQ数据库存储结构 25
第三章 Sybase ASE与Sybase IQ的区别 27
第一节 基本区别 27
1 单服务器、单库结构 27
2 数据库属主 27
3 连接和客户端工具 27
4 系统存储过程 28
5 数据存储 28
5.1 数据按列存储 28
5.2 大数据页 28
5.3 优化的数据存储 28
6 SQL语言 28
7 对象所有权 29
8 事务 29
9 扩展能力 29
10 跨数据库查询 30
第二节 区别详述 30
1 数据模型设计 30
2 管理 33
2.1 安装和设置 33
2.2 数据库和数据库对象 34
2.3 备份和恢复 36
3 数据类型 36
3.1 位类型 36
3.2 整数类型 36
3.3 字符/字符串类型 37
3.4 二进制类型 37
3.5 日期/时间类型 37
3.6 精确数值类型 38
3.7 近似数值类型 38
3.8 Java数据类型 38
4 SQL语言 38
4.1 系统选项 38
4.2 SQL语句 39
4.3 事务控制 41
5 连接能力 41
6 事务处理 41
6.1 IQ的锁模型 41
6.2 IQ的表级版本(Versioning) 42
7 安全 42
8 存储过程 42
9 数据库选项 46
10 保留字 46
第四章 Sybase IQ的索引 48
第一节 Sybase IQ的索引介绍 48
1 B-Tree索引和IQ索引的比较 48
2 IQ索引类型 49
2.1 Fast Projection索引(FP/缺省列索引) 49
2.2 Low Fast索引(LF) 50
2.3 High Group索引(HG) 51
2.4 High Non Group索引(HNG) 52
2.5 Compare索引(CMP) 52
2.6 Word索引(WD) 53
2.7 时间类型的索引 53
第二节 如何选择适合的Sybase IQ索引类型 53
1 选择索引类型需考虑的因素 53
1.1 唯一值的数量 54
1.2 数据类型 54
1.3 查询类型 55
1.4 磁盘空间 56
2 主要IQ索引的适用情况 57
2.1 FP索引 57
2.2 LF索引 57
2.3 HG索引 57
2.4 HNG索引 57
3 选择索引的一般性建议 57
第二篇 Sybase IQ应用设计与开发 59
第一章 数据仓库设计 61
第一节 概述 61
1 主要概念 62
2 数据仓库系统的组成 63
第二节 基于维度建模的数据仓库设计 65
1 维度建模概述 65
1.1 事实表与维度表 66
1.2 利用数据仓库总线结构将各个维度模型组合起来 66
1.3 一致性维度和标准事实 67
1.4 维度模型的优点 68
2 选择数据集市:单源和多源数据集市 68
3 确定事实表粒度 68
4 维度设计 69
4.1 选择维度 70
4.2 维度的数量 70
4.3 维度的层次 71
4.4 设计缓慢变化的维度 71
4.5 大型维度 72
4.6 一致性维度的设计 72
4.7 键的设计 72
4.7.1 代理键 72
4.7.2 代理日期键 73
5 事实项设计 73
5.1 选择事实项 73
5.2 建立一致性事实定义 74
5.3 可累加性事实、半可累加性事实以及非可累加性事实 74
6 维度设计的十大错误 75
第二章 Sybase IQ应用开发 76
第一节 Sybase IQ应用程序结构 76
第二节 使用ASE的接口访问IQ 77
1 建立Open Client应用程序的要求 77
2 数据类型映射 77
3 在Open Client应用程序中使用SQL 78
3.1 执行SQL语句 78
3.2 使用已准备的(Prepared)语句 78
3.3 使用游标 79
3.4 通过游标修改行 79
3.5 在Open Client中说明查询结果 80
4 IQ/ASA的已知Open Client限制 80
第三节 IQ/ASA特有的应用编程接口 80
1 JDBC 81
1.1 概述 81
1.1.1 选择JDBC驱动程序 81
1.1.2 JDBC程序结构 81
1.1.3 数据库中JDBC的选用 82
1.1.4 客户端与服务器端JDBC连接的区别 82
1.2 使用jConnect JDBC驱动程序 82
1.2.1 jConnect驱动程序文件 83
1.2.2 在数据库中安装jConnect系统对象 83
1.2.3 装载jConnect驱动程序 83
1.2.4 提供服务器的URL 83
1.2.5 指定服务器上的数据库 83
1.3 使用iAnywhere 84
1.4 建立JDBC连接 84
1.4.1 使用jConnect从JDBC客户端应用程序建立连接 84
1.4.2 有关JDBC连接的几点说明 85
1.5 使用JDBC访问数据 86
1.5.1 使用JDBC执行插入、更新和删除 86
1.5.2 使用JDBC查询 86
1.5.3 使用Prepared语句进行更有效的访问 86
1.5.4 其它JDBC注释 87
1.6 转义语法 87
2 E-SQL 87
2.1 简介 87
2.1.1 开发过程概述 87
2.1.2 运行SQL预处理器 88
2.1.3 支持的编译器 88
2.1.4 嵌入式SQL头文件 88
2.1.5 导入库 88
2.1.6 简单示例 89
2.1.7 嵌入式SQL程序的结构 89
2.1.8 游标 90
2.2 嵌入式SQL数据类型 90
2.3 使用主机变量 92
2.3.1 声明主机变量 92
2.3.2 C主机变量类型 93
2.3.3 主机变量的用法 94
2.3.4 指示符变量 95
2.4 SQL通信区域(SQLCA) 95
2.4.1 SQLCA字段 96
2.4.2 多线程代码或再入式代码的SQLCA管理 97
2.4.3 使用多个SQLCA 97
2.5 读取数据 98
2.5.1 最多返回一行的SELECT语句 98
2.5.2 在嵌入式SQL中使用游标 98
2.5.3 一次读取多行 98
2.6 静态和动态SQL 99
2.6.1 静态SQL语句 99
2.6.2 动态SQL语句 99
2.6.3 动态SELECT语句 99
2.7 SQL描述符区域(SQLDA) 99
2.7.1 SQLDA字段 100
2.7.2 SQLDA主机变量说明 100
2.7.3 SQLDA中的sqllen字段值 100
2.8 使用存储过程 101
2.9 SQL预处理器 102
3 ODBC 102
3.1 ODBC简介 102
3.2 创建ODBC应用程序 103
3.2.1 Including ODBC头文件 103
3.2.2 在Windows上连接ODBC应用程序 103
3.2.3 在UNIX上连接ODBC应用程序 103
3.3 ODBC示例 104
3.4 ODBC句柄 104
3.5 连接到数据源 105
3.5.1 选择ODBC连接函数 106
3.5.2 建立连接 106
3.5.3 设置连接属性 107
3.5.4 ODBC应用程序中的线程和连接 107
3.6 执行SQL语句 107
3.6.1 直接执行语句 107
3.6.2 在ODBC应用程序中执行包含绑定参数的SQL语句 107
3.6.3 执行准备好的SQL语句 108
3.7 使用结果集 109
3.7.1 选择游标特性 109
3.7.2 检索数据 110
3.7.3 通过游标更新和删除行 110
3.7.4 使用书签 111
3.8 调用存储过程 111
3.9 处理错误 112
第四节 Sybase IQ SQL的特点 114
1 和T-SQL的兼容性 115
2 IQ独有的特性 116
第五节 使用OLAP 118
1 概述 118
1.1 OLAP的好处 118
1.2 理解OLAP的计算 118
2 对Group By子句的扩展 119
2.1 GROUP BY ROLLUP 120
2.2 GROUP BY CUBE 122
3 分析函数 125
3.1 窗口函数 126
3.1.1 OLAP窗口 126
3.1.2 排位函数 128
3.1.3 窗口聚集函数 129
3.1.4 统计聚集函数 130
3.1.5 分布函数 130
3.2 数值函数 132
4 OLAP的规则和限制 132
第三篇 Sybase IQ系统管理 133
第一章 Sybase IQ系统管理概述 135
第一节 IQ系统管理简介 135
1 IQ管理任务 135
2 IQ安全概览 136
3 IQ管理工具 136
4 管理超大IQ数据库 137
第二节 IQ组成 137
1 数据库服务器 137
2 Catalog和IQ 137
3 存储过程 138
4 系统表和视图 138
5 命令和函数 138
6 消息记录 138
7 Utility数据库 139
第二章 Sybase IQ系统构建 140
第一节 IQ的安装与配置 140
1 IQ的安装 140
1.1 安装前准备 140
1.2 安装IQ 143
1.2.1 UNIX平台上的安装 143
1.2.2 Windows平台上的安装 144
1.2.3 升级 145
1.2.4 验证安装 145
1.3 安装IQ客户端 145
1.3.1 Linux平台 145
1.3.2 Windows平台 146
2 IQ的启动与停止 147
2.1 启动IQ服务器 147
2.1.1 使用启动命令启动IQ服务器 147
2.1.2 运行Multiplex服务器的规则 148
2.1.3 使用Sybase Central启动IQ服务器 148
2.2 停止IQ服务器 148
2.2.1 什么时候停止并重启服务器 148
2.2.2 如何停止IQ服务器 149
2.2.3 谁可以停止IQ服务器 149
2.2.4 关闭操作系统 149
3 管理连接 149
4 数据移植 150
4.1 Non-Multiplex升级 150
4.2 混合版本的Multiplex 151
4.3 从32位平台移植到64位平台 151
4.4 跨平台移植 151
5 配置IQ 152
5.1 配置IQ Server 152
5.2 配置备份设备 153
5.3 配置客户连接 153
5.3.1 JDBC 153
5.3.2 ODBC 154
5.3.3 OLE DB 154
5.3.4 Open Client 154
5.3.5 同一机器上的Server和Client 154
5.3.6 网络要求 154
第二节 IQ数据库 154
1 IQ数据库简介 154
2 创建Sybase IQ数据库 156
2.1 确定IQ服务器类型 156
2.2 选择设备类型 156
2.3 估算数据库的大小 157
2.4 创建数据库 157
3 DBSpace的维护 158
3.1 增加DBSpace 158
3.2 删除DBSpace 159
第三节 表和索引 160
1 表的创建、修改和删除 160
1.1 IQ表的类型 160
1.2 创建IQ表 160
1.3 修改IQ表 161
1.4 删除IQ表 161
2 使用IQ索引 162
2.1 创建IQ索引 162
2.1.1 创建IQ索引的示例 163
2.1.2 并行创建IQ索引 163
2.2 验证索引 164
2.3 删除IQ索引 164
3 视图的创建和删除 164
3.1 视图定义 164
3.2 视图的优点 164
3.3 视图操作 165
第四节 数据导入导出 166
1 数据导入 166
1.1 数据加载的一般方法 166
1.1.1 数据源 166
1.1.2 加载的基本方法 166
1.1.3 数据加载的语法 166
1.1.4 LOAD TABLE之加载列表 168
1.1.5 LOAD TABLE之FROM子句 169
1.1.6 LOAD TABLE之加载选项 169
1.1.7 时间列加载的注意事项 170
1.1.8 其它加载选项 170
1.1.9 数据加载错误的调试 170
1.1.10 数据的删除 170
1.1.11 数据更改 171
1.2 数据加载的高级内容 171
1.2.1 非正常加载数据的处理 171
1.2.2 从多个文件中加载数据 172
1.2.3 部分数据(Partial-Width Load)加载 172
1.2.4 在加载数据的同时扩充DBSpace 173
1.3 使用INSERT语句加载数据 173
1.3.1 从IQ Main Store中插入数据 173
1.3.2 从远程数据库中插入数据 173
1.3.3 复制到Sybase IQ数据库 174
2 数据导出 174
第三章 Sybase IQ日常管理 176
第一节 用户和权限管理 176
1 IQ安全概览 177
1.1 用户和组 177
1.2 对象许可、DBA权限和RESOURCE权限 178
1.3 Multiplex环境中的权限管理 179
1.4 启动命令start_asiq中的许可选项 179
2 管理用户账号和连接 180
2.1 用户管理用系统存储过程与系统表 180
2.2 权限级别 181
3 Multiplex登录管理 181
4 Utility数据库服务器的安全 183
5 管理用户账号和权限 184
6 管理组 185
第二节 事务和锁管理 186
1 事务管理概览 186
2 锁管理 187
3 版本管理 188
第三节 Sybase IQ内存配置 191
1 Sybase IQ内存的组成 191
1.1 操作系统及其它应用 192
1.2 IQ服务器 192
1.3 IQ系统开销内存 192
1.4 IQ Main Cache和IQ Temp Cache 193
2 如何合理设置内存 193
3 内存和交换区的使用 194
第四节 备份与恢复 194
1 备份IQ数据库 195
1.1 备份的类型 195
1.2 选择备份设备 197
1.3 备份前准备 197
1.4 数据一致性与备份 198
1.5 备份命令 198
1.5.1 备份选项 199
1.5.2 IQ备份注意事项 199
1.6 备份失败的恢复 200
1.7 使用非Sybase备份产品 200
2 虚拟备份 200
2.1 虚拟备份及其用途 200
2.2 两类虚拟备份 201
2.3 SAN快照或映像硬件与虚拟备份的配合使用 202
2.4 sa_checkpoint_execute存储过程 203
3 执行纯系统级备份 203
3.1 关闭数据库 204
3.2 备份正确的文件 204
4 Sybase IQ数据库的恢复 205
4.1 恢复操作之前的准备 205
4.2 IQ数据库恢复命令 205
4.3 IQ数据库恢复的注意事项 207
第四章 Sybase IQ Multiplex管理 208
第一节 Sybase IQ Multiplex简介 208
第二节 创建Multiplex 212
第三节 使用Sybase Central以外的工具管理Multiplex 214
第四节 同步查询服务器 214
第五节 管理Multiplex 215
第六节 删除查询服务器 216
第四篇 Sybase IQ性能调优 217
第一章 Sybase IQ性能调优概述 219
第一节 IQ性能调优的必要性 219
第二节 性能调优的总方针 219
第二章 性能的监控与调优 221
第一节 查看IQ的环境 221
1 使用存储过程获得信息 221
2 使用Sybase Central性能监控器 222
3 存储程序性能分析/剖析 222
3.1 激活procedure profiling 222
3.2 重置procedure profiling 223
3.3 禁用procedure profiling 223
3.4 在Sybase Central中观察进程profiling信息 224
3.4.1 观察整个数据库的profiling信息 224
3.4.2 观察指定过程的profiling信息 225
3.5 使用Interactive SQL观察procedure profiling信息 226
3.5.1 查看所有过程的摘要profiling信息 226
3.5.2 从Interactive SQL中查看指定过程的profiling信息 226
第二节 监控高速缓存(Buffer Cache) 227
1 启动高速缓存(Buffer Cache)监控器 227
2 查看监控结果 227
3 保存监控结果 227
4 停止高速缓存(Buffer Cache)监控器 228
第三节 监控器统计信息 228
1 汇总(summary)统计信息 228
1.1 LRU/MRU链 228
1.2 汇总报告包含的输出项 229
2 高速缓存统计(cache和cache_by_type)信息 229
2.1 高速缓存(cache)包含的输出项 229
2.2 按高速缓存类型(cache_by_type)进行统计的信息 230
3 I/O(io)统计信息 231
4 系统争用(contention)统计信息 231
5 线程(thread)统计信息 232
6 缓冲器分配(bufalloc)统计信息 232
7 监控结果的举例 233
第四节 监控页面交换的实用程序 235
第五节 高速缓存(Buffer Cache)的结构 235
第六节 消除缓冲区管理器抖动 236
1 监控Windows系统上的页面调度 237
2 监控UNIX系统上的页面调度 237
第七节 高速缓存(Buffer Cache)监控器的检查表 239
第八节 用于监控CPU使用情况的系统工具 241
第三章 SQL优化 242
第一节 查询技巧 242
1 优化SQL的基本方法 242
2 改善小计的计算 242
3 UNION ALL上的GROUP BY查询性能 242
4 由CIS/Adaptive Server Anywhere处理的语句 242
第二节 查询计划 243
1 查询评估选项 243
2 查询树 244
3 IQ Message文件中的查询计划 244
4 使用HTML形式的查询计划 244
5 利用查询计划调优的案例 245
5.1 生成查询树及查询计划 245
5.2 分析查询树 246
5.2.1 叶节点 246
5.2.2 叶节点中显示的信息 246
5.2.3 连接(Join)节点 251
5.2.4 GROUP BY节点 253
5.2.5 其它节点类型 253
5.2.6 节点 254
5.3 通用的性能提示 254
5.4 利用查询计划调优的其它注意事项 254
第三节 控制查询过程 255
1 设置查询的时间限制 255
2 设置查询的优先级 255
3 设置查询优化选项 255
4 设置谓词提示 256
第四节 查询处理和优化 257
1 优化器如何使用索引 257
2 优化器选择索引的顺序 257
3 更多的调优选项 257
3.1 选项的查看 257
3.2 选项的修改 257
3.3 选项详解 257
3.3.1 游标管理 257
3.3.2 查询管理 257
3.3.3 G-Array(HG)选项 259
3.3.4 High Group插入 259
3.3.5 行数控制 259
3.3.6 用户数的控制 259
3.3.7 CIS控制 259
3.3.8 预取控制 259
3.3.9 重取控制 260
3.3.10 检查点及恢复的控制 260
3.3.11 事务控制 260
3.3.12 精度和标度 260
3.3.13 FP并行管理 260
3.3.14 缓冲区清理 261
3.3.15 删除操作的优化 261
第四章 系统资源优化 263
第一节 内存的优化 263
1 内存使用总览 263
1.1 页面交换增加了可用的内存 263
1.2 服务器内存(Server Memory) 263
1.3 高速缓存的管理 264
2 确定高速缓存的大小 264
2.1 操作系统和其它应用 264
2.2 IQ服务器所需的内存 265
2.3 用于系统开销的Sybase IQ内存 265
2.3.1 Raw Partition与文件系统 265
2.3.2 多用户的数据库存取 265
2.3.3 数据加载的内存需求 265
2.3.4 用于线程堆栈的内存 265
2.3.5 其它内存开销 266
2.4 Sybase IQ主高速缓存和临时高速缓存 266
2.4.1 高速缓存(Buffer Cache)和物理内存 266
2.4.2 其它需要考虑的事项 267
3 设置高速缓存的大小 267
4 节省内存 268
4.1 减少高速缓存(Buffer Cache)设置 268
4.2 减少用于数据加载的内存 268
4.3 调整数据加载的块因子(BLOCK FACTOR) 268
5 针对大用户量的优化 268
5.1 用于处理大用户数的Sybase IQ命令行选项 268
5.2 为大用户数增加Sybase IQ的临时空间 269
5.3 新连接与既有连接的优先级关系 269
6 平台相关的内存选项 269
第二节 多线程模型及其使用 271
1 线程不足的错误 271
2 IQ管理线程的选项 271
第三节 I/O平衡 272
1 原始I/O(Raw I/O,UNIX操作系统) 272
2 使用磁盘条带技术(Disk Striping) 272
2.1 UNIX平台上的设置 273
2.2 Windows平台上的设置 273
2.3 对磁盘条带技术的建议 273
3 IQ内置的条带技术 273
4 使用多个DBSpace 274
5 文件存放策略 274
5.1 事务处理日志 274
5.1.1 截断事务日志的方法 274
5.1.2 截断非Multiplex数据库的事务日志 275
5.1.3 截断Multiplex数据库的事务日志 275
5.2 消息日志文件 276
第四节 资源调优 276
1 用于调优资源使用的选项 276
1.1 限制并发查询 276
1.2 设置可用的CPU数 277
1.3 限制查询对临时DBSpace的使用 277
1.4 限制查询可返回的最大行数 277
1.5 强制游标为非滚动状态 277
1.6 限制游标的数量 277
1.7 限制语句的数目 277
1.8 设置预取的缓存页 278
1.9 典型应用的优化 278
1.10 控制游标预取的行数 278
2 其它改善资源使用的方法 278
2.1 管理Multiplex数据库的磁盘空间 278
2.2 在多个查询服务器间平衡负载 278
2.3 限制数据库存取 279
2.4 磁盘缓存 279
2.5 用于数据插入、删除及同步的工作空间 279
2.6 如何设置预留空间 279
第五节 使用索引的技巧 279
1 选择正确的索引类型 279
2 使用Join索引(Join Index) 280
3 为删除操作预留足够的空间 280
第六节 管理数据库的大小及结构 280
1 数据库大小的管理 280
2 控制索引碎片 281
3 减少catalog文件的增长 281
4 通过非规范化(Denormalization)提高性能 281
5 非范式化(Denormalization)存在的风险 281
6 非范式化(Denormalization)的缺点 282
7 非范式化(Denormalization)的优点 282
8 确定是否使用非范式化(Denormalization) 282
第七节 网络性能调优 282
1 改善大数据量传输 282
2 分离网络占用严重的用户 283
3 以小包发送少量数据 283
4 以大包发送大量数据 284
5 尽量在服务器端处理 284
第八节 并行管理 284
1 数据导入、导出 284
1.1 数据导入 284
1.2 数据导出 284
2 并行创建索引 285
3 UNION ALL视图与并行操作 285
3.1 UNION ALL视图简介 285
3.2 用UNION ALL视图提高加载速度 285
3.3 优化引用UNION ALL视图的查询 286
3.4 用UNION ALL视图上的GROUP BY语句改善查询性能 286
3.4.1 分离的GROUP BY(Split GROUP BY)的限制 287
3.4.2 “分离的GROUP BY”的例子 288
4 Sybase IQ Multiplex 288
第九节 备份/恢复的性能优化 289
1 增加归档设备的数量 289
2 减少数据校验 289
3 假脱机备份数据 289
4 增加用于备份的内存 290
5 平衡系统负载 290
6 控制Catalog Store的大小 290
第五篇 Sybase IQ故障诊断和错误信息 292
第一章 故障诊断与解决 294
第一节 特殊情况下的解决方案 294
1 服务器恢复与数据库修复 294
2 服务器运行问题 295
2.1 Sybase IQ不能启动 295
2.1.1 事务日志与数据库不匹配 295
2.1.2 服务器找不到事务日志 296
2.1.3 服务器名称在网络中不唯一 296
2.1.4 服务器端口号在同一机器上不唯一 296
2.1.5 Windows内存不足 297
2.1.6 环境变量设置不正确 297
2.1.7 不能运行start_asiq 297
2.2 Sybase IQ停止处理或停止响应 298
2.3 服务器关闭失败 300
2.4 系统失败/Sybase IQ失败 301
3 数据库连接问题 301
4 Multiplex问题 302
4.1 在写服务器和查询服务器上Main DBSpace的计数不同 303
4.2 Multiplex同步操作时报错“Not enough space” 303
5 dbisql/dbisqlc问题 303
5.1 数据截断或数据转换错误 303
5.2 dbisqlc窗口不能在UNIX中工作 303
5.3 退出dbisql之后目录保留 304
6 资源问题 304
6.1 磁盘空间不足 304
6.1.1 可能的对策 304
6.1.2 checkpoint期间空间短缺 305
6.1.3 在连接不上IQ服务器的情况下增加空间 305
6.1.4 管理DBSpace大小 305
6.2 监控磁盘空间使用情况 306
6.3 线程不足 307
6.4 堆栈溢出 307
6.5 在异常退出后遗留的信号灯和未释放的共享内存 308
6.6 过程标识符不足 308
7 处理问题 308
7.1 表上索引太多 308
7.2 超出预期的长时间数据装载或查询 308
7.3 因唯一值的数目而加载失败 309
7.4 不能写到被锁定的表 309
7.5 管理表上的写锁竞争 310
7.6 检查点方面的提示 311
8 性能问题——在多CPU或者超线程的机器上IQ性能低下 311
9 Sybase Central问题——某些Sybase Central区域不能显示 311
第二节 网络通信故障的发现与解决 311
1 确保协议兼容 311
2 确保使用最新的驱动程序 311
3 断电式重启计算机 312
4 逐层诊断网络协议栈 312
5 测试NETBIOS协议 312
6 测试TCP/IP协议 312
6.1 使用ping测试IP层 312
6.2 使用TELNET测试TCP/IP协议 312
7 诊断布线问题 313
8 核查常见的网络通信问题 313
第三节 诊断工具 313
1 sp_iqstatus存储过程 313
2 sp_iqcheckdb存储过程 315
3 检查数据库及服务器启动参数设置 315
4 查明当前正在执行的语句 315
5 记录服务器请求 316
6 收集诊断信息的连接 318
7 诊断通信问题 318
第四节 提交问题给技术支持 318
1 使用getiqinfo收集诊断信息 319
2 getiqinfo收集的信息 319
3 关联连接信息 320
4 其它来源的帮助信息 321
5 检查列表:为技术支持提供的信息 321
第二章 系统恢复与数据库修复 322
第一节 恢复与修复概览 322
第二节 正常恢复 322
第三节 数据库验证 323
1 sp_iqcheckdb 323
1.1 sp_iqcheckdb的check(检查)模式 324
1.2 sp_iqcheckdb的verify(校验)模式 324
1.3 sp_iqcheckdb的allocation(分配)模式 325
1.4 sp_iqcheckdb的repair(修复)模式 325
2 sp_iqcheckdb输出 326
3 运行sp_iqcheckdb的资源问题 326
第四节 数据库修复 327
1 索引错误分析 327
1.1 索引不一致问题的输出 327
1.2 DBCC的索引错误 329
2 索引错误修复 330
2.1 DBCC索引修复命令的输出 330
2.2 重新创建FP索引 331
2.3 DBCC的索引修复消息 331
3 分配问题分析 332
4 分配问题修复 333
第五节 强制恢复模式 334
1 在强制模式下启动服务器 334
1.1 以强制模式启动服务器的一般步骤 334
1.2 强制恢复后不执行sp_iqcheckdb 335
2 泄漏空间恢复 335
3 恢复Multiplex数据库 336
3.1 单节点模式 336
3.2 替换写服务器 336
第六节 无事务日志状态下的紧急恢复 336
第七节 处理不可修复问题 337
1 不能修复的索引问题 338
2 删除有问题的索引、表或者列 338
第八节 DBCC错误信息 339
第三章 Sybase IQ错误信息 341
第一节 以SQLCODE表示的错误信息 341
1 概述 341
2 SQLCODE错误信息的组成 341
3 内部错误(Assertion Failed) 342
第二节 以SQLSTATE表示的错误消息 342
第三节 以Sybase错误代码表示的错误消息 342
第六篇 附录 345
第一章 Sybase IQ实用程序指南 347
第一节 概述 347
第二节 实用程序详述 348
1 start_asiq(启动数据库服务器) 348
1.1 语法 348
1.2 用法 348
1.3 开关参数 349
1.3.1 start_asiq的服务器开关参数 349
1.3.2 start_asiq的数据库开关参数 359
1.3.3 Multiplex选项与dbremote开关参数 359
1.3.4 恢复(Recovery)开关参数 360
2 dbstop(停止数据库服务器) 361
2.1 语法 361
2.2 用法 361
2.3 选项 361
3 stop_asiq(停止数据库服务器,仅适用于UNIX和Linux) 362
3.1 语法 362
3.2 用法 362
3.3 选项 362
4 dbisql(交互式SQL实用程序) 362
4.1 dbisql与dbisqlc 363
4.2 语法(命令行方式) 363
4.3 用法 363
4.4 选项 363
5 dbisqlc(dbisql Classic实用程序) 365
5.1 语法(命令行方式) 365
5.2 用法 365
5.3 选项 365
5.4 dbisqlc窗口的功能键和特殊键(UNIX平台) 366
6 iq_bcp(批拷贝) 367
6.1 语法 367
6.2 用法 367
6.3 选项 368
7 dbbackup(事务日志备份) 369
7.1 语法 369
7.2 用法 369
7.3 选项 369
7.4 示例 370
8 CP874toUTF8(字符集转换) 370
8.1 语法 370
8.2 用法 370
9 dbcollat(排序规则) 371
9.1 语法 371
9.2 用法 371
9.3 选项 371
9.4 示例 372
10 defncopy(拷贝数据库对象的定义) 372
10.1 语法 373
10.2 用法 373
10.3 参数 373
10.4 示例 374
11 iqdsn(数据源管理) 374
11.1 语法 375
11.2 用法 375
11.3 选项 375
11.3.1 主选项(Major Options) 375
11.3.2 修饰选项(Modifier Options) 375
11.3.3 细节选项(Details Options) 376
11.4 示例 376
12 dbfhide(文件内容隐藏) 377
12.1 语法 377
12.2 用法 377
12.3 选项 377
12.4 隐藏.ini文件的内容 377
12.5 示例 378
13 dbinfo(显示目录存储Catalog Store信息) 378
13.1 语法 378
13.2 用法 378
13.3 选项 378
14 dbtran(日志翻译) 379
14.1 语法 379
14.2 用法 379
14.3 选项 379
15 dbping(ping实用程序) 381
15.1 语法 381
15.2 用法 382
15.3 选项 382
16 dblocate(服务器定位) 383
16.1 语法 383
16.2 用法 383
16.3 选项 383
17 dblog(事务日志管理) 383
17.1 语法 383
17.2 用法 383
17.3 选项 384
18 dbvalid(验证实用程序) 384
18.1 语法 385
18.2 用法 385
18.3 选项 385
18.4 程序的退出码 386
18.5 示例 386
第三节 SQL预处理器 387
1 SQL预处理器介绍 387
2 sqlpp(SQL预处理器程序) 387
2.1 语法 387
2.2 用法 387
2.3 选项 387
第二章 Sybase IQ资源规划指南 390
1 综述 390
2 CPU的配置 392
2.1 数据加载时的CPU规划 392
2.1.1 单行数据修改 392
2.1.2 批量加载时的CPU规划 392
2.2 查询系统的CPU规划 393
2.3 多主机配置(IQ Multiplex) 394
3 Sybase IQ内存管理 394
3.1 “操作系统内存”与“非Sybase IQ内存” 394
3.2 Sybase IQ内存(Sybase IQ Memory) 394
3.2.1 服务器配置(Server Configuration) 395
3.2.2 版本控制(Versioning) 395
3.2.3 加载内存(Load Memory) 395
3.2.4 位图内存(Bitmap Memory) 396
3.2.5 备份内存(Backup Memory) 397
3.2.6 完整的内存分配 398
3.3 按照IQ操作类型进行内存规划 399
3.3.1 单行数据修改 399
3.3.2 批量加载时的内存规划 399
3.3.3 查询系统的内存规划 400
3.4 交换空间的分配(Swap Space) 400
4 磁盘与I/O 400
4.1 Sybase IQ磁盘规划的基本原则 400
4.2 通用规则 401
4.3 物理驱动和设备控制器(Physical Drives & Device Controllers) 402
4.4 单节点环境所需的设备 402
4.5 多节点环境所需的设备 402
4.6 IQ设备的放置 403
5 网络性能 403
6 扩展能力 403
第三章 国际语言与字符集 405
第一节 简介 405
1 Sybase IQ的国际化功能 405
2 Sybase IQ的缺省排序规则(Collation) 405
第二节 了解软件中的字符集 406
1 字符集方面的有关概念 406
2 客户/服务器计算环境中的语言问题 407
3 Windows环境中的代码页 407
3.1 上部页(Upper Page)与下部页(Lower Page) 407
3.2 Windows系统中的ANSI与OEM代码页 408
3.3 Sybase IQ支持的代码页 408
4 多字节字符集 412
5 使用排序规则对字符进行排序 412
5.1 使多个字符与某个排序位置关联 412
5.2 多字节字符集的首字节排序规则 413
6 区分大小写与国际化 413
第三节 了解地区(Locale) 413
1 地区(Locale)简介 413
2 了解地区语言(Locale Language) 414
3 了解地区字符集 415
第四节 了解排序规则 417
1 选择排序规则 417
2 显示排序规则 418
3 Sybase IQ提供的排序规则和推荐使用的排序规则 418
4 替代性排序规则(Alternate Collation) 420
5 选用ANSI还是OEM? 421
5.1 对ANSI排序规则的说明 421
5.2 对OEM排序规则的说明 422
6 使用多字节排序规则 423
第五节 了解字符集转换 424
1 数据库消息的字符转换 424
2 连接字符串与字符集 425
3 避免字符集转换 425
第六节 有关排序规则的内部细节 426
1 注释行 426
2 标题行 426
3 排序规则节 427
4 编码节 429
5 属性节 429
第七节 与国际语言和字符集有关的管理工作 429
1 查找缺省的排序规则 430
2 配置字符集环境 430
3 为数据库选择排序规则 430
4 确定地区信息 430
5 设置地区 431
5.1 设置Sybase IQ的地区 431
5.2 为INSERT……LOCATION语句设置地区 431
6 使用指定的排序规则创建数据库 432
7 控制字符集转换功能 432
8 创建自定义的排序规则 432
9 使用自定义的排序规则创建数据库 433
10 改变数据库的排序规则 433
第八节 兼容性问题 434
第九节 性能问题 434
插图、表格索引 435
插图索引 435
表格索引 436