一种主动实时数据库的系统内存管理方法
实时库介绍——精选推荐

实时库介绍总体介绍实时数据库是在内存缓冲区保存电力系统运行的实时数据,以提高系统的响应速度和处理能力,在各应用服务器(逻辑)下装实体,为其他客户端提供数据访问服务。
实时数据库的设计原则原始的数据模型存于商用库,实时库中的数据从商用库中下装;实时数据库实体仅在服务端分布,客户端没有实时库;采用磁盘文件映射的内存管理机制实现;支持多应用,多上下文;提供各种访问接口,包括本地,网络,标准,快速实时数据库的功能说明数据存储。
为了提高系统的响应速度和处理效率,要在实时数据库的内存缓冲区保存系统的基本数据和实时数据。
基本数据是电力系统运行中基本不变或缓慢变化的数据,例如:发电、变电、输电及其控制与量测配置设备和参数,一般也称为电网模型数据。
实时数据是自动量测的数据,包括遥信、遥测和电量。
数据定义。
电网模型数据包含的设备信息和参数基本是由用户人工输入与修改的,必须给用户提供定义和修改这些数据的操作界面。
在某些特定时刻,电力系统高级软件的设计人员可能需要修改电网模型的定义,以从不同的视野和角度描述电网模型。
因而,必须提供用户输入、修改数据的界面。
数据验证。
对用户定义的电网模型数据,能够检查数据结构和参数错误,建立互相之间的关联。
模型同步。
能够根据用户提供的电网模型生成一致的模型数据;当模型变化时,能够保持模型数据的同步更改和维护完整性、一致性。
数据浏览,提供实时数据浏览的途径和方法,能够让用户方便地观察本机或其他接点的任意实时数据库中的各种数据。
数据访问,提供一致的访问接口,让各种应用能够方便地实现对实时数据库的操作,包括查询、增加、删除、修改;并且提供按应用名(号)、表名(号)形式的访问接口,以及SQL形式的访问接口支持多应用。
实时数据库的不同应用的支持体现在以下几个方面:▽不同的应用可以从商用库中根据应用属性形成不同的电网模型;▽同一数据模式可以根据不同应用形成多份数据库实体;▽电网模型相同的应用的数据实体可以进行复制;支持多上下文。
实时数据库

实时数据库
1
实时数据库的概念
2
实时数据库核心技术
3
发展现状及未来趋势
4
实时数据库的应用领域ቤተ መጻሕፍቲ ባይዱ
目 录
CONTENTS
5
6
与其他数据库的对比
实时数据库的优缺点
PART 1
概念
背景
特点
主要功能
谈及实时数据库,当时诞生于美国,随着流程工业和航天工业的发展,大量的测量数据需要集成和存储,采用关系数据库难以满足速度和容量的要求,而且接口访问复杂,不适合科研和监控的需要,因此80年代中期,开始诞生了以工业监控为目的的实时数据库。 今天大家看到的一些实时数据库,如PI、Uniformance、Infoplus、InSql等工业监控类实时数据库均先后诞生于此阶段。 当时还有另外一个分支,即所谓硬实时数据库,它的采集速度和响应速度均是毫秒级的,而大家知道,今天大量应用实时数据库,主动采集速度均是秒级的,响应速度也不严格,在Windows平台下,小于40ms的响应均不准确,但当时却有这类产品,目前多用于军事和科研了。 到了上世纪90年代,实时数据库在流程工业全世界范围内大行其道,源于以太网的逐步普及;主要应用于工业监控、控制和公用工程。 国内的实时数据库发展较为缓慢,这与技术封锁有一定的关系,到了2000年之后,国内的实时数据库逐渐展露头角,如ESP-iSYS、Agilor等与国外的PI、InfoPlus均属于大型分布式网络实时数据库。规模相对较小的,如PHD、ConRTDB、SuperInfo,在国内开始应用。由于应用场景的不同,好多企业开始还只是解决现场监控的问题,由于分不清RTDB与SCADA的概念,结果InSql获得了一个发展的机会。
实时数据库系统中的事务管理技术
一种数据库表数据实时推送的方法及其系统的制作方法

