1.1 INFORMIX-OnLine 数据库原理
INFORMIX-OnLine动态服务器是 INFORMIX 的强大的多线程数据库服务器,其设计目的在于发挥对称多处理器( SMP )和单处理器结构的能力,以实现在数据库可伸缩性、可管理性和性能等方面的突破。 OnLine 动态服务器的核心技术基于 INFORMIX 的动态可伸缩结构( DSA ),其目的在于提供最有效的并行数据库结构,以在管理日益增大和复杂化的数据库的同时帮助改善整个系统的性能和可伸缩性。
OnLine动态服务器提供高级事务处理,通过新的并行数据查询( PDQ )技术而达到最优的决策支持、高可用性、数据完整性、大型主机能力的系统管理、图形化的监控工具、以及多媒体的能力,所有这些都集成在一个客户 / 服务器就绪的软件包中。 OnLine 动态服务器支持 INFORMIX 所有基于 SQL 的应用开发工具以及许多第三方工具,并可以在许多基于 UNIX 的单机或网络环境下的计算机系统上运行。
1.1.1 关于 INFORMIX-OnLine 动态服务器
当今复杂的、关键任务的数据库管理应用通常需要联机事务处理(OLTP )、批处理和不断增长的决策支持的结合。为满足这些要求,你就需要有可伸缩的数据库性能,以动态地适应容纳更大的数据库和更多的并发用户。你还需要新的数据库技术,以充分利用现存的软硬件配置(包括单处理器和多处理器结构)以及新出现的硬件结构(例如松散耦合和大规模并行结构)。
INFORMIX-OnLine动态服务器提供最有效的解决方案 —— 运用下一代并行数据库结构以提供大型主机能力的可伸缩性、可管理性、性能、最小的操作系统开销以及负载的自动分布。 OnLine 动态服务器采用多线程结构,其设计目的在于充分利用可用的硬件资源( CPU 、磁盘、存储器、备份磁带设备等等),并且可被联机地动态再装配以适应系统负载的不断变化。 OnLine 动态服务器今天将这些优点提供给 SMP 和单处理器结构,并且在未来的版本 XPS INFORMIX-OnLine Extended Parallel Server 中将进一步支持松散耦合的聚集和大规模并行硬件结构。
1.1.2 OnLine 动态服务器的优点
这种联机、动态调整数据库参数的能力为关键任务的数据库应用提供高可用性可伸缩性。OnLine 动态服务器允许监控、分配和撤消数据库服务器进程(而不需要暂停系统的运行),在保持高可用性的前提下保证对资源的最有效的分配。所有这些处理都是透明地进行的,不会影响应用系统和系统上的用户。
这样做的好处如下:
l 通过动态分配和配置数据库系统资源的能力而达到最大限度的可伸缩性。
l 对于 OLTP 和决策支持应用的高级的、多线程的并行处理性能。
l 动态、联机地管理系统,以对任务进行监控和对负载进行分配。
l 为高级的并行 I/O 操作和高可用性的数据库管理进行局部的表分割。
l 通过动态分配共享存储器、高速缓存和其他资源而达到的高可用性。
l 通过绕过操作系统的限制而降低操作系统的开销。
l 任务的优先级化、调度和数据库级的加锁(不同于操作系统级的加锁)。
l 跨所有可用的数据库服务器进程的动态负载平衡。
1.1.3 OnLine 动态服务器的工作原理
OnLine动态服务器核心结构的设计是为了从根本上提供含于内核的多线程和并行处理能力。这种底层的 DSA 框架结构能保证对所有可用系统资源最有效的利用。
OnLine动态服务器提供一种独特的能力,通过采用可动态分配的数据库服务器进程(虚处理器)缓冲池以及将大任务划分为子任务,使你能调整你的数据库系统,加快任务处理。这些虚处理器调度和管理用户请求,并通过 MCTs 来并行地执行多个子任务。
多线程OnLine 动态服务器不是通过启动 UNIX 进程来响应客户请求,而是创建一种叫作线程的轻便机制。一个线程就是一个顺序的控制流,它代表数据库服务器进程中的离散任务。为每个用户对话建立一个线程,多条线程可以在虚处理器缓冲池中并行执行(在这一点上,虚处理器与物理处理器十分相似)。线程与多线程虚处理器的关系如同数据库服务器进程与操作系统的关系一样。
1.2 INFORMIX-OnLine 结构
OnLine动态服务器具有依据当前需要调整数据库性能以及更有效地管理整个系统的能力。本节详细介绍这些特性。 OnLine 动态服务器利用这些特性来提供卓越的性能。
1.2.1 异步 I/O
I/O通常是数据处理中最慢的部分。 OnLine 动态服务器使用它自己的异步 I/O ( AIO )软件包(或可利用的操作系统核心的 AIO )来加速 I/O 处理。因为 OnLine 动态服务器的虚处理器异步地对用户的 I/O 请求进行服务,所以一个虚处理器不必等待一个 I/O 结束就可以开始处理另一个 I/O 请求。
I/O虚处理器有四种特定类型:逻辑日志 I/O ,物理日志 I/O ,异步 I/O ,核心异步 I/O ( KIO )。将 I/O 划分为这些类型使得可以实施一种高效的优先级划分方案。另外,鉴于 I/O 请求被统一调度, OnLine 动态服务器就能有效地使所有可用的磁盘处于忙碌状态。实际上,你可以使用 OnLine 动态服务器系统监控界面来探测从磁盘读写的长队列,然后启动附加的特定于 I/O 的虚处理器来消除 I/O 瓶颈。
1.2.2 数据一致性
高可用性保证了系统级的完整性,而数据一致性则保证了事务级的一致性。OnLine 动态服务器通过事务日志和内部一致性检查,以及通过建立并执行加锁过程、隔离级别和业务规则来保证数据一致性。
1. 事务日志
当一个操作无法完成时,未结束的事务必需从数据库中撤消,以保证数据的一致性。为了撤消未完成的事务,OnLine 动态服务器在逻辑日志中保存一条有关所有事务的历史记录,并且参照这些事务记录将数据库恢复到事务前的状态。
2. 内部一致性检查
内部一致性检查的设计目的是为了向OnLine 动态服务器管理员报告数据和系统的不一致性。 OnLine 动态服务器保持数据级一层的检查,以检测可能由于硬件或操作系统错误而引起的数据不一致性。如果检测到不一致性,该内部机制将自动地把消息写到 OnLine 动态服务器的消息日志中。
3. 参照完整性
参照完整性允许用户定义和实现字段之间的关系。例如,OnLine 动态服务器的参照完整性将保证在所有子表中相应的记录被删除前,不能删除主表中的记录。这就可以防止当用户还有订货记录时,就将其从用户表中删除。
4. 实体完整性
实体完整性确保特定字段只能接受某一类的数据。通过实体完整性管理员就可以设定每一字段的取值范围。用 户还可以为每一字段设定符合字段定义的缺省值。
1.2.3 存储过程
存储过程由一系列的SQL 命令和程序语句组成,存储过程以命名过程的方式存储在数据库中。通过存储过程完成日常操作可以确保数据的一致性。存储过程在数据库一级而不是在应用程序一级维护着一些通用的、优化的应用过程。
存储过程能够:
l 接受参数
l 调用另一过程
l 返回调用值给调用过程或批处理,指示调用成功或失败(以及失败的原因)
l 返回参数值给调用过程或批处理
l 被远程 SQL Server 执行
构造存储过程的能力大大增强了SQL 语言的功能、效率和灵活性。这种编译的过程也极大地改善了 SQL 语句和批处理的性能。
存储过程不同于普通的SQL 语句或批处理的 SQL 语句,因为它们是被预编译过的。当首次运行一个存储过程时, SQL Server 的查询处理器将对其分析,并准备出最终被存在系统表中的执行语句。由于查询处理的大部分工作已经完成,所以存储过程能以极快的速度执行。
1.2.4 触发器
应用程序除了可以调用存储过程来加强业务规则外,还可以利用另一种调用存储过程的方法,这就是触发器。在对表进行INSERT 、 DELETE 或 UPDATE 操作时,可以定义一些触发器使数据库服务器自动调用存储过程(或 SQL 语句)。
触发器是一种特殊类型的存储过程,它在INSERT 、 DELETE 或 UPDATE 特定表中数据时起作用。触发器通过维持不同表中逻辑上相关数据的一致性,保持数据的相关完整性。
触发器的主要优点是在不管什么原因造成数据变化时,即无论是录入人员输入数据还是应用程序的影响,它们能够自动响应。触发器专用于一个或多个数据更新操作,即UPDATE 、 INSERT 或 DELETE 。对于每条 SQL 语句,触发器执行一次;它在数据更新语句完成后立即启动。
1.2.5 磁盘镜象
OnLine动态服务器使用镜象来提高读的性能,因为数据的两个版本存放在不同的硬盘上。数据页面或者从主 chunk 读入,或者从镜象 chunk 读入,这由哪半个 chunk 中包含数据页面的地址来决定。这称作分裂读。由于减少了磁盘搜索的时间,所以分裂读能提高性能。磁盘搜索时间的减少是由于磁头移动的最大距离减半了。另外,由于运行结果可以以异步提交方式写入主 chunk 和从 chunk ,这实际上是并行而不是串行写操作,因此性能可以进一步得到提高。
1.2.6 磁盘原始分区管理
为了提高数据访问速度,OnLine 动态服务器使用磁盘原始分区上的连续存储空间,因为 UNIX 文件系统不能保证空间分配的连续性。相反,通过对磁盘原始分区的使用, OnLine 动态服务器能够建立自己的存储体系。
1.2.7 客户机 / 服务器就绪包
OnLine动态服务器内置的分布式、客户机 / 服务器连接保证任何 INFORMIX 的应用只要使用 7.2 版的连接库就能以客户机 / 服务器模式运行。这样,不需其它的网络产品, OnLine 动态服务器就能直接运行在各种客户机 / 服务器机构的网络上。
OnLine动态服务器可以在一个事务内读、连接、更新多个不同计算机系统上的表。一流的优化技术确保了多点修改的快捷性,而两阶段提交恢复过程将保证即使系统失败后,被更新的表也能保持一致性。
1.2.8 开放数据库互联
OnLine动态服务器通过 INFORMIX 的调用级接口( CLI )支持 Microsoft 的开放数据库互联( ODBC )规范中所定义的所有 ODBC API 调用、数据类型、 SQL 语法。 INFORMIX 朇 LI 也提供 TP/XA 功能。目前,基于 ODBC 规范开发的应用数以百计,包括会计、存货管理、用户追踪等,这样采用 INFORMIX 的 OnLine 动态服务器,用户可以立即享受到基于客户 / 服务器环境的各种应用。
小 结
INFORMIX-OnLine动态服务器是 INFORMIX 的强大的多线程数据库服务器,具有依据当前需要调整数据库性能以及更有效地管理整个系统的能力。
OnLine动态服务器核心结构的设计是为了从根本上提供含于内核的多线程和并行处理能力。这种底层的 DSA 框架结构能保证对所有可用系统资源最有效的利用。
习 题
2-1 存储过程是由 _______________ 组成,存储过程以 _____________ 的方式存储在数据库中。
2-2 I/O虚拟处理器有哪几种特定类型?