利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务相关的知识,希望对你有一定的参考价值。
原文地址:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0602tham2/index.html
简单介绍
管理不同类型的数据库是大多数数据库管理员的一种工作方式。
非常少出现 DBA 仅仅管理一组同类数据库的情形。
在企业的数据中心,会有各种不同的后端存储库来存放数据。比方数据库中的电子表格、图像、视频/音频形式的数据,而这些后端存储库包含 DB2 Universal Database?、Oracle、Microsoft? SQL Server、Informix?、Sybase 或者诸如 mysql 之类的开放源代码数据库。大多数公司要求 DBA 具有跨数据库管理这些不同的数据库的技能。对于企业数据中心而言,对各种数据源具有丰富知识的人才是不可或缺的。
本系列文章将帮助您依据现有的 MySQL DBA 技能学习 DB2 Express。本文是这一系列的第一部分。将带领您高速了解 DB2 Express。文中主要将介绍 DB2 Express 的特性和功能,以及与开放源码数据库 MySQL 相比 DB2 Express 所具有的优势。
本文对一般性管理任务进行了比較,但并没有深入讨论可管理性、稳定性和可伸缩性的问题。也不会讨论两种数据库引擎的编写方式。或者优化程序的工作方式。本文的目的是通过概括開始了解技能转移过程,或者为那些希望进行这样的比較的人描写叙述一下这两种产品。
对于关心成本的入门级用户,IBM 提供了 DB2 Express 的免费版本号。该版本号称为 DB2 Express-C。DB2 Express-C 与 DB2 Express、Workgroup Edition 和 Enterprise Edition 具有同样的代码基础。
随着业务的增长,客户往往转而採用 DB2 Workgroup 或 Enterprise,这些产品通过 Data Partitioning Feature (DPF) 和 High Availability Disaster Recovery (HADR) 提供了真正满足企业需求的高可用性和高性能。DB2 Express-C 适合 C/C++、Java?、.NET? 和 php 开发者,能够免费 下载 使用。
只是要注意的是。DB2 Express-C 有 2-WAY CPU 和 4GB RAM 的限制。
关于不同版本号的比較,请參阅 DB2 UDB 分布式平台的 比較表 来获得版本号比較。
主题
本文包含下面内容:
- 安装
- 系统结构
- 可运行文件
- 数据库表的类型
- 数据库配置
- 图形用户界面(GUI)
- 命令行处理程序(CLP)
- SQL 比較
- 授权和权限
- 锁定机制
- PHP 开发支持
- LOB 和视频/音频管理
- 数据类型
- 备份和恢复
以下我们来具体说明各个主题。
安装
首先来看看 MySQL 和 DB2 Universal Database Express 的安装步骤。两者的安装过程都非常easy。
MySQL 安装
与 DB2 Express 相比。安装 MySQL server的步骤略多一些(安装代码后还须要配置)。
只是,两种数据库server都非常easy安装。
MySQL 和 DB2 Express 都同意在安装后使用 GUI 管理工具配置数据库。
关于 MySQL 安装程序的一点说明 —— 包括内容
对于 MySQL 5.0.18 Windows? 安装程序,server安装没有包括 GUI 管理程序或查询浏览器。安装 MySQL server后,机器上将包括:
- MySQL Command Line Client
- MySQL Manual
- MySQL Server Instance Configuration Wizard
如以下的 图 1 所看到的:
图 1. MySQL 安装内容
要使用 GUI Administrator 和 Query Browser,则必须单独下载安装程序。要注意的是,不同平台须要下载不同的安装程序。
而 DB2 Express 一次就安装了全部必需的管理工具和设施,无需另外下载。
DB2 Universal Database 安装
DB2 Universal Database Express 安装很easy。參照下列步骤就可以。
-
在欢迎屏幕上单击 Install Product。
图 2. 欢迎屏幕
-
单击 Next。
图 3. 选择要安装的产品
-
单击 Next。
图 4. 安装向导
-
接受许可协议,然后单击 Next。
图 5. 接受许可协议
-
作为样例,我选择了 Typical。您还能够选择 Custom 或 Compact。然后单击 Next。
图 6. 安装选项 —— Typical、Compact 和 Custom
-
须要安装的驱动器和文件夹。
能够保留默认值。
图 7. 安装文件夹
-
输入 db2admin 口令。db2admin ID 是为 DB2 server管理创建的默认用户。
图 8. 用户信息
-
单击 Next。注意,在这里能够配置协议和启动选项。
图 9. 配置实例
-
单击 Next開始安装。
图 10. 開始安装
-
单击 Next。
注意。在这里能够配置协议和启动选项。
图 11. 完毕安装
完毕安装后,DB2 Express 的安装布局例如以下表所看到的(概括性的)。默认的 DB2 Express 安装文件夹是 C:\Program
Files\IBM\SQLLIB
。
下表仅仅是 DB2 Express 在 Windows 平台上的布局,Linux? 和 UNIX? 具有不同的路径设置。
文件夹名 | 内容 |
---|---|
/adsm | 包含用于口令加密的 dsmapipw.exe |
/BIN | 包括启动、停止和管理数据库所需的全部二进制文件 |
/bnd | 包括全部的绑定包 |
/conv | 包括代码页的转换表 |
/DB2 | DB2 实例相关文件。比方,当中包含 db2 日志文件 db2diag.log |
/DB2DAS00 |
包括 DB2 Admin Server- (DAS) 相关文件,如 dump 文件夹中的 db2dasdiag.log。 假设有多个 DAS。该文件夹名将带有数字,如 DB2DAS01 等。 通常一个 DAS 就足够用了 |
/java | 包括 JDBC? 驱动程序 |
/samples | 包括大量实例代码 |
/TOOLS | 包括 DB2 工具的多数 JAR 文件 |
/tutorials | 包括各种教程 |
系统结构
本文中将讨论两种系统结构:
- 内存结构
- 容器
首先来看看 DB2 Express 主要内存布局的基本结构。关于内存管理的具体说明,请參阅 developerWorks 文章 “The DB2 UDB memory model: How DB2 uses memory”(链接请參见 參考资料 部分)。
内存结构
图 12. DB2 Express 内存结构
各部分的功能例如以下:
- Package Cache —— 用于存储静态和动态 SQL 语句的内存
- Buffer Pool —— 用于在写入磁盘之前暂存数据的内存
- Log Buffer —— 在日志写入磁盘前存储全部数据库更改的内存
容器
依据使用的表类型不同。MySQL 能够使用单个文件、多个文件或者表空间来存储数据。
在这一节的最后。表 2 总结了 MySQL 和 DB2 Express 使用的容器。
图 13. MySQL 容器
与 MySQL 不同。DB2 Express 总是存储在表空间中。表空间是文件系统中的物理容器的逻辑表示。
以下是表空间的一些特点:
-
一个数据库至少要有一个表空间。默认情况下,标准 DB2 Express 安装将创建三个表空间:
- Syscatspace —— 存储系统文件夹信息
- Tempspace1 —— 存储系统暂时表。暂时表空间能够是系统定义的,也能够是用户定义的。最好从系统暂时表空间创建用户暂时表空间
-
Userspace1 —— 存储系统暂时表。
暂时表空间能够是系统定义的。也能够是用户定义的。
最好从系统暂时表空间创建用户暂时表空间
物理文件系统中的 DB2 Express 容器布局例如以下。
C:\DB2\
是数据库管理的默认数据库路径。也能够使用命令list active databases
找到数据库路径。DB2 数据库结构是按下面这样的方式安排的,当中每一层分别表示:
图 14. DB2 Express 容器布局
- Drive/Directory —— CREATE DATABASE 命令中指定的驱动器或文件夹
- DB2 Instance Name —— DB2 Instance 全部者的名字
- NODE0000 —— 数据库分区号,0 表示没有分区的数据库
- SQL00001 —— 数据库 ID,从 1 開始编号
- SQLOGDIR —— 数据库的默认日志文件夹
- SQLT0000.0 —— 文件夹表空间,SYSCATSPACE
- SQLT0001.0 —— 暂时表空间,TEMPSPACE1
- SQLT0002.0 —— 用户表空间,USERSPACE1
管理员能够随时创建很多其它的表空间。比如使用 清单 1 和 清单 2 中所看到的命令。
(关于完整的 创建表空间的语法,请訪问 Information Center。)
清单 1. 在 DB2 Express 中创建系统表空间
Create System Temporary Tablespace systemp1_space managed by system using (‘c:\systemp1_space‘,‘d:\systemp1_space‘)
清单 2. 在 DB2 Express 中创建用户表空间
Create User Temporary Tablespace usertemp1_space managed by database using (file ‘c:\userdata1\usertemp1_space‘ 10000, file ‘d:\userdata2\usertemp1_space‘ 20000)
- 能够将表分解到不同的表空间中。
- 视图、触发器和存储过程也能够保存在表空间中。
- 管理员能够依据须要创建随意多个表空间和随意多个容器。支持自己主动扩展特性。
- 表空间能够是系统管理的(SMS),也能够是数据库管理的(DMS)。
DB2 数据库管理员常常要决定容器是由系统管理。还是由数据库管理。这样的决策由几方面因素决定。如可管理性、业务需求(如数据库的规模和增长速度)和性能问题。通常 SMS 更适合较小的环境,须要的时候,系统能够提供很多其它的空间。对于更繁琐庞大的环境,最好使用 DMS,由于管理员可通过自己主动扩展特性来分配空间。只是在一个数据库中结合使用两种方法的样例也不少见,比方把文件夹和暂时表放在 SMS 中,而索引和数据则放在 DMS 中。
表 2 MySQL 和 DB2 Express 容器的区别。
数据库 | 表类型 | 说明 |
---|---|---|
MySQL | MyISAM | 索引文件用 .MYI,数据文件用 .MYD。索引和数据分别使用一个文件。 |
MySQL | InnonDB |
在路径參数 innodb_data_file_path 指定的表空间中存储数据。 默认情况下该值为 ibdata1:10M:autoextend。 可使用多个数据文件。 |
MySQL | Merge | .MRG 文件包括应该仅仅作为一个表使用的表的名称。.FRM 包括表的定义。使用多个数据文件。 |
DB2 Express | 全部类型 |
存储在可跨越多个磁盘的表空间中。 有两种类型的容器:
要确定使用哪一种表空间,SMS 还是 DMS,请阅读 DB2 Information Center 上的 SMS 与DMS 的比較。 |
可运行文件
首先看一看 MySQL 中基本的可运行文件和 DB2 Express 中的相应文件。然后重点介绍后者特有的可运行文件。本文主要讨论 Windows 操作系统上的可运行文件。
这两种数据库在 Linux 和 UNIX 上的可运行文件可能不一样。
MySQL 的可运行文件名称 | DB2 Express 的可运行文件名称 | 说明 |
---|---|---|
MySQLInstanceConfig.exe | DB2 Control Center |
MySQLInstanceConfig 用于配置实例。 DB2 使用 Control Center 配置实例。 请參阅本文中的 数据库配置 一节。 |
myisamchk.exe | 检查 MyISAM 表的完整性 |
DB2 使用 Control Center 完毕相同的检查。对于索引可使用 Index 窗体中的 Check Index,或者使用 Tablspace 窗体中的 Check Index。对于表,能够使用CHECK 约束来确保完整性。SET
INTEGRITY 也用于表的完整性。 比方通过对表运行 Control Center 操作能够设置表的完整性。 db2dart 工具可用于检查数据库的结构完整性。与 db2dart 类似的是 inspect。 检查备份镜像的完整性使用 db2ckbkp 命令。要检查整个数据库的健康状况,可使用 Health Center GUI。 |
myisampack.exe | 压缩 MyISAM 表 | 在创建表的语句中使用 VALUE COMPRESSION ,能够在列或表级别上使用节省空间的行格式来降低空间占用。须要使用 Backup & Restore 数据库 API 来提供压缩。从而降低空间。 |
mysql.exe | MySQL 的 Windows 客户机 | DB2 Runtime Client —— 一种单独的产品,可訪问远程 DB2 数据库单独安装。 |
mysqladmin.exe |
MySQL Admin 客户机 —— 使用该命令能够运行的管理任务包含:
|
DB2 命令提示符基本上可用于客户机和管理任务。要訪问 DB2 命令提示符。可切换到 All Programs -> IBM DB2 -> Command Line Tools。 |
mysqlbinlog.exe |
Mysqlbinlog 至少有三种用途:
|
DB2 Express 支持联机日志和存档日志。 出于 MySQL 同样的目的,全部事务都被记录下来。DB2 Express 支持单个事务的无限多个活动日志,所以长期事务永远不会失败(仅仅要物理磁盘空间足够)。支持的最大日志空间为 256 GB。 此外,默认情况下 DB2 把错误记录到 db2diag.log 中。可使用工具 db2diag 分析这个日志文件。依据严重程度。错误可分为下面级别:
|
mysqlcheck.exe |
检查数据库是否健康,比方检查、修复、分析或优化表。比方mysqlcheck
-u root -p awt |
DB2 没有直接匹配的程序检查表错误。 全部的表错误都被写入 db2diag.log 文件。用时间戳指向转储记录。 这个转储文件不是为胆小的人准备的,它们是供 DB2 支持代表使用的。 只是能够对表运行一些操作,比方:
|
mysqld.exe | 执行 MySQL server —— 有非常多选项(若想了解很多其它信息,请输入mysqld --help --verbose) |
可使用 db2start 启动 DB2 Express 数据库实例。也可通过将 db2instance 环境參数设置为须要启动的实例来启动多个实例。 停止实例使用 db2stop。
注意。启动和停止 DB2 实例须要 SYSADM、SYSCTRL 或 SYSMAINT 权限。 |
mysqldump.exe | 该工具导出表、表中的某些行、整个数据库或者一组数据库 |
DB2 Export —— DB2 Express 支持导出四种格式的表或表中的某些行。受支持的四种文件格式为:
导出操作非常easy,比方要从 Employee 表导出数据:export to employee.del of del messages emp.log select * from allanwtham.employee。 |
mysqlimport.exe | 该工具用于在纯文本文件里导入数据 | DB2 Import —— 支持与 DB2 Export 同样的四种格式 |
NA | Load | DB2 Load —— 向数据库中快速载入数据 |
NA | Audit | db2audit —— 用于检查未知的或者意料之外的数据訪问的审计设施 |
NA | Explain | db2expln —— 解释静态 SQL 语句选择的訪问计划 |
NA | Configuration Assistant | db2ca —— 配置远程訪问 |
NA | db2admin | DB2 Admin Server (DAS) —— 有关的管理任务 |
数据库表类型
MySQL 对不同的用途使用不同的表。能够在一个数据库中混合使用这些不同的表。详细使用哪种表取决于用户的须要。表类型例如以下(最常见的是 MyISAM 和 InnoDB):
-
SAM
SAM 是较早期的表类型。这样的表类型主要用于支持遗留数据库。它已经被 MyISAM 表类型取代。而且计划不再支持这样的表类型。
-
MyISAM
MyISAM 是默认的表类型。
要在 MyISAM 中创建表,能够保留默认值或者用 ENGINE keyword明白指定,比方:
清单 3. 使用 MyISAM 创建表
Create table employee ( empno int not null auto_increment primary key, firstnme varchar(30), lastname varchar(30), deptno int ) engine=MYISAM;
MyISAM 表类型是非事务安全的表类型。
对于高度并发的多重读/写,不应该选择这样的表类型。MyISAM 不能保证原子性、一致性、隔离和持久性 (ACID)。只是。MyISAM 同意进行压缩和全文搜索。对于 MyISAM 类型。索引存储在 .MYI (MyIndex) 文件里。数据本身存储在 MYD(MyData) 文件里。MyISAM 表类型没有表空间的概念 —— 全部的数据/索引都存储在文件里。检查/修复 MyISAM 使用工具 myisamchk。压缩表使用 myisampack。
MyISAM 中仅仅有一种锁定机制,即表级锁定。因此不适用于訪问比較频繁的环境。
-
InnoDB
越来越多的企业须要使用这样的表类型。InnoDB 是一种兼容 ACID 的表类型。InnoDB 表类型在表空间中存储数据和索引,同意使用不同文件系统中的多个表。最初由 InnoBase Oy 开发的这样的表类型适合于高速、高性能、事务安全的环境。
InnoDB 使用更小粒度的锁定机制 —— 行级别的锁定。详情请參阅 锁定机制 一节。
创建 InnoDB 类型的表要在 ENGINE 表创建语句选项中指定keyword Innodb。请參阅以下的样例。
ENGINE
Create table employee ( empno int not null auto_increment primary key, firstnme varchar(30), lastname varchar(30), deptno int ) engine=InnoDB;
-
BerkeleyDB (BDB)
这样的表类型的用途与 InnoDB 同样。由 Sleepycat 开发的这样的表类型存储在 B 树中,它支持页级锁定。
-
Merge
Merge 类型是 MyISAM 的衍生物,用途是绕开单个巨大文件问题。它同意位于不同磁盘上的多个 MyISAM 文件依据创建表语句中的 MERGE规范来运行查询。要插入合并表,则必须将 INSERT_METHOD 选项指定为 first 或 last。
默认情况下仅仅能运行 Select、Update 和 Delete。
-
Heap
将整个表保存在内存中。使用这样的类型速度非常快,可是一旦崩溃就会造成数据丢失。最好临时性地使用这样的类型。
DB2 Express 将数据存储在容器中,不管该容器是系统管理的容器,还是数据库管理的容器。默认情况下,在 DB2 Express 中创建的表与 ACID 兼容。没实用于创建与 ACID 不兼容的表的选项。
创建表的语法很类似。
比方要创建表 employee:
清单 5. 在 DB2 Express 中创建表
Create sequence sq1; Create table employee1 (empno int not null default next_value of sq1, firstnme varchar(30), lastname varchar(30), deptno int, primary key (empno))
DB2 Express 支持四种表类型。即:
-
暂时表 ——
也称为公用表表示,这样的表是 SQL 语句运行期间存在的暂时表。能够依据须要引用随意多次。不须要又一次计算。可使用这样的表类型取代视图。
-
类型化的表 ——
使用结构化类型定义的表。
结构化类型是包括一系列属性的数据类型。
-
概括表 ——
定义从查询中派生的表。主要在数据仓库环境中使用。
-
物化查询表 ——
定义从多表查询中派生的表。主要用于数据仓库环境。
除了表以外,还有其它类型的数据库对象,如索引、函数、触发器和存储过程等,这些对象共同组成了有用的关系数据库。
表 4 比較了两种数据库的这些对象:
对象名 | MySQL 中的可用对象 | DB2 Express 中的可用对象 | 说明 |
---|---|---|---|
用户定义表 | × | √ |
两种类型的用户定义表
|
用户定义函数 | √ | √ | 两者都支持标量和列用户定义函数 |
用户定义数据类型 | × | √ |
三种用户定义的数据类型 ——
|
存储过程 | √ | √ | DB2 Express 支持 SQL 和 Java 存储过程 |
视图 | √ | √ | MySQL 从版本号 5 開始支持视图 |
可更新视图 | √ | √ | DB2 Express 还支持类型化视图 |
触发器 | √ | √ | MySQL 从版本号 5 開始支持触发器 |
递归 SQL | × | √ | 与递归函数类似。DB2 Express 的递归 SQL 可递归地使用结果集来得到终于结果 |
序列 | × | √ | MySQL 本身不支持序列。可是能够 模拟一个序列 |
数据库配置
MySQL 中须要在配置文件 my.cnf 的 [mysqld] 节指定配置參数。Windows 系统上提供了多个配置样板,如 my-medium.ini。还提供了其它 my-xxx.ini 文件。
MySQL 在 Windows 上提供了演示样例配置文件 *.ini。以下给出了 my-medium.ini 中的一节。
注意,不须要取消所选相关表类型的凝视。
清单 6. MySQL 演示样例配置文件
... # The MySQL server [mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking key_buffer = 16M max_allowed_packet = 1 M table_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M ... # Uncomment the following if you are using InnoDB tables #innodb_data_home_dir = /usr/local/var/ #innodb_data_file_path = ibdata1:10M:autoextend #innodb_log_group_home_dir = /usr/local/var/ #innodb_log_arch_dir = /usr/local/var/ # You can set .._buffer_pool_size up to 50 - 80 % # of RAM but beware of setting memory usage too high #innodb_buffer_pool_size = 16M #innodb_additional_mem_pool_size = 2M # Set .._log_file_size to 25 % of buffer pool size #innodb_log_file_size = 5M #innodb_log_buffer_size = 8M #innodb_flush_log_at_trx_commit = 1 #innodb_lock_wait_timeout = 50
对于 DB2 Express,可使用 Control Cenrter 或者命令行处理程序(CLP)获取和设置数据库或者实例的配置文件。要使用 Control Center 配置数据库。请右击选中的数据库并选择 Configure Parameters。
图 15. 右击配置參数
能够动态改变这些值(一些參数仅仅有在数据库管理程序停止并又一次启动后才生效)。配置參数可分为下面几类:
- 应用程序
- 环境
- 日志
- 维护
- 性能
- 恢复
请參阅 DB2 Information Center 中完整的 參数列表。
图 16. DB2 Express 数据库配置參数
也可用 CLP 查询和设置配置參数。更新数据库配置的语法例如以下:
清单 7. 更新 db 配置的语法
>>-UPDATE--+-DATABASE-+--+-CONFIGURATION-+----------------------> ‘-DB-------‘ +-CONFIG--------+ ‘-CFG-----------‘ .----------------------. V | >--+---------------------+--USING----config-keyword value-+-----> ‘-FOR--database-alias-‘ .-IMMEDIATE-. >--+-----------+----------------------------------------------->< ‘-DEFERRED--‘
例如说,假设要查询管理server參数,可使用 db2
get admin cfg
命令。要获得数据库 SAMPLE
的
db 配置,则能够使用 db2
get db cfg for SAMPLE
命令。
由于 IBM 也在致力于 DB2 UDB 产品的自己主动化研究。DB2 UDB Express 通过 DB2 Control Center 提供了自己主动化特性。
使用向导(如 Create Database with Automation、Design Advisor、Configuration Advisor、Configure Automatic Maintenance 等)是自己主动化常见管理任务所採用的步骤,这些管理任务包含备份、配置和数据库对象自己主动维护等。
比方。管理员可使用 Configuration Advisor 配置数据库。这一特性就避免了管理员费尽心思地去寻找最适合数据库的配置參数。Configuration Advisor 可以建议最适用的配置參数。为了获得最优的数据库性能,建议管理员尽量使用该特性。
图形用户界面 (GUI)
GUI 管理不可避免将成为非常多管理员的首选。GUI 不仅可以快捷方便地运行某些任务。并且可以在忘掉了命令语法(或者假设根本没有学习过这样的命令)的时候提供帮助。通常,易用性是推动用户使用 GUI 管理工具的主要因素。
MySQL 提供的两种主要 GUI 是 MySQL Administration 和 Query Browser。
那些原来管理 MySQL 的管理员并非很喜欢 GUI 管理。命令行通常仍然是他们的最爱。眼下最新的 MySQL Administrator 是 1.1.6 版。图 17 中显示了 MySQL 的登陆页面:
图 17. MySQL Admin —— 登录
登录后就能够在 GUI Administrator 中运行下列任务(仅仅是一部分):
- 服务控制 —— 启动和停止服务
- 启动參数 —— myISAM 和 InnoDB 的參数、缓冲区和缓存、日志文件、安全和网络设置
- User Admin —— 为用户和组分配权限。口令管理
- Health —— 内存和连接的健康性检查
- 备份和恢复
图 18. MySQL Admin —— 任务
也可使用 WAMP(眼下为 1.6.0 版)提供的 phpMyAdmin。
关于 DB2 Express GUI,有非常多方面值得一说。全部的管理任务都可使用该 GUI 完毕。当中包含一般管理、健康检查和设置等。如 图 19 所看到的:
图 19. DB2 Express GUI 管理 —— 不同的方面
在全部的管理 GUI 工具中,您可能会发现 DB2 Control Center 是最经常使用的。能够通过单击 Windows 桌面上右下角托盘上的绿色硬盘启动 DB2 Control Center:
图 20. DB2 Express GUI Administration - Control Center
DB2 Express Control Center 是与上下文有关的。
右击一个项目会依据上下文产生不同的下拉菜单。
比方。右击某个数据库会看到下列任务选项:
图 21. DB2 Express Control Center —— 与数据库有关的任务列表
DB2 Control Center 的一个长处是可使用 SHOW COMMAND button查看对该任务等效的命令。有时候能够选择将命令保存到脚本中,让它在指定的时候执行。
其实,非常多实用的特性这里没有提到,当中包含 Design Advisor 和 Configuration Advisor。这些特性将在后面的文章中介绍。
命令行处理程序
MySQL 提供了命令行控制台 (mysql.exe)。
能够使用这个控制台运行管理任务。
图 22. MySQL 命令提示符
DB2 Express 提供了与 MySQL 类似的控制台。
启动该控制台的一种方法是 All Programs -> IBM DB2 -> Command line tools -> Command Windows。
全部管理任务都能够在这个控制台中运行。
图 23. DB2 Express 命令提示符
SQL 比較
必须承认。并非全部的 SQL 语句都可以真正从一个数据库移植到还有一个数据库。
对于将 SQL 从 MySQL 迁移到 DB2 Express 而言也是如此。本文将通过以下几个方面说明 SQL 语句的区别。
这些仅仅是为了缓解两种系统之间的区别、避免手足无措而进行的小小尝试。此外要注意的是,并非 DB2 Express 支持的全部数据库特性眼下都获得了 MySQL 的支持。比方。外键约束能力仅仅能在为 MySQL 5.1 提供以下支持的情况下用于 InnoDN。例如以下所看到的:
- 适用于除 InnoDB 之外的全部表类型的外键
- MyISAM 表的热备份
- 重命名数据库
- 列级约束
我们从下面角度看一看两者的异同:
-
Select 语句
标准 SQL 支持 DISTINCT、GROUP BY、ORDER BY 和 HAVING 这些keyword。MySQL 和 DB2 Express 都在这一点上提供了非常好的支持。可是为了限制返回的结果集,MySQL 使用了keyword LIMIT,而 DB2 Express 使用 FETCH FIRST n ROWS 来限制返回的结果集。如 图 24 中显示的演示样例 fetch:
图 24. 在 DB2 Express 中使用 Fetch n Rows
MySQL 和 DB2 Express 都支持在 SQL 语句中使用 CASE 表达式进行条件检查。比如,能够指定符合特定条件的查询结果。以下的演示样例将依据收入对雇员进行分类:
清单 7. Set Transaction 的语法
Select empno, firstnme, lastname, case when integer (salary) > 40000 then ‘High‘ when integer (salary) > 30000 and integer (salary) < 40000 then ‘Medium‘ else ‘Low‘ end from employee
此外,DB2 Express 还支持嵌套表表达式。嵌套表能够看成是在一个 SQL 语句中定义和使用的局部暂时表。
MySQL 中的单值子查询 (single value subquery) 等同于 DB2 Express 中的标量全选择 (scalar full select)。
-
连接 —— 下表总结了 MySQL 和 DB2 Express 中的连接特性:
表 5. 连接类型 连接类型 MySQL DB2 Express 说明 内连接 √ √ 内连接表示存在于连接表中的行。 传统上两者都对这样的连接使用逗号。它是指定表的笛卡尔积。但在 MySQL 中也称为叉积。DB2 Express 不使用keyword cross。
交叉连接 √ √ 与内连接同样。 左[外]连接 √ √ 左连接或左外连接表示匹配值和仅仅出如今左表中的的值。 比方在 MySQL 中。假设须要从 tableA 中选择全部不在 tableB 中的行,则使用的 SQL 语句是: select tableA.* from tableA left join tableB on tableA.id=tableB.id where tableB.id is null。
右[外]连接 √ √ 与左连接正好相反。表示连接表中出现的匹配值和那些仅在右表中出现的匹配值。 全[外]连接 × √ 全外连接表示连接表中出现的匹配值和那些仅在左表或右表中的某一个表中出现的匹配值。 其使用具有惟一性。
直接连接 √ × MySQL 中的 Straight join 等同于 join,仅仅只是左表总是先于右表读取。 尽管 DB2 Express 中没有使用这个keyword。但在 DB2 Express 能够完毕相同的目标。
自然连接 √ × MySQL 中的自然连接 相当于内连接。 尽管 DB2 Express 中没有使用这个keyword,但在 DB2 Express 能够完毕相同的目标。
可使用 GUI SQL Assist 指定连接类型。以下的样例说明怎样使用 SQL Assist 设置连接选项。
图 25. 使用 SQL Assist 建立 DB2 连接
授权和权限
MySQL 中有两种级别的权限 —— 管理和用户。
全部权限都可分别使用 GRANT 和 REVOKE 语句授予和收回。能够授予用户 create、select、update、delete、insert、execute、index 等权限,也可授予 alter、drop 和 shutdown 等系统权限。
(请參阅 MySQL 提供的权限。
)根用户在默认情况下具有下列权限:
图 26. MySQL 中的权限
DB2 Express 同一时候提供了授权(authorization)和权限(privileges)。
授权是一组提前定义的更高的管理权限,能够授予运行一般任务的用户或用户组,比方连接数据库、创建、撤销、备份和恢复数据库,而权限则包含用户权限和系统权限,通经常使用于对象操作。新安装的 DB2 Express 提供下列授权级别:
- SYSADM - System Administration
- SYSCONTROl - System Control
- SYSMAINT - System Maintenance
- DBADM - Database Administrator
尽管 SYSADM 具有最高的权限。但用户运行备份和恢复这类任务通常仅仅须要 SYSMAINT 授权。因此。充分了解授权对为用户分配适当的权限很重要。了解发出 get
authorizations
命令须要什么权限,该命令用于查询系统编目表 SYSCAT.DBAUTH。图
27 显示了使用 get
authorizations
命令的结果:
图 27. DB2 Express —— 当前用户的授权
DB2 Express 权限和 MySQL 很类似。权限(包含用户和系统权限)可使用 GRANT 或 REVOKE 命令授予和收回。有三种类型的权限:
-
控制权限 —— 该权限通常保留给对象的创建者。
这是全部者权限。比方。假设用户 A 创建了表 B,用户 A 就被自己主动授予表 B 的控制 权限。
- 一般权限 —— 该权限同意运行特定的任务。可通过明白或暗中授予该权限来对数据库对象运行 SELECT、UPDATE、DELETE 等任务。
- 暗含权限 —— 在将更高的权限授予用户时授予该权限。比方当用户运行一个包时。尽管没有明白授权,但为了使包可以成功运行。应马上自己主动授予隐含权限。
图 28 显示了一些可授予用户的权限。
图 28. DB2 Express —— 使用 Control Center 管理权限
注意,也可用 CLP 运行 GRANT 和 REVOKE 语句。
锁定机制
MySQL InnoDB 提供了事务安全的语句。支持标准 SQL-1992 中所述的四种隔离级别。为了达到事务安全,MySQL 实现了 ACID 的要求。默认情况下。MySQL 对全部事务使用 Repeatable Read 隔离级别。但可使用 Set
Transaction
语句更改兴许会话的隔离级别。也可在 SQL 语句中使用 SESSION 或 GLOBAL。
SESSION 表示下一个链接将使用特定的隔离设置,而 GLOBAL 表示以后的全部连接都是某个隔离设置。
Set
Transaction
语法如 清单
8 中所看到的:
清单 8. Set Transaction 的语法
SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}
针对受支持的四种隔离级别,表 6 列出了出现幻像读、脏读或不可反复读的可能性(从高到低)。
- √ —— 会发生
- × —— 不会发生
隔离级别 | 幻像读 | 不可反复读 | 脏读 |
---|---|---|---|
可序列化 | × | × | × |
可反复读 | √ | × | × |
读取提交的结果 | √ | √ | × |
读取未提交的结果 | √ | √ | √ |
DB2 Express 提供了类似的隔离级别。依照从强到弱的次序分,DB2 Express 支持的四种隔离级别依次为:
- 可反复读 —— RR
- 读稳定 —— RS
- 游标可靠性 —— CS
- 未提交读 —— UR
每种隔离级别都提供了特定的事务安全,隔离级别的选择是依据更严格的隔离级别对性能的影响进行的一种权衡。
比方,读取仅仅读的查找表不须要可反复读级别。未提交读级别就足够了。嵌入式 SQL 语句的默认隔离级别为游标可靠性 (CS)。更改隔离级别的方法有两种(视情况而定):
-
在标准 DML 语句中可使用keyword With 来更改级别。比方
select * from employee with UR
。 -
假设使用命令行,那么能够输入
change isolation level
命令。 - 假设使用 DB2 调用级接口,那么可在 db2cli.ini 文件里指定隔离级别。
表 7 列出了 DB2 的隔离级别和读特征。依照从强到弱的顺序依次为:
- √ —— 会发生
- × —— 不会发生
隔离级别 | 幻像读 | 不可反复读 | 脏读 |
---|---|---|---|
可反复读(RR) | × | × | × |
读稳定(RS) | √ | × | × |
游标可靠性(CS) | √ | √ | × |
未提交读(UR) | √ | √ | √ |
DB2 Express 支持表空间和表的显式锁定。假设 DB2 发现锁定某一个表比锁定该表中多个行的代价要小,那么 DB2 Express 会提供锁扩展。Locklist 和 Maxlocks 这些參数会影响锁扩展的方式。
PHP 开发支持
随着 PHP 在 Web 开发平台上的应用越来越广泛,开发者经常希望获得可以高速安装且功能强大的开发环境,以避免争议。
MySQL 在分发包中提供了一种高速安装工具 WAMP(眼下版本号为 1.6.1)。
IBM 和 Zend Core 共同提供了类似的 PHP 开发组合。
Zend Core for IBM 是一种无缝集成、开箱即用、易于安装而且支持 PHP 的开发和生产环境。该产品包含与 IBM DB2 Universal Database 和 IBM Cloudscape? 的紧密集成、对 XML 和 Web 服务的本机支持、支持日渐广泛被採用的 Service Oriented Architectures (SOA)。Zend Core for IBM 为数据库驱动的应用程序提供了高速开发和部署的基础。通过提供一致的 API,它提供了从易于使用的轻量级 Cloudscape 数据库到战略数据库 DB2 的升级路径。有关的很多其它信息。请參阅 Zend Core for IBM 页面。
LOB、视频/音频管理
尽管眼下数据管理领域中呼声最高的是企业内容管理(ECM)领域,但 MySQL 在非常大程度上是一种结构化数据管理产品。ECM 用户必须设法找到支持 MySQL 作为后端系统的 ECM 处理程序。MySQL 使用 BLOB 数据类型系列处理非结构化数据。
还有一方面,IBM 提供了 DB2 Content Manager 作为结构化和非结构化数据的内容资料库。
为了满足眼下的随需应变业务要求 —— 80% 的数据都是非结构化形式的。人们觉得企业内容管理(ECM)在企业环境中是不可或缺的。假设对企业内容1管理(ECM)有正确的理解,那么您可能觉得从头建立一个企业内容管理系统非常easy。我们来看看一家典型企业中的各种数字内容、遇到的困难以及 IBM DB2 Content Manager 提供的丰富功能怎样满足这些须要。
内容可能指:
- 发票、结算表、报告
- 传真和扫描的书面内容
- SCM、CRM 和 ERP 数据
- 电子邮件和桌面文档
- 音频、视频和图片
- Web 内容
客户常常面临的问题是数据使用不同的格式,存在于不同的位置。没有集中的资料库,用户就无法有效地共享数据。更不用说通过协作确保畅通的业务连续性了。
无法使用业务过程工作流。用户就非常难创建或者搜索 Web 内容。
这是多数企业都会遇到的困境。
构建时要考虑可伸缩性。DB2 Content Manager 採用了一个三层的体系结构。当中包含 Library Server 中的几种索引和 Resource Manager 中的对象存储。
灵活的用户授权许可同意为适应业务的须要部署随意多个 Resource Managers。例如说,纽约的总部可使用两个 Resource Manager,而西雅图、亚特兰大和范库弗各有一个 Resource Manager。
为减少网络通信量,能够提供局域网缓冲。
IBM DB2 Content Manager 支持层次化存储管理。能够依照适当的周期定期将对象迁移到外部设备上。例如说,能够在 DASD 上保存六个月后将对象迁移到外部磁盘上,保存三年后再迁移到磁带上保存七年。
IBM DB2 Content Manager 还提供了身份验证、权限和訪问控制,保证用户和用户组操作的安全。
从文档级动作。创建、读取、更新、删除、打印的细粒度权限和凝视改动,到 Resource Manager 集合訪问控制,IBM DB2 Content Manager 都能够保证正确实现訪问和使用。用户可打开事件日志来进一步审计内容系统。
从内容的创建到管理和分发,IBM 生命期管理主要依赖于 IBM DB2 Content Manager 提供的丰富特性。以下是 IBM DB2 Content Manager 的一些特性:
- 即时扫描
- 成批装载不同格式的内容
- 通过 Windows 客户机、web 客户机和 portlet 提供了本机内容查看器
- 检入/检出
- 过程工作流(可用 GUI 工作流创建程序建立)
- 版本号化
- 凝视
- LDAP 集成
- 事件日志(用户活动和管理活动)
- 与 SAP & Siebel 的集成
- 与记录管理(如 IBM DB2 Record Management)的集成,以确保符合规章
- 与客户现有业务线的集成
- 包含在应用程序内部或者其它 Web 服务中使用的 Web 服务接口
- XML 模式映射
假设进行内部内容系统开发,IBM DB2 Express 会为此提供 LOB/CLOB 数据类型。
数据类型
MySQL 和 DB2 Express 具有类似的数据类型。
要注意的是,DB2 Expess 同一时候支持内建数据类型和用户定义数据类型(前面已经提到)。
关于 DB2 Express 数据类型怎样组织的概述。请參见 图 29:
图 29. DB2 Express —— 数据类型层次结构
在进行了上面的查看之后,如今让我们将 MySQL 数据类型映射到 DB2 Express 中的等效类型(或者最匹配的类型)。然后比較下面三个主要种类。
- 数字
- 字符串
- 时间和日期
关于数据库对象的异同,请參阅 表 8。
关于 DB2 SQL Limits 的完整说明。请參阅 Information Center。
备份和恢复
备份和恢复是在介质失效的情况下确保业务连续性的基本要求。MySQL 备份和恢复选项在非常大程度上依赖于底层的表类型。比方 MyISAM 和 InnoDB 表类型都同意进行数据库冷备份。
只是从 MySQL 4.0 版開始,还以商业附件的形式提供了 InnoDB 热备份(InnoDB 是 Oracle Corp. 的产品),但 MySQL 5.1 仍然不支持 MyISAM 的热备份。
DB2 Express 从一開始就提供了冷备份和热备份。
所谓冷备份,就是当用户处于离线状态时,不訪问正在备份的数据库。
这就意味着,使用冷备份时,假设遇到介质失效的情况,上一次备份以后的数据将丢失。而热备份同意事务继续写入日志。无需关闭正在备份的数据库。
通过适当的规划,热备份能够确保介质失效的情况下不损失数据。
24x7 环境须要这样的备份。
DB2 Express 有两种记录法。即循环记录法和存档记录法。循环记录法(循环写入,写满后覆盖)能够进行冷备份,档案记录法(存档已经提交的内容)支持热备份。
选择冷备份还是热备份取决于在 db config 中设置的參数:
- LOGFILSIZ —— 日志文件大小。总数为 4KB(默认 250)
- LOGPRIMARY —— 主日志个数(模觉得 3)
- LOGSECOND —— 主日志填满时能够分配的次级日志个数。
-
NEWLOGPATH —— 更改兴许日志文件存储的位置。
仅仅在数据库又一次激活时生效。
- MIRRORLOGPATH —— 写入日志的后备路径,以免单点失效。
- OVERFLOWLOGPATH —— 指定前滚操作中的日志位置。以便在多个位置訪问日志。
冷备份非常easy。
首先关闭数据库。然后发出备份命令。如 db2 backup database <db_name> to c:\backup。
热备份相同简单。首先打开日志保留參数,然后发出命令,如 db2 backup database online <db_name> to c:\backup。
冷备份和热备份都能够通过在 DB2 Express Control Center 中点击几下鼠标来完毕。另外,DB2 Express 还提供了增量备份和 delta 备份。
- 增量备份 —— 备份近期一次成功的全然备份以后的全部更改。
- Delta 备份 —— 备份上一次成功的全然备份、增量备份或 delta 备份以后的全部更改
关于备份和恢复问题。将在以后的文章进行更具体的讨论。
结束语
本文考察了 MySQL 和 DB2 Express 数据库server的某些方面,并从安装、系统结构(如内存和容器)、备份和恢复方法等方面进行了简单的比較。前面已经提到。本文的目的是让如今的 MySQL 数据库管理员对 DB2 Express 有一般性的了解。
以上是关于利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务的主要内容,如果未能解决你的问题,请参考以下文章