一种数据库表数据实时推送的方法及其系统的制作方法专利名称:一种数据库表数据实时推送的方法及其系统的制作方法技术领域:本发明涉及数据库应用领域,尤其涉及一种数据库表数据实时推送的方法及其系统。
背景技术:随着社会信息化程度的提高,不管是经济建设还是社会生活,对IT系统、互联网的依赖性越来越大,每个服务器中的数据库中都存储着许多相关的数据。
有些单位在服务器上的数据库中储存着许多宝贵的数据,有些单位在数据库中的数据被应用到客户服务应用系统中,有些单位之间的数据存在业务上的联系,比如医院和保险公司等等,需要保持数据的一致,一旦这些服务器出现某种故障,这些宝贵信息数据有可能丢失殆尽,且无法挽回,造成的重大损失确保数据的安全,所以必须对数据做备份,系统可以快速恢复启用。
有些单位之间的数据存在业务上的联系,比如医院和保险公司等等,需要保持数据的一致。
但是数据库中的数据并不是不变的,一个典型的例子为图书馆的借阅系统记录书本的借阅清单,但是书本被借阅后其记录数据发生变动,此时数据库中的数据即时发生变更,但是备份数据若不能同步完成数据更新,当图书馆数据库中的数据因突发事故丢失,启用备份数据后,不能得到正确的书本借阅数据。
因此,当数据库中的数据或增加或删除或修改,为了使备份数据与数据库中的数据一致,在数据库变动时同步更新备份数据。
发明内容本发明为克服上述的不足之处,目的在于提供一种数据库表数据实时推送的方法,源数据库中的数据变更后生成变动记录,服务器接收变动记录激活触发器,触发器生成临时表后由同步更新装置更新目标数据库,完成源数据库与目标数据库的同步更新,减少备份过程中数据传输的内存占有率,快速推送数据,利于备份。
本发明的另一目的在于提供一种数据库表数据实时推送的系统,能够实时监控源数据库中的数据变更情况,使源数据库与目标数据库同步更新。
本发明是通过以下技术方案达到上述目的一种数据库表数据实时推送的方法,包括以下步骤(I)源数据库划分为表数据存储区、POJO程序存储区;( 2 )源数据库的表数据存储区和目标数据库存入相同的原始数据,并标记可以同步的字段及主键信息;(3)源数据库与服务器连接,服务器自动列出源数据库的表数据存储区中可以同步的字段及主键信息;(4)服务器根据可以同步的字段及主键信息生成POJO程序文件,生成的POJO程序文件保存在POJO程序存储区中;(5)服务器根据可以同步的字段及主键信息生成触发器,触发器分为增加触发器、删除触发器、改动触发器;(6)源数据库的表数据存储区中的数据发生变动,源数据库根据变动的数据生成变动记录,将变动记录打包生成推送包,推送包发送至服务器;(7)服务器接收推送包后,发送一个确认包至触发器,触发器接收确认包后,增加触发器、删除触发器、改动触发器依次对推送包进行判断,判断数据的变动操作类型,根据判断结果生成临时表;(8)临时表与POJO程序文件关联,并通过POJO程序文件传输至同步更新装置;(9)同步更新装置接收数据并通过临时表中的数据更新目标数据库。
数据库监控与性能分析的方法和工具

