1.1 关于本书 1
第1章 综合信息 1
1.2 本书中使用的惯例 2
1.3 MySQLAB概述 3
1.4 MySQL数据库管理系统概述 4
1.4.1 MySQL的历史 5
1.4.2 MySQL的主要功能 5
1.4.3 MySQL的稳定性 8
1.4.4 MySQL表能有多大 8
1.4.5 2000年适应性 9
1.5.1 什么是MaxDB 11
1.5 MaxDB数据库管理系统概述 11
1.5.2 MaxDB的历史 12
1.5.3 MaxDB的功能 12
1.5.4 许可权和支持 13
1.5.5 MaxDB与MySQL之间的功能差异 13
1.5.6 MaxDB与MySQL之间的互操作性 14
1.5.7 MaxDB的相关链接 14
1.6 MySQL的开发路标 14
1.6.1 MySQL 5.0有哪些新功能 15
1.7.1 MySQL邮件列表 17
1.7 MySQL信息源 17
1.7.2 MySQL团体对MySQL论坛的支持 19
1.7.3 MySQL团体对Internet多线交谈(IRC)的支持 19
1.8 怎样报告程序错误或问题 20
1.9 MySQL遵循的标准 24
1.9.1 MySQL遵循哪些标准 24
1.9.2 选择SQL模式 25
1.9.3 用ANSI模式运行MySQL 25
1.9.4 对标准SQL的MySQL扩展 25
1.9.5 MySQL与标准SQL的区别 28
1.9.6 MySQL怎样处理限制 33
第2章 安装和升级MySQL 37
2.1 普通安装问题 37
2.1.1 MySQL支持的操作系统 38
2.1.2 选择安装哪一个MySQL版本 39
2.1.3 怎样获得MySQL 44
2.1.4 用MD5校验和或GnuPG验证软件包的完整性 44
2.1.5 安装布局 47
2.2 使用二进制版的标准MySQL安装 49
2.3 在Windows上安装MySQL 49
2.3.3 使用MySQL安装向导 50
2.3.2 用自动安装程序安装MySQL 50
2.3.1 选择安装软件包 50
2.3.4 使用配置向导 53
2.3.5 从Noinstall Zip压缩文件安装MySQL 58
2.3.6 将安装压缩文件解压缩 58
2.3.7 创建选项文件 58
2.3.8 选择MySQL服务器类型 59
2.3.9 第一次启动服务器 60
2.3.10 从Windows命令行启动MySQL 61
2.3.11 作为Windows服务启动MySQL 62
2.3.12 测试MySQL的安装 64
2.3.13 Windows下MySQL安装的故障检修 65
2.3.14 在Windows上升级MySQL 66
2.3.15 Windows上的MySQL与UNIX上的MySQL对比 67
2.4 在Linux上安装MySQL 69
2.5 在Mac OS X上安装MySQL 71
2.6 在NetWare上安装MySQL 73
2.7 在其他类UNIX系统中安装MySQL 75
2.8 使用源代码版安装MySQL 77
2.8.1 源代码安装概述 78
2.8.2 典型configure选项 80
2.8.3 从开发源代码树安装 83
2.8.4 处理编译MySQL的问题 85
2.8.5 MIT-pthreads注意事项 88
2.8.6 在Windows上从源代码安装MySQL 89
2.8.7 在Windows上编译MySQL客户程序 92
2.9 安装后的设置与测试 92
2.9.1 Windows的安装后措施 93
2.9.2 Unix的安装后措施 94
2.9.3 保护初始MySQL账户的安全 103
2.10 升级MySQL 106
2.10.1 从MySQL5.0升级到5.1 107
2.10.2 从MySQL4.1升级到5.0 108
2.10.3 将MySQL数据库复制到另一台机器上 113
2.11 降级MySQL 114
2.11.1 降级到MySQL 4.1 114
2.12 操作系统特别的提示 115
2.13 Perl安装说明 115
2.13.1 在UNIX上安装Perl 115
2.13.2 在Windows上安装ActiveState Perl 116
2.13.3 使用Perl DBI/DBD接口的问题 117
第3章 使用MySQL程序 119
3.1 MySQL程序概述 119
3.2 调用MySQL程序 120
3.3.1 在命令行中使用选项 121
3.3 指定程序选项 121
3.3.2 使用选项文件 123
3.3.3 用环境变量指定选项 127
3.3.4 用选项设置程序变量 127
第4章 数据库管理 129
4.1 服务器端程序概述 129
4.2 mysqld——MySQL服务器 130
4.2.1 mysqld命令选项 130
4.2.2 服务器系统变量 139
4.2.3 使用系统变量 161
4.2.4 服务器状态变量 169
4.2.5 服务器SQL模式 177
4.2.6 MySQL服务器关机过程 181
4.3 mysqld-max扩展的MySQL服务器 182
4.4 MySQL服务器启动程序 184
4.4.1 mysqld_safe——MySQL服务器启动脚本 184
4.4.2 mysql.server——MySQL服务器启动脚本 187
4.4.3 mysql_multi——管理多个MySQL服务器 188
4.5 mysqlmanager——MySQL实例管理程序 191
4.5.1 使用MySQL实例管理程序启动MySQL服务器 192
4.5.2 连接到MySQL实例管理程序并创建用户账户 192
4.5.3 MySQL实例管理程序命令选项 193
4.5.4 MySQL实例管理程序配置文件 194
4.5.5 MySQL实例管理程序认可的命令 195
4.6 安装相关的程序 197
4.6.1 mysql_fix_privilege_tables——升级MySQL系统表 197
4.6.2 mysql_upgrad——为MySQL升级检查表 198
4.7 一般性安全问题 199
4.7.1 一般性安全原则 199
4.7.2 使MySQL安全防御攻击者 202
4.7.3 mysqld安全相关选项 203
4.7.4 使用LOAD DATA LOCAL的安全问题 204
4.7.5 作为普通用户怎样运行MySQL 205
4.8 MySQL访问权限系统 206
4.8.1 权限系统做了什么 206
4.8.2 权限系统如何工作 206
4.8.3 MySQL提供的权限 210
4.8.4 连接到MySQL服务器 212
4.8.5 访问控制 第一阶段:连接验证 213
4.8.6 访问控制 第二阶段:请求验证 217
4.8.7 何时权限更改生效 219
4.8.8 拒绝访问错误的原因 219
4.8.9 MySQL 4.1的密码散列 224
4.9.1 MySQL用户名和密码 228
4.9 MySQL用户账户管理 228
4.9.2 给MySQL添加新用户账户 229
4.9.3 从MySQL删除用户账户 232
4.9.4 限制账户资源 232
4.9.5 指定账户密码 233
4.9.6 保持用户密码的安全 234
4.9.7 使用安全连接 235
4.10 备份和还原 242
4.10.1 数据库备份 242
4.10.2 备份和还原策略的范例 244
4.10.3 指定时间还原 247
4.10.4 表维护和应急还原 249
4.11 MySQL本地化和国际应用 259
4.11.1 用于数据和分类的字符集 259
4.11.2 设置错误信息语言 260
4.11.3 添加一个新的字符集 260
4.11.4 字符定义数组 262
4.11.5 字符串分类支持 262
4.11.6 多字节字符支持 262
4.11.7 字符集问题 263
4.11.8 MySQL服务器时区支持 263
4.12 MySQL服务器日志 264
4.12.3 二进制日志 265
4.12.1 错误日志 265
4.12.2 通用查询日志 265
4.12.4 慢查询日志 269
4.12.5 服务器日志维护 269
4.13 在一台计算机上运行多个MySQL服务器 270
4.13.1 在Windows下运行多个服务器 272
4.13.2 在Unix系统中运行多个服务器 275
4.13.3 在多服务器环境下使用客户端程序 276
4.14 MySQL查询高速缓存 276
4.14.1 查询高速缓存如何工作 277
4.14.2 查询高速缓存SELECT选项 278
4.14.3 查询高速缓存配置 279
4.14.4 查询高速缓存状态和维护 280
第5章 复制 282
5.1 复制概述 282
5.2 复制执行总览 283
5.3 基于行的复制 283
5.4 复制实现的细节 284
5.4.1 复制主服务器的线程状态 285
5.4.2 复制从服务器的I/O线程状态 286
5.4.3 复制从服务器的SQL线程状态 287
5.4.4 复制中继与状态文件 287
5.5 如何设置复制 288
5.6 MySQL版本之间复制的兼容性 292
5.7 升级复制设置 292
5.7.1 升级复制到5.0版本 292
5.8 复制特性和已知问题 293
5.9 复制启动选项 297
5.10 服务器如何评估复制规则 304
5.11 复制FAQ 306
5.12 比较基于语句的复制与基于行的复制 311
5.13 复制的故障诊断 313
5.14 如何报告复制程序错误或问题 314
5.15 多个主服务器复制中的自动递增 315
第6章 系统优化 316
6.1 概述 316
6.1.1 MySQL设计的局限性和折衷方案 316
6.1.2 设计轻便的应用系统 317
6.1.3 使用MySQL 318
6.1.4 MySQL基准工具包 318
6.1.5 使用自己的基准 319
6.2 优化SELECT等常用语句 320
6.2.1 使用EXPLAIN优化查询 320
6.2.2 估算查询性能 328
6.2.3 SELECT查询的速度 329
6.2.4 WHERE语句优化 329
6.2.5 Range优化 331
6.2.6 Index Merge优化 334
6.2.7 IS NULL优化 336
6.2.8 DISTINCT优化 337
6.2.9 LEFT JOIN和RIGHT JOIN优化 337
6.2.10 嵌套连接优化 338
6.2.11 外部连接简化 344
6.2.12 ORDER BY优化 346
6.2.13 GROUP BY优化 348
6.2.14 LIMIT优化 350
6.2.15 如何避免表扫描 350
6.2.16 INSERT语句的速度 351
6.2.17 UPDATE语句的速度 352
6.2.18 DELETE语句的速度 353
6.2.19 其他的优化技巧 353
6.3 锁定问题 355
6.3.1 锁定方法 355
6.3.2 表锁定问题 357
6.4.2 使数据尽可能最小 359
6.4.1 设计时的选择 359
6.3.3 并发插入 359
6.4 优化数据库结构 359
6.4.3 列索引 360
6.4.4 多列索引 361
6.4.5 MySQL如何使用索引 362
6.4.6 MyISAM码高速缓存 364
6.4.7 MyISAM索引统计集合 368
6.4.8 MySQL如何打开和关闭表 370
6.5 优化MySQL服务器 371
6.5.1 系统因素和启动参数调整 371
6.4.9 在同一个数据库中创建多个表的弊端 371
6.5.2 调整服务器参数 372
6.5.3 控制查询优化器的性能 375
6.5.4 编译和链接如何影响MySQL的速度 376
6.5.5 MySQL内存的使用 377
6.5.6 MySQL如何使用DNS 378
6.6 磁盘问题 379
6.6.1 使用象征性链接 380
第7章 客户程序和实用工具程序 383
7.1 客户程序和实用工具程序概述 383
7.2 myisamchk——MyISAM表维护实用工具 384
7.2.1 myisamchk常用选项 385
7.2.2 myisamchk检查选项 387
7.2.3 myisamchk修复选项 388
7.2.4 myisamchk的其他选项 389
7.2.5 myisamchk内存用法 390
7.3 myisamlog——显示MyISAM日志文件的内容 391
7.4 myisampack——创建只读的压缩MyISAM表 392
7.5 mysql——MySQL命令行工具 398
7.5.1 mysql选项 398
7.5.2 mysql命令 402
7.5.3 从文本文件中执行SQL语句 405
7.5.4 mysql技巧 405
7.6 mysqlaccess——检查访问权限的客户程序 407
7.7 mysqladmin——管理MySQL服务器的客户程序 409
7.8 mysqlbinlog——处理二进制日志文件的实用工具 412
7.9 mysqlcheck——表维护和修复程序 418
7.10 mysqldump——数据库备份程序 421
7.11 mysqlhotcopy——数据库备份程序 427
7.12 mysqlimport——数据输入程序 429
7.13 mysqlshow——显示数据库、表和列信息 431
7.14 mysql_zap——结束与图案匹配的进程 433
7.15 peeror——故障代码解释程序 433
7.16 replace——字符串替换实用工具 434
第8章 存储引擎和表类型 436
8.1 MyISAM存储引擎 438
8.1.1 MyISAM启动选项 439
8.1.2 用于码字的空间量 440
8.1.3 MyISAM表存储格式 441
8.1.4 MyISAM表故障 443
8.2 InnoDB存储引擎 444
8.2.1 InnoDB概述 444
8.2.2 InnoDB合同信息 445
8.2.3 InnoDB配置 445
8.2.4 InnoDB启动选项和系统变量 451
8.2.5 创建InnoDB表空间 458
8.2.6 创建和使用InnoDB表 459
8.2.7 添加或删除InnoDB数据文件和日志文件 466
8.2.8 InnoDB数据库的备份和还原 467
8.2.9 InnoDB数据库的平台移动 470
8.2.10 InnoDB事务模型和锁定 470
8.2.11 InnoDB性能调整技巧 480
8.2.12 多版本的实现 486
8.2.13 InnoDB表和索引结构 487
8.2.14 InnoDB文件空间管理和磁盘I/O 489
8.2.15 InnoDB故障处理 490
8.2.16 InnoDB表的限制条件 493
8.2.17 InnoDB故障排除 496
8.3 MERGE存储引擎 497
8.3.1 MERGE表问题 499
8.4 MEMORY(HEAP)存储引擎 500
8.5 BDB(BerkeleyDB)存储引擎 502
8.5.1 BDB支持的操作系统 502
8.5.2 安装BDB 503
8.5.3 BDB启动选项 503
8.5.4 BDB表的特性 504
8.5.6 对BDB表的限制 506
8.5.7 使用BDB表时可能出现的错误 506
8.5.5 需要为BDB修复的内容 506
8.6 EXAMPLE存储引擎 507
8.7 FEDERATED存储引擎 507
8.7.1 对FEDERATED存储引擎的描述 508
8.7.2 如何使用FEDERATED表 508
8.7.3 FEDERATED存储引擎的局限性 509
8.8 ARCHIVE存储引擎 510
8.9 CVS存储引擎 511
8.10 BLACKHOLE存储引擎 511
第9章 MySQL簇 513
9.1 MySQL簇概论 513
9.2 基本的MySQL簇概念 514
9.2.1 MySQL簇节点、节点组、副本和划分 515
9.3 简单的多计算机指南 517
9.3.1 硬件、软件和网络 519
9.3.2 多计算机安装 519
9.3.3 多计算机配置 521
9.3.4 初始化启动 523
9.3.5 装载简单数据并执行查询 523
9.3.6 安全关闭和重启 527
9.4 MySQL簇配置 527
9.4.3 MySQL簇的快速测试设置 528
9.4.2 安装软件 528
9.4.1 从源代码构造MySQL簇 528
9.4.4 配置文件 530
9.5 MySQL簇中的进程管理 552
9.5.1 MySQL簇的MySQL服务器进程使用方法 552
9.5.2 ndbd,存储引擎节点进程 553
9.5.3 ndb_mgmd管理服务器进程 554
9.5.4 ndb_mgm,管理客户进程 555
9.5.5 MySQL簇进程的命令选项 555
9.6 管理MySQL簇 557
9.6.1 MySQL簇启动阶段 557
9.6.3 MySQL簇产生的事件报告 559
9.6.2 管理客户程序中的命令 559
9.6.5 在线备份MySQL簇 564
9.6.4 单用户模式 564
9.7 MySQL簇复制 566
9.7.1 缩写词和符号 567
9.7.2 假定和普通要求 568
9.7.3 已知难题 568
9.7.4 复制计划和表 568
9.7.5 为复制准备簇 570
9.7.6 启动复制(单复制通道) 571
9.7.7 使用两个复制通道 572
9.7.9 具有复制的MySQL簇备份 573
9.7.8 实现MySQL簇的失败还原 573
9.8 在MySQL簇中使用高速互连 580
9.8.1 配置MySQL簇使用SCI套接字 580
9.8.2 理解簇互连的效果 583
9.9 已知的MySQL簇局限 585
9.10 MySQL簇开发路标 587
9.10.1 MySQL簇在MySQL 5.0中的改变 588
9.10.2 MySQL 5.1对MySQL簇的开发路标 588
9.11 MySQL簇常见问题解答 589
9.12 MySQL簇词汇表 595