Informix的系统结构
Informix动态服务器采用的是一种多线索体系结构,这就意味着一个进程利用自己的多个线索可以同时完成多个任务,因而整个系统只需要较少的进程就足以完成DBMS的任务。
动态服务器系统由三个主要组件构成:共享内存,进程和磁盘。共享内存包括三个段:驻留段。虚拟段和消息段。驻留段主要用作磁盘数据的缓存。虚拟段主要用作内存池以支持进程及相关的会话(session)和线索。当客户与服务器利用共享内存进行通信时,消息段将用作两者之间的消息缓冲区。
系统中还包括若干构成数据库服务器的UNIX进程,称为oninit.这些进程被称为虚拟处理器(VP)(virtual processors)。每一VP隶属于某一虚拟处理类。而每一虚拟处理器类都负责完成一类特定的任务。
系统的磁盘组件由多个原始磁盘空间组成,称为chunk,chunk以页(page)为基本单位。多个chunk集合逻辑上构成了数据空间(dbspace)。数据空间用于存储数据库、表、系统信息以及物理日志和逻辑日志。一个数据空间至少包括一个chunk.
共享内存段
动态服务器的共享内存由三个段构成: 驻留段主要用作缓冲池,内含逻辑日志和物理日志的缓冲区以及其他系统数据结构。驻留段的大小主要有系统参数BUFFERS决定。
虚拟段主要用作内存池以支持会话和线索。根据用途的不同,内存池可以进一步分为:会话池、多线索池、字典池、存储过程池、排序池、大缓冲池以及全局池。内存池的分配和释放是动态进行的。内存池分配单位大小为8k。如果已有虚拟段耗尽,动态服务器可以根据onconfig参数再次动态申请。虚拟内存段的初始大小由参数SHMVIRTSIZE决定,其增量由参数SHMADD决定,但整个共享内存段的大小不能超过SHMTOTAL。
如果客户与服务器利用共享内存进行通讯,消息段将用作通讯缓冲区。每一用户连接(利用共享内存进行通讯)大致占用12K空间。用户连接的数量在参数NETTYPE中定义。用户可以利用ipcs或onstat-gseg命令来监控共享内存段的状态。
虚拟处理器(VirtualProcessors) 虚拟处理器类
oninit cpu类:运行所有用户线索和部分系统线索(所有线索的95%)
oninit AIO类:运行所有内部线索以执行I/O,日志写除外
oninit PIO类:运行内部线索写物理日志
oninit LIO类:运行内部线索写逻辑日志
oninit SHM类:运行共享内存通讯线索
oninit TLI类:运行内部TLI网络通讯线索
oninit SOC类:运行内部Sockets网络通讯线索
oninit MSC类:运行其它任务线索
oninit ADM类:运行时钟
oninit OPT类:负责管理BLOB将传至光盘子系统
oninit ADT类:运行安全审计线索
数据库系统服务器由若干称为oninit的UNIX进程组成,在系统中这些进程被称为虚拟处理器(VP)。所有VP都是可执行程序oninit的实体。每一VP属于一种特定的虚拟处理器类,而不同的虚拟处理器类分别完成不同的任务。每一虚拟处理器可含的VP数量由下列参数决定:
CPUNUMCPUVPS
AIONUMAIOVPS
PIO自动启动一个VP。如果物理日志被镜像,将启动两个VP
LIO自动启动一个VP。如果逻辑日志被镜像,将启动两个VP
SHMNETTYPE
TLINETTYPE
SOCNETTYPE
MSC自动启动一个VP
ADM自动启动一个VP
OPTSTAGEBLOB被设置,然后自动启动一个VP
ADTADTMODE被设置,然后自动启动一个VP
用户可以利用PS或者onstat-gglo命令监控VP的状态
线索
onstat-gath显示所有线索
onstat-gact显示活动线索
onstat-grea显示所有就绪线索
在动态服务器中,线索是在oninit中的一段被执行的指令流。通过多线索机制,可以让一个进程同时为多个任务服务而不必生成多个OS级进程。进程oninit可以启动多个线索,各线索顺序执行,并在适当地时候把控制权转移给其它线索。在多线索进程中每一线索都有自己的执行环境,包括自己的代码空间和自己的局部变量。一个多线索进程负责多个线索间的正文切换。
在系统中,线索只能有两种存在状态:要么正在某个VP上运行,要么在某一队列排队等待。在就绪队列中保存了所有已就绪只待执行的线索的正文。一旦出现空闲VP,该VP就从就绪队列中选取一个线索执行,而选取的标准由内部的优先机制决定。
在特定的时候,当前运行的线索会把对VP的控制权转移给其它线索。有如下几种可以导致控制权的转移:
等待磁盘读写操作
等待应用程序的请求
等待获得锁或其它资源
将运行机会转给其它线索
一旦线索交出控制权,该线索的context就将被列入等待或睡眠队列中。所有等待某种操作的线索进入等待队列,而所有需要稍后被唤醒的线索进入睡眠队列。
磁盘组件
在动态服务器中以页(page)作为基本存储和I/0单位。页大小因机器和操作系统的不同而不同,一般为2k,也可能为4k,用户无法改变页大小。
分配给系统使用的连续磁盘空间的单位称为chunk。chunk由多个页构成。它是一个典型的UNIX原始设备。chunk的大小由系统管理员设定。
数据空间(dbspace)是多个chunk的逻辑集合。每一数据空间至少包括一个chunk。数据库和表创建在指定的数据空间上。系统必须至少包括一个数据空间:rootd bspace。在该空间中存储着关于系统的信息。
物理日志(physica llog)由连续的磁盘空间构成,其存储着共享内存缓冲区中所有已修改的数据页(但尚未写入磁盘中)被修改前的映象。因而物理日志主要用于快速恢复。只有当数据页在首次被修改时,系统才会将其映象写入物理日志。
逻辑日志(logical logs)也是由连续的磁盘空间构成,其存储着事务记录、DDL语句和checkpoint记录。由管理员设定逻辑日志的数目。系统循环使用逻辑日志。在系统第一次初始化时,物理日志和逻辑日志都自动建立在root dbspace上。
- · Informix动态服务器onstat选项
- · Informix SQL 的使用技巧
- · 在UNIX下的Informix-online中合理地组织表
- · 开发优质高效的Informix数据库应用程序(1)
- · Informix数据备份技巧
- · Informix 4GL写的转换成大写金额字串的函数
- · 一个批量删除临时表的sh用于informix
- · 影响CPU使用率的配置参数和环境变量
- · Ontape -r 恢复总结(1)
- · 用shell实现Informix的性能监控
- · Windows xp下的Informix connect配置方法
- · OnLine非正常结束后处理办法
- · OnLine进程被挂起后处理办法
- · Informix动态服务器表分片策略的计划和调整
- · 备份Informix-Online数据库三法
- · datetime类型简介
- · 配置Informix动态服务器中CPU虚处理器
- · online的备份详解
- · 配置和实现Informix ON-Bar的备份解决方案
- · Informix sysmaster表详解
- · JDBC连接Informix IDS
- · Sybase数据库死锁对策
- · SYBASE ASA数据库恢复方法
- · Sybase数据库简介(1)
- · SYBASE零售行业解决方案
- · SYBASE数据库日志详解
- · SQL Server 的通用分页显示存储过程
- · Oracle数据库中索引的维护(1)
- · Oracle9i的索引监视及注意事项
- · Oracle 的位图索引简述
- · 在ORACLE里按用户名重建索引的方法
- · Oracle数据库强制索引
- · 改善Oracle的索引
- · Oracle管理查询管用的sql语句
- · Oracle中的模糊查询
- · Oracle 中使用层次查询方便处理财务报表
- · 使用Oracle的Instr()与decode()函数进行多条件组合查询
- · MS SQL Server查询优化方法
- · Access使用查询
- · Access的跨库查询
- · Access 创建索引
- · 为数据库建立索引
- · 优化Microsoft Access提高速度
- · Sybase数据库的性能优化
- · 查询优化
- · 提高ORACLE数据库的查询统计速度
- · ORACLE SQL性能优化 (上)(1)
- · ORACLE SQL性能优化 (下)(1)
- · SQL Server性能分析参数
- · SQL Server 性能优化工具(1)
- · 使用索引调节向导调整应用程序的性能
- · 优化SQL Server服务器内存配置的策略
- · 影响SQL server性能的关键三个方面
- · MySQL性能优化的参数简介
- · MYSQL数据库的查询优化技术
- · 确定Oracle数据库表中重复的记录
- · Access数据库与SQLserver2000的数据互导
- · SQLServer和Access、Excel数据传输简单总结
- · SQL Server到Oracle连接服务器的实现
- · 使用SQL Server数据转换服务升迁Access数据库(1)
- · 将Access移植到SQL Server
- · 联系使用Excel和SQL(1)
- · 避免Access和SQL Server的空值冲突
- · 保护SQL Server:为安全性而安装
- · SQL Server 2000 客户端实用程序
- · 执行一个安全的SQL Server安装
- · SQL Server安全-加密术和SQL注入攻击
- · 指定文件位置优化性能
- · SQL Server备份的三个恢复模型
- · SQL Server的空值处理策略
- · 两个SQL Server维护技巧
- · 用SQL Server保持会话状态
- · 使用SQL服务器内置的错误寻找器寻找和剖析错误
- · 安装SQL Server 2000
- · SQL Server 2000 与 SQL Server 7.0 版兼容性问题
- · MS SQL Server 7.0 性能优化指南
- · MS SQL Server 7.0 的 SAP R/3 性能优化指南
- · 基于WEB的数据库查询
- · Sql Server全文搜索中文出错的问题
- · SQL Server7移动数据的6种方法

