ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [IDS培训文档]第一章 Informix动态可伸缩体系结构

[IDS培训文档]第一章 Informix动态可伸缩体系结构

原创 Linux操作系统 作者:mrhutoo 时间:2013-09-06 07:57:37 0 删除 编辑
第一章 Informix动态可伸缩体系结构
DSA (Dynamic Scalability Architecture)
一、关系型数据库(Relational Database)系统体系结构
目前比较流行的商用关系型数据库多采用一下三种体系结构:
1、一请求一服务体系结构
采用对于每一数据库服务请求,数据库系统将为之分配一个数据库服务进程服务的方式。
优点:可以充分隔离不同用户的数据库服务,并且可以比较容易发挥采用SMP体系结构的机器
的资源。
缺点:系统内存资源、CPU资源消耗大;由于使用操作系统的进程调度,系统运行效率不高。
2、多线索体系结构
优点:不需要频繁的操作系统的进程切换,节约内存、CPU资源;系统并行运行程度高,运行
效率高。
缺点:系统比较脆弱,一个线索的误操作,可能导致系统瘫痪;数据库自己的线索切换较操
作系统的切换简单;大数据量的操作可能引起系统资源的不均衡分布。
3、混合体系结构
该系统由(1)多线索的网络监听器(2)任务分发器,包括请求/响应队列(3)可重用数据
库服务器组成。
优点:任务处理采用并行和排队的方式,系统运行效率高。
缺点:负载均衡较简单。
二、IDS系统组成
IDS(Informix Dynamic Server)数据库系统由以下部分组成:
1、共享内存部分
共享内存部分包括:长驻内存部分、虚拟内存部分、消息区。
(1)长驻内存部分主要是用于磁盘数据在内存的缓冲、系统数据等等
(bufffers,physical/logical buffers,LRUs,chunks,dbsapces,users,locks…)。
(2)虚拟内存部分主要用于VP的管理信息和缓冲区。
(global pool,dictionary pools,procedure pools,sort pools,session pools,big buffe
r pools,MT pools)。虚拟内存部分在使用过程中可以动态增长,增长大小在配置文件中定
义。
(3)消息区主要用于应用(client)和数据库引擎(server)之间的信息交换。
2、磁盘数据空间部分
3、数据库引擎-虚拟处理器VP(Virtual Processors)。
三、IDS多线索体系结构
Online7.0改变了Online5.0中一对一的客户/服务器模式:由原来的一个数据库请求启动一
sqlexec数据库引擎服务的Client/Server方式转变为对于所有数据库请求由多个数量固定(
除非动态调整)的数据库引擎(即VP虚拟处理器)服务的方式。OnLine7.0把数据库引擎按功
能划分为多个VP,这些VP是长驻内存的oninit进程。对于每一个数据库服务请求都将被分割
成多个可并行的线索,由不同VP并行服务。线索(thread)可以定义为一段顺序执行的程序
。虚拟处理器VP可以定义为完成一定义数据库服务功能的数据库进程。VP包括一下类型:CPU
,PIO(负责写物理日志),LIO(负责写逻辑日志),AIO(负责磁盘I/O)等等。线索运行
在VP上,线索的调度由CPU VP完成。从这一点来看,VP类似于硬件上的CPU,线索类似与运行
其上的进程。多线索体系结构的优点:
(1)fan-in:对于多个应用请求,数据库只用一定数量的VP服务,并可以根据需要动态调整