数据库监控与性能分析的方法和工具数据库监控和性能分析是保证数据库系统稳定和高效运行的关键任务。
无论是关系型数据库还是非关系型数据库,如何监控数据库的运行状态并进行性能分析是数据库管理员的基本工作之一。
本文将介绍数据库监控与性能分析的方法和常用工具。
一. 数据库监控方法数据库监控是指实时追踪数据库的运行状态,包括对数据库的各个组件(例如服务器、存储系统等)的监控,以及收集关键性能指标来判断数据库的运行质量。
以下是几种常用的数据库监控方法:1. 系统监控:通过操作系统提供的工具来监控数据库服务器的整体性能。
例如,可以使用top命令来查看 CPU 使用率、内存使用率,使用iostat命令来监控磁盘I/O 情况,使用vmstat命令来监控虚拟内存使用情况等。
2. 数据库级监控:数据库管理系统本身提供了各种工具和指令来监控数据库的性能。
例如,可以通过查看系统视图或系统表来获取关键的数据库统计信息,如数据库的连接数、锁等待情况,还可以使用show commands或DBCC 命令来监控数据库的缓存使用情况、索引状态、日志文件使用等信息。
3. SQL 语句监控:通过监控数据库执行的 SQL 语句来了解数据库的瓶颈所在。
可以使用数据库的查询分析工具或Profiler工具来捕捉执行过程中的 SQL 语句,同时记录相关的执行计划和统计信息,从而分析查询的性能问题。
二. 数据库性能分析方法数据库性能分析是指对数据库系统进行性能评估,找出性能瓶颈并提供优化建议。
以下是几种常用的数据库性能分析方法:1. 基准测试:通过模拟生产环境中的工作负载对数据库进行测试,并收集关键的性能指标。
例如,可以模拟并发用户访问数据库、执行各类查询和事务操作,然后记录关键指标如响应时间、吞吐量等。
通过基准测试可以识别系统的性能问题,并基于测试结果进行优化和改进。
2. Explain 分析:通过使用数据库系统自带的Explain命令来分析查询计划。
支持主动实时事务的内存数据库技术

事务处理算法 J - J 优化 、并发控制及恢复苍技术对山存数据库不一定合适,如传统地一致认可的标准存取
方 法 B 树 ,对 MMDB而 言通 常 已不 具什 么优 越性 ,尤 其是 存 空 间浪 费太人 。
在传统意义 ,即使数据库的缓冲 足够大, 以致可使整个数据库或其 “J 作版本”常驻内存,冈 而 ,V 极 少 ,系统性 能很 好 ,但 它 是针对 磁盘特 性 的 , 是在假 定数据 库 常 驻磁盘 的情 况 F O 设计 的 ,故 仍 然 不可 能具有 MMD 的各 种功 能特 性和 优 点,例如 ,它 的索 引结 构还 是针 对磁 盘存 取 的。数据 存取 B 仍 然 必需经 过缓冲 管 理 。 o iJ ee a T bn . h m n等人 对其 实现 的常驻 内存 数据库 系 统 Sab rt 行了专 门的性 L t us进 r 能测试研究,他们 以一个子系统采I 内存数据管理,而 另一子系统采H传统的磁盘数据库管理 为了准 L } j = j 确 便 比较 ,斤 者 的数 据也 完全 置 丁内存 缓冲 中 .两 者在 事务执 行 ! 间均无 内外存 数 据交换 ,实验 寸 ]
实时数据存储管理的研究与设计