(2)fan-out:多个数据库VP服务一个应用请求;
(3)数据库内部的线索切换避操作系统的进程切换速度快、效率高;
(4)多线索体系结构更适合于多CPU的体系结构,如:affinity特性。
四、IDS客户/服务器连接方式
1、IDS的客户/服务器连接方式可采用一下方式:
(1)共享内存连接方式(onipcshm)
(2)管道连接方式(onipcstr)
(3)网络连接方式(基于TCP/IP协议,包括ontlitcp,onsoctcp或者IPX/SPX协议,ontlispx
)基于TCP/IP网络协议的应用接口可以使用SOC(Socket)或者TLI
(Transport Layer Interface)。采用网络连接方式的客户端与服务器端必须使用相同的网
络通讯协议(TCP/IP协议或者IPX/SPX协议),但是客户端使用socker接口,而服务器端使用
tli接口。
2、基于共享内存方式的客户服务器连接
3、基于TCP/IP协议的客户服务器连接
(1)在客户端和服务器端的/etc/hosts文件中指定连接方式。
(2)在客户端和服务器端的/etc/services文件中指定通讯端口和网络协议。
(3)在客户端和服务器端的$INFORMIXSQLHOSTS文件中指定如何访问服务器,包括服务器名
称、服务器网络地址、服务器网络访问方式(协议和端口号)。
(4)检查网络系统安全文件,包括/etc/hosts.equiv、$HOME/.rhosts文件。
(5)在客户端和服务器端设置环境变量,包括INFORMIXSERVER,INFORMIXSQLHOSTS。
五、IDS磁盘数据结构
1、数据存储概念
(1)page
page是OnLine的最基本数据存储单位。OnLine的数据页面包含一下内容:
(1)24个字节的页头(包含4个字节的时间戳(timestamp))。
(2)数据区
(3)槽表(slot table)
每4个字节。前2个字节存放记录在页面的偏移量,后2个字节存放该记录的大小。一个页面中
的槽表个数最多不超过255,所以一个数据页面最多存放255个记录。
(4)时间戳。
(2)extent
extent是多个物理连续page(最多4个)的组合。数据库表的存储空间分配是以extent为单位
的。
(3)tbspace
tbspace是extent的逻辑组合。Tbspace由分配给一个表的所有extent组成。一个tbspace只可
能在一个dbspace中,但可能跨越多个chunk。
(4)chunk
chunk是分配给OnLine的一块物理存储空间,可以是unix文件,也可以是原始设备。
(5)dbspace、blobspace
dbspace是chunk的逻辑组合。数据库管理员可以为dbspace创建、增加chunk、从而增加数据
库的存储空间。创建dbspace时必须首选指定它的primary chunk。
2、日志(log)
数据库日志是用于维护数据库数据一致性的手段。IDS的日志分为物理日志(physical log)
和逻辑日志(logical log)。物理日志用于维护数据库的物理一致性,在每次修改数据之前
,该数据所在的数据页面都将存储在物理日志中,所以物理日志也称为“前镜像”
(before images)。逻辑日志用于维护数据库的逻辑一致性,在每次变动数据库时,所有变
动情况都将记录在逻辑日志中。物理日志在每次checkpoint之后将被自动清空;逻辑日志必
需是已经备份,而且日志中包含的事务都已提交,并且不是最后一个日志文件才能被释放。
长事务是指那些尚未结束,但数据库逻辑日志文件已经被事务日志记录充满的事务。这样一
来逻辑日志文件既不能被释放重用,同时事务日志记录也写不进逻辑日志文件。这种情况下
,IDS会阻塞数据库请求,同时“回滚”长事务。
六、IDS的容错处理
1、checkpoint
checkpint是IDS的一个重要系统功能。IDS利用checkpoint来保证共享内存数据缓冲区中的数
据与物理磁盘上的数据保持一致。它包括一下步骤:
(1)挂起临界区;
(2)刷新共享内存中的物理日志缓冲到物理磁盘上的物理日志文件;
(3)刷新共享内存缓冲区中发生修改的页面到物理磁盘页面上;
(4)写checkpoint记录到逻辑日志文件和系统保留页中;
(5)逻辑清空物理日志文件;
(6)刷新逻辑日志缓冲区到物理磁盘的逻辑日志文件中。
注意:IDS在刷新内存中的页面到物理磁盘之前,必须先将物理日志缓冲区的数据刷新到硬盘
上的物理日志文件中。
2、fast recovery
IDS利用fast recovery功能来保证数据库每次重起时快速恢复到数据库shutdown时的一致性
状态。
它包含一下步骤:
(1)恢复物理日志文件中的数据到共享内存的缓冲区和磁盘的物理页面上;
(2)在逻辑日志文件中定位系统最后一个一致点-checkpoint点;
(3)根据系统最后的一致点以后的逻辑日志记录“回滚”(rollback)尚未提交的事务和“
取消”(undo)已经提交的事务。
3、IDS数据缓冲技术
IDS对数据库中的操作都是通过对共享内存数据缓冲区中数据的操作来完成的。例如一个修改
数据库记录的操作

Begin work;
Update tab1 set fld1=”” where fld2=?;
Commit work;

IDS处理如下:
(1)客户端连接到IDS后(connect…,database…),IDS为这个请求启动一个sqlexec任务
进行服务。
(2)sqlexec在对SQL语句进行语法分析后,产生执行计划。
(3)sqlexec在logical log buffer中写入事务开始记录。
(4)sqlexec将请求读取某个chunk中的某个数据页面,并申请相应锁资源。
(5)IDS首选在内存缓冲区的LRU队列中查找该数据页面是否在缓冲区中。
(6)如果不在缓冲区中,IDS将在FLRU队列中查找空闲页面,如果没有,IDS将启动一个
Forground Write来申请一个空闲缓冲区页面。IDS申请将该数据页面从磁盘上读入到缓冲区
中。在修改数据前,IDS将该页面写入物理日志缓冲区中。然后,进行数据修改。接下来执行
步骤(8)。
(7)如果在缓冲区中,并且在FLRU队列中,IDS将该页面写入物理日志缓冲区中,并进行数
据修改。如果在MLRU队列中,IDS将直接进行数据修改。
(8)IDS向逻辑日志缓冲区中写入修改操作的逻辑日志记录。
(9)IDS释放该事务申请的所有锁资源,并向逻辑日志缓冲区中写入日志结束记录。
七、IDS监控
1、IDS状态
(1)off-line状态
(2)quiescent状态
(3)online状态
(4)shutdown状态
(5)recovery状态
2、系统阻塞原因
CKPT Checkpint
LONGTX Long Transaction
ARCHIVE Ongoing archive
MEDIA_FAILURE Media failure
HANG_SYSTEM Database server failure
DBS_DROP Dropping a dbspace
DDR Discrete high availability data replication
LBU Logs full high-water mark
3、监控工具。
用户可以使用SMI(System Monitoring Interface)、onstat工具、oncheck工具完成对IDS
的监控。
1)使用系统监控界面SMI
系统监控界面采用只读方式直接访问DSA的管理信息。
2)使用onstat监控工具
(1)监控数据库日志文件online.log:onstat -m
(2)监控数据库系统共享内存使用情况:onstat –g seg
(3)监控数据库系统逻辑日志使用情况:onstat –l
(4)监控数据库系统chunk使用情况:onstat –d
(5)监控数据库系统在线session情况:onstat –g ses
(6)监控数据库系统某个在线session情况:onstat –g ses sessid
(7)监控数据库系统在线userthread情况:onstat –u
(8)监控数据库系统锁资源使用情况:onstat –k
(9)监控数据库系统缓冲区刷新操作情况:onstat –F
(10)监控数据库系统LRU队列使用情况:onstat –R
(11)监控数据库系统对所有chunk对协操作情况:onstat –g iof
(12)监控数据库系统在线thread情况:onstat –g ath
(13)监控数据库系统在线VPs情况:onstat –g glo
(14)监控数据库系统使用效率情况:onstat –p
(15)监控数据库系统PDQ使用情况:onsat –g mgm
(16)监控数据库系统就绪队列(ready queue)情况:onstat –g rea
(17)监控数据库系统等待队列(wait queue)情况:onstat –g wai
(18)监控数据库系统休息队列(sleep queue)情况:onstat –g sle
(19)监控数据库系统活动事务情况:onstat –X
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24955184/viewspace-772251/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-11-20

  • 博文量
    27
  • 访问量
    67039