J OUR NAL OF I ER MO NN NGOLA I
第2 9卷
第 3期
UN VE I Y CHN0 0GY I RS T 0F I L
V0 . 9 No 3 2 1 12 . 0 0
文章 编号 :0 1— 17 2 1 ) 3— 0 4— 6 10 5 6 ( 0 0 0 0 0 0
收 稿 日期 :0 9— 4—2 20 0 6 基金项 目: 内蒙 古 工 业 大 学 科 学 研 究 项 目 ( 2 0 0 ) x 0 84
作者简介 : 田保 军 (9 1 , , 学 硕 士 , 究 方 向 : 17 一)男 工 研 软件 工程
第 3期
田保 军 等
实 时数 据 存 储 管理 的研 究 与 设 计
取速度 , 而且提高 系统 的整体性能 , 在实 际的应用 中取得 了较好效果 。
关键 词 : 实时数据 ; 历史数据; 数据池; 内存索引
中图分 类号 : P 1 T3 1
0 引 言
在工 业控 制 系统 中 , 对大 量 现场 过 程 生 产 的 实 时数 据 及 历 史 数 据 的 处理 是 十分 重 要 的 , 实 时 数 而 据、 历史 数据 的 IO速 度是实 时 系统 的 主要瓶 颈 。传 统 的数 据 库技 术 已经无 法 满 足对 海 量 数 据实 时 的 /
处 理 , 须借 助先进 的数 据存储 技术 来解决 。实时数据 库 系统 ( T B ,R a—TmeD t aeSs m) 必 R D S el i a bs yt 正 a e 是 为满 足此类 需求 而产 生 的 , 实时数 据库 系统是 文件技 术 和实 时技 术 相结 合 的一 种新 型 数据 存储 技术 ,
MySQL数据库监控工具推荐和使用指南
MySQL数据库监控工具推荐和使用指南1. 介绍在当前信息技术高速发展的时代,数据库已经成为现代应用架构中不可或缺的一部分。
对于许多企业而言,MySQL数据库是最常用的一种关系型数据库管理系统。
然而,由于MySQL数据库在运行过程中可能会面临各种问题,因此及时监控数据库的性能和健康状态是非常重要的。
本文将推荐几款常见的MySQL数据库监控工具,并给出相应的使用指南。
2. 监控工具推荐2.1 MySQL Enterprise MonitorMySQL Enterprise Monitor是MySQL官方提供的一款数据库监控工具。
它提供了一整套的监控功能,包括实时性能监控、查询分析、配置管理、报警通知等。
它使用图形化界面展示监控数据,并且可以根据阈值自动触发报警通知,方便管理员及时解决问题。
2.2 Percona Monitoring and Management(PMM)Percona Monitoring and Management是Percona公司推出的一个开源数据库监控工具,支持多种数据库,包括MySQL、MariaDB、MongoDB等。
PMM提供了性能监控、查询分析、慢查询日志、实时可视化等功能,可以更好地帮助管理员定位和解决数据库性能问题。
2.3 ZabbixZabbix是一款功能强大的企业级监控工具,支持的监控对象广泛,包括数据库、网络设备、操作系统等。
对于MySQL数据库的监控,Zabbix提供了多种方式,包括被动监控、主动监控等。
通过配置合适的监控项和触发器,管理员可以实时掌握数据库的性能和健康状态。
3. MySQL Enterprise Monitor使用指南3.1 安装和配置下载MySQL Enterprise Monitor并按照官方文档进行安装和配置。
在配置过程中,需要提供MySQL数据库的相关信息,如连接地址、端口号、用户名和密码等。
安装完成后,可以通过访问监控工具的Web界面进行进一步的配置。
实时系统中的实时数据库设计与实时数据管理方法(七)
实时系统中的实时数据库设计与实时数据管理方法引言:实时系统是一种对时间敏感的计算机系统,它要求系统能够实时地响应外部事件,并在规定的时间范围内完成任务。
在实时系统中,实时数据库的设计和数据管理方法是至关重要的。
本文将深入探讨实时系统中的实时数据库设计与实时数据管理方法。
一、实时数据库的设计原则实时数据库的设计需要考虑以下几个原则:1. 高可靠性:实时系统中的数据往往是关键数据,一旦丢失或错误将导致系统故障。
因此,实时数据库的设计必须具备高可靠性,采用冗余机制来保证数据的安全性。
2. 快速响应:实时系统对外部事件的响应时间要求严格,因此实时数据库的设计需要具备快速读写能力。
可以采用索引结构、缓存机制等方式来提高数据库的读写效率。
3. 高并发性:实时系统中需要处理大量的并发请求,因此实时数据库的设计需要具备高并发性。
可以采用分布式数据库、负载均衡等方式来提高数据库的并发处理能力。
4. 数据一致性:实时系统中的数据一致性是非常重要的,任何一次读写操作都必须保持数据的一致性。
可以采用事务管理、锁机制等方式来保证数据的一致性。
二、实时数据库的数据管理方法实时数据库的数据管理方法涉及到数据的存储、查询、更新等方面。
下面将介绍几种常用的实时数据库的数据管理方法:1. 数据存储:在实时系统中,数据的存储方式需要满足快速读写的需求。
可以采用内存数据库、闪存数据库等方式来提高数据的访问速度。
同时,为了保证数据的可靠性,可以采用数据冗余、备份等方式来进行数据存储。
2. 数据查询:实时系统中的数据查询需要快速响应,因此查询的效率是关键。
可以采用索引机制来提高查询的速度,同时可以采用数据划分、分片等方式来降低查询的负载。
3. 数据更新:实时系统中的数据更新需要及时生效,并保证数据的一致性。
可以采用事务管理机制来保证数据的一致性,同时可以采用缓存机制来提高数据更新的效率。
4. 数据同步:实时系统中的分布式环境下,数据同步是一个重要的问题。
内存数据库eXtremeDB介绍
eXtremeDB:多线程、多进程支持
常规内存中创建多线程eXtremeDB 共享内存中创建多进程eXtremeDB
eXtremeDB:各种数据类型支持
整数、实数、字符、字符串 Blob、数组、Vector
Vector:单字段嵌套表
日期、时间、AutoID、Ref
ref相当于常规数据库的外键
结构
eXtremeDB: 为各行各业的实时数据管理而在
全世界数千家用户采用 eXtremeDB管理实时数据
eXtremeDB:微秒级实时数据库
数据库建立在主内存中, 程序可以直接使用,数据 库操作的速度以微秒计 静态内存分配及定制的 API缩短了代码执行路径, 既加快的时间反应性能, 更提高系统强壮性 应用程序直接以库的形 式使用eXtremeDB,剔除 了进程间通信的开销
安全的实时数据管理
eXtremeDB提供API save()/load()数据库影 像 NVRAM中建立内存库 eXtremeLog提供交易一 级的数据安全保障机制 eXtremeDB Fusion:内 存/磁盘混合数据库 eXtremeHA多模式容灾
加载
保存
保存
加载
安全的实时数据管理:NVRAM 支持
驻留交易
一个eXtremeDB节点上驻留 易,其它节点调用驻留交易, 快速访问eXtremeDB
eXtremeSQL Server Engine
一个节点创建SQL Server Engine, 其它节点作为 Client访eXtremeDB
ODBC
通过eXtremeSQL之ODBC接口访 问本地和远程eXtremeDB数据库
uint4 string Table-2 oid S_ID
实时数据库
实时数据库一.实时数据库概述实时数据库可用于工厂过程的自动采集、存储和监视,可在线存储每个工艺过程点的多年数据,可以提供清晰、精确的操作情况画面,用户既可浏览工厂当前的生产情况,也可回顾过去的生产情况,可以说,实时数据库对于流程工厂来说就如同飞机上的“黑匣子”。
实时数据库RTDB(Real-Time Data Base)是数据和事务都有定时特性或显示的定时限制的数据库。
系统的正确性不仅依赖于逻辑结果,而且还依赖于逻辑结果产生的时间。
RTDB的本质特征就是定时限制,定时限制可以归纳为两类:一类是与事务相联的定时限制,典型的就是“截止时间”;另一类为与数据相联的“时间一致性”。
时间一致性则是作为过去的限制的一个时间窗口,它是由于要求数据库中数据的状态与外部环境中对应实体的实际状态要随时一致,以及由事务存取的各数据状态在时间上要一致而引起的。
实时数据库是一个新的数据库研究领域,它在概念、方法和技术上都与传统的数据库有很大的不同,其核心问题是事物处理既要确保数据的一致性,又要保证事物的正确性,而它们都与定时限制相关联。
实时数据库系统中最为典型的问题是利用数据库技术的特点和优点解决实时系统中的数据管理问题,为数据库系统提供时间调度和资源分配的算法,以及实时数据处理的各种方法。
时间特性是实时数据库系统不同于其它关系数据库的特点之一。
数据、事件、活动都有与之相联系的时间限制。
设计实时数据库系统时一定要充分考虑时问特性,考虑外部环境所施加的时间限制、系统性能所决定的时间限制、数据的时间一致性所要求的时间限制以及其它的时间限制。
另外,由于时间限制的存在,实时数据库中的数据还存在除数据逻辑一致性和事务逻辑一致性外的两种一致性约束条件:数据时态一致性、事务时态一致性。
实时数据库系统可以看作是常规数据库管理系统与实时系统的结合体,像DBMS一样,它必须处理事务并保证ACID数据特性。
此外还必须在实时环境下满足事务提交的时间约束。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
收稿日期:2003-10-21;修订日期:2003-12-22 作者简介:刘云生(1940-),男,湖南人,教授,博士生导师,主要研究方向:现代数据库及其集成实现、数据库与信息系统开发及实时应用、软件方法学及支撑环境; 何君辉(1979-),男,湖南人,硕士研究生,主要研究方向:主动、实时、内存数据库.文章编号:1001-9081(2004)04-0023-03一种主动实时数据库的系统内存管理方法刘云生,何君辉(华中科技大学计算机科学与技术学院,湖北武汉430074)(hesion313@ )摘 要:通过对一个主动实时数据库(ARTs 2DB )的研究,借鉴操作系统的内存管理机制,提出了一种具有现代应用特征的数据库系统内存管理模式。
文中从ARTs 2DB 的系统内存管理定义出发,探讨了主动实时数据库系统内存管理的目标及实现策略,并详细介绍了一种实现方法。
关键词:主动数据库;实时数据库;系统内存;内存管理中图分类号:TP311.135.3 文献标识码:ASystem Memory Management of Active R eal 2time DatabaseLI U Y un 2sheng ,HE Jun 2hui(College o f Computer Science and Technology ,Huazhong Univer sity o f Science and Technology ,Wuhan Hubei 430074,China )Abstract :T rough the research of ARTs 2DB and with the mem ory 2managing mechanism of OS ,this paper proposes a DB system 2mem ory 2manager m ode ,which has the features of m odern applications.From the perspective of the definitions of system mem ory management of ARTs 2DB ,this paper discusses the object and realization strategy of ARTs 2DB πs system mem ory management ,and it als o introduces a realization method in detail.K ey w ords :active database ;real 2time database ;system mem ory ;mem ory management1 引言现代(非传统)应用要求数据库具有主动、实时以及高速存取等特性,内存是数据库系统实现这些特性的物理基础。
主动实时数据库系统(ARTs 2DB )是具有实时、主动等现代应用特性的数据库系统,它以内存数据库(Main Mem ory DataBase ,M M DB )作为底层数据支撑,内存成为了数据库的主要存储介质。
此时,外存的I/O 已不再是系统“瓶颈”,CPU 和内存空间的高效使用成为系统的算法设计目标。
因此,改善ARTs 2DB 的性能可以从内存的使用着手。
主要有两条途径:(1)提高内存的性能,如:增大容量、提高存取速度等;(2)对数据库的系统内存进行统一管理。
ARTs 2DB 是操作系统的一个用户进程,数据库系统执行过程中的所有内存分配请求若都直接向操作系统提出,必将增加操作系统的负荷,同时使数据变得分散而难以管理,再大的内存也不能满足实时、主动的要求。
更为严重的是数据字典、内存数据库等的安全性也得不到保障,这必将降低数据库系统的性能。
可见,基于内存来提高数据库系统性能的关键在于对数据库的系统内存进行管理。
2 系统内存管理的定义定义1 数据库的系统内存就是由操作系统分配的,用于存放数据库的系统库、活动日志等系统数据的一大块连续内存。
设数据库系统中有系统数据集合S ={S 1,S 2,…,S m },系统内存分区集合M ={M 1,M 2,…,M n },划分系统内存分区的策略集合P ={P 1,P 2,…,P n },分区内部采用的管理方式集合W ={w 1,w 2,…,w r },把采用策略w t 将系统数据S i 安置于系统内存分区M j 记为(S i ,M j ,w t ),有:定义2 系统内存管理A 就是对系统内存分区,以及S 中的数据在分区M 中的安置,即:A ={P k Y[Y mi =1(S i ,M j ,w t )]|(S i ,M j ,w t )∈(S ×M ×W ),1Φj Φn ,1Φk Φh ,1Φt Φr}按此定义,数据库系统首先应向操作系统申请一块足以容纳所有系统数据的连续内存,然后采用某种策略将其划分成若干大小不等的分区,并采用不同的策略对各分区进行管理。
为了提高管理的灵活性,在系统运行的过程中可根据需要对分区的大小进行调整。
总的目标是“尽量节省空间,充分合理利用内存”。
3 ARTs 2DB 的系统内存组织结构系统库和系统工作数据是数据库系统执行的依据和控制信息,作为最重要的数据我们将其存放在系统内存的低地址区(即系统区),划定其大小以进行保护。
M M DB 是ARTs 2DB 的底层数据支撑,划定其大小并将其安置于系统区之后的区域,称为内存数据库区。
当M M DB 区不足以容纳整个数据库时,启动交换机制将其中可淘汰页面交换到外存。
活动日志是ARTs 2DB 恢复的重要依据,将其存放在内存数据库区之后的区域。
剩余的高地址区用于存放用户工作数据。
因此,按照数据的重要性由高到低,可将系统内存空间分为四个区,按区间首址从低到高依次为系统区(SY S )、内存数据库区(M M DB )、活动日志区(A L )和用户工作区(UW A )。
四第24卷第4期2004年4月计算机应用C om puter ApplicationsVol.24,No.4Apr.,2004个区间的比例可以由系统预定义,也可以根据系统每次启动时的状况设定。
ART s 2D B 系统内存的组织结构如图1所示。
图1SY S 区分配的最小单位为1Byte ,同操作系统的最小分配单位一样,它能够满足各种分配需求。
数据在磁盘上是以块(大小通常在4K B ~56K B 范围内)的形式存放的,装入内存的外存块称之为页,块(页)是内外存交换的单位。
在ARTs 2DB运行的过程中,需进行数据的装入和换出,日志作为历史记录也需要保存到外存当中。
为便于内外存的数据交换,减少外存I/O 操作,把M MDB 区和A L 区的分配单位都定为页。
UW A 区内存的申请是以页为单位,所以也可采用分页的方式进行管理。
M M DB 、A L 和UW A 区的大小若不是页面大小的整数倍,分页后区间会出现大小不足1页的剩余内存区,该区域不可用,从而造成内存的浪费。
因此,在ARTs 2DB 系统内存初始化时,这三个区间都应划分为页面大小的整数倍。
对M M DB 区,交换机制可以解决内存不能容纳整个数据库的情况,而对于A L 区和UW A 区则不存在这样的机制。
为充分利用内存,A L和UW A 两个相邻区间大小应该可以动态调整,如图1所示,即分界线可上下浮动。
这样就避免了出现当前区间没有内存,而其它区间有空闲内存却不能被利用的情况。
需要指出的是,这两个区必须有明确的分界线,不同区间的数据不能交错存放。
4 ARTs 2DB 的系统内存管理方法4.1 动态分区管理对SY S 区采用动态分区管理方式,在系统运行的过程中图3建立分区,并使分区的大小刚好与用户请求的大小相等。
首先必须有一个内存控制结构来登记SY S 各分区的说明信息,其存储空间的动态变化需要其它的内存管理机制来管理。
可依靠操作系统的内存管理来实现,即调用malloc 函数来获得存放控制结构的空间。
采用一个内存控制表MCT 对SY S 区进行管理,表结点记录了对应分区的大小及首址。
是否空闲用区间大小的正负来表示,正值表示空闲,负值表示占用。
0表示该项未使用,其对应的首址为空。
如图2所示,SY S 第2个分区的大小为12字节,前面负号表示已占用。
分配时采用首次适应策略,将首个大小满足条件的空闲区分配给用户,回收时判断回收区与前后空闲区是否相邻,若相邻则合并相邻空闲块。
图2设MCT 表项的大小为S ,为了节省内存,同时减少向操作系统申请内存的次数,MCT 初始为nS 的连续空间,如图2所示,n 为正整数。
在MCT 中插入一表项时,应将插入点之后的所有非空(即大小为0)表项往后移动一项;删除一表项时,则应将删除点之后的所有非空表项往前移动一项。
当要插入一表项而MCT 已满时,则重新申请2nS 的表空间,再插入;当删除表项后,MCT 尾部的非空表项的大小为(3/2)nS ,则将尾部nS 的表空间释放。
另外,还提供重新分配功能,即当用户原来获得的内存不够用时,可重新申请更大的内存。
系统将找到一满足条件的新区域,将原来内存区的内容拷贝到其首部并返回新区域的首址。
4.2 页式管理M M DB 、A L 及UW A 三个区的内存管理都是以页为单位,因此采用页式管理方式。
为了使ARTs 2DB 的系统内存管理具有更好的独立性,这三个区间控制结构的存贮都不直接与OS 打交道,而是存放在SY S 区间,以下介绍其管理方法:1)M M DB 区M M DB 区每次分配一个页面,因此,只需在控制结构中登记页面的空闲情况即可,用0表示空闲,1表示占用,用1位即可存放一页的说明信息。
系统一旦初始化完成,M M DB 区的大小也就确定了,即它的总页面数也是确定的。
因此,我们可以用一固定大小的位域来存放M M DB 区的所有页面的说明信息,并采用位操作进行管理。
位操作的单位为字节,则位域的长度定为8的整数倍。
如果总页面数不为8的整数倍,则位域最后一字节的末尾几位(小于8位)为冗余位,用0补齐。
如图3所示,M M DB 区共有8n -6个页面,用n (n 为正整数)字节长度的位域即可存放区间所有页面的说明信息。
其中,第n -1个字节的后6位为冗余位。
这样,位域的位(非冗余)与M M DB 区的页就形成了一一对应的关系。
通过位域编号、M M DB 区首址和页面大小,可以实现位域中的任一位(非冗余)与其对应页首址的转换。
同时,根据页面首址和页大小,可以计算得到任一页的编号(即位域编号)。
M M DB 区分配采用首次分配策略,即把区间的首个空闲页分配给用户。
M M DB 区的页式管理算法如下:分配算法:M M DBMalloc ()输入:无;输出:首个空闲页的首址;步骤:①取位域的第一个字节到字节缓冲区;②依次扫描字节的所有位,找到首个为0的位,转④;若找不到,转③;③若位域字节已取完,返回NU LL ;否则,取位域的下一字节到字节缓冲区,转②;④根据当前字节编号及该位的字节内编号计算得到该位42 计算机应用2004年的位域编号;⑤根据位域编号、M M DB 区首址和页面大小计算得到该位对应空闲页的首址;⑥将该位置为1,并将缓冲区中字节覆盖位域中相应字节;⑦返回空闲页首址给用户。