科技情报开发与经济 scI一7rEcHINFORMATl0NDEVELOPMENT&Ec0NOMY2010年第20卷第10期
文章编号:1005—6033(20lO)lO—0104一02 收稿日期:20lO—02—20
ALTIBASE内存数据库性能及可靠性探讨
梁军科,刘宝梅
(山两联通计费结算中心。山两太原,030012)
摘要:内存数据库通过把数据装栽到内存而提高性能,同时保证了数据的可靠性。介
绍了ALllBASE的系统架构,说明了内存数据库区别于传统数据库的不同结构。
关键词:AL,nBAsE:内存数据库;传统数据库;性能;可靠性
中图分类号:’rP311.13 文献标识码:A
随着运营商业务的不断增长.数据处理量大量增加,内存数
据库的应用也逐渐为人们接受。目前已有义章讨论了内存数据
库带来的性能改变,但多是从业务方面进行探讨,没有从原理上
把这个问题说清。而在内存数据库进行重肩性的维护或数据库
异常停机时,业务上通常不能确定内存巾的数据是否会丢失。
ALTlBASE是国内应用较多的一种内存数据库,但它的文档资料
相对较少。本文将以A删BAsE内存数据库为例,从结构上说明
它的运行机制、性能及可靠性等问题。
l ALTIBASE的系统架构
ALTIBAsE是混合数据库,既可以把
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
放在内存巾(称为内
存表),义可以放在传统的磁盘巾(称为磁盘表)。存放内存表的
内存表空间只有一个,而且是系统创建时建立的,不能手1=建
立;而磁盘表空间可以有多个,也可以手工建立。ALrnBAsE的进
程结构为多线程方式.内部分为主线程、服务守护线程、检查点
线程、会话管理线程、垃圾收集线程、日志刷新线程、缓冲刷新线
程、归档线程,其中有几个线程是传统数据库没有的。主线程负
责管理其他线程;垃圾收集线程Gc负责收同1日数据,负责在事
务完成后对已经不用的日志文件、回滚表空间巾的数据、磁盘表
及内存表巾的数据进行删除,保证数据库空间不会无限增长。
AL,rJBAsE服务器的体系结构见图1。
图l A坍IBAsE服务器体系结构
同传统数据库类似,服务器巾有许多重要的文件.如属性文
件、loganchor文件、日志文件、数据文件、归档文件等,此外还有
一些告警文件。属性文件控制程序运行的参数,相当于omcle中
104
的初始化参数文件;loganchor文件存放数据文件、事务信息,相
当于oracle中控制文件的作用,是系统巾的关键文件。也需要镜
像保护;日志文件使朋方式与oracle不同。不是循环使用,不会覆
盖原有日志。而是不断产生新日志,只有在事务完成后才会由
Gc删除。内存表空间对应的数据义件有两份拷贝,一个为
stable,一个为unsIale,两份内容完全相同,在备份巾只需备份一
份。另外,服务器巾还有磁盘表空间对应的数据文件。最重要的
告警文件是altibase-boot.10异,记录了系统运行的信息和一些错
误。但是信息不是很详细。
内存一部分是内存表空间。一部分是磁盘表空间的缓冲.此
外还有日志缓冲、临时内存区等一些内容,详细的内容可以查询
v¥memstat表。当进行数据操作时,就会与数据库的核心引擎交
互。引擎分为存储管事器和查询处理器两部分,存储管理器进行
事务管理、恢复管理、缓冲管理和索引管理.而查询处理则进行
基于代价的优化和执行。执行结果内部采用了较快的IPc的通
信方式,还支持远程TcP,lP通信和unixDomain方式。通过E/
sOL、cu、0DBc、JDBc等驱动与外部程序通信。
2事务处理对性能的影响
事务要保证操作的原子性、一致性,事务间相互隔离。提交
的事务在系统失效后不会丢失。为了保证事务的这些特性,不可
避免地会增加一些保证
措施
《全国民用建筑工程设计技术措施》规划•建筑•景观全国民用建筑工程设计技术措施》规划•建筑•景观软件质量保证措施下载工地伤害及预防措施下载关于贯彻落实的具体措施
,使性能有所下降。系统所做的就是
在可靠和性能之问进行权衡,找到一个平衡点。一般保证事务的
完整采用日志、同滚、检查点等方式.把事务的数据与状态写入
磁盘,每一个系统具体实现又各不相同。
由于日志、回滚都要写磁盘,在内存数据库中会严重影响性
能.所以ALl’jBASE引入了垃圾收集线程GC和多版本并发控制
Mvcc。GC的功能是在事务结束时释放事务占有的资源,如删除
事务结束后在内存和磁盘中不用的数据,删除已完成事务的日
志文件,因此ALnBAsE的内存表空间和数据文件不会无限增
长。
为保证事务的隔离,在DML操作中,事务结束前需要保存
新数据和旧数据,以供不同的会话查询.而在内存表空间中采用
离位(ou卜place)MvCC。update操作时创建一个新记录,由原记录
的一个指针指向新记录。如果再发生更新就再插一条记录,第二
条记录中的指针指向此新记录,这样可能会保存更改过的所有
值,但只有最新值才是有.Hj的。delete操作时.创建一条新的空记
万方数据
粱军科,刘宝梅枷BAsE内存数据库性能及可靠性探讨 本刊E—mail:bjb@sxinf0.net信息工作研究
录,表巾所有删除的记录都指向此空记录。对于存放在磁盘上的
表采.}fI在位(in—place)MVcc。同内存表空间的Ⅸ别只是把中问
的各种版本存放在磁盘上的同滚表空间.表的大小不增长。对于
离位和在位这两种情况,都是由GC来清除中间不用的结果,对
于内存表空间会减少表占用的内存.对于磁盘表空问则同收了
回滚段的空问。清除的空间为插入更新操作重用,内存和同滚表
空问不会无限增长。内存表空间的更新和删除操作都类似于一
个插入操作.每次都是指针的改变,没有对磁盘进行操作。由于
存在数据的多个版本,读操作不需要锁信息就可以进行.这样对
速度有很大的提高,但是比较占用内存的空闯,这部分空间只有
在事务结束后由Gc释放。这种特点带来了以下一些管理上的问
题:
(1)大量的更新操作会引起库大小增加,会产生很多中间结
果,使内存表、回滚表空问增长。
(2)运行时间长的事务会引起数据库大小增加。事务未完成
时,GC不能删除事务产生的中间版本、记录索引,日志文件也不
能删除,因此造成内存使用增加或回滚表空间增大、日志文件占
用增加。
(3)以上两种情况都会造成过量使用从前的数据,使搜索代
价增加,引起性能下降。
(4)并发事务太多会引起数据库大小增加。并发的事务超过
CPu数,GC就不能及时删除事务产生的中间结果,引起内存、同
滚表空间使用的增加、日志文件过多。
为了避免这些情况的发生,要尽量减少事务运行时问,减少
并发事务数。
3保证数据可靠性的刷新机制
系统失效后,内存中的内容就会丢失.所以内存巾的表同样
要定期刷新到磁盘上。为了防止10异常中止而引起贞失败,系
统使用了DoubleWrite缓冲,一个为影子内存,一个为主拷贝。查
询总是对影子内存进行。不成功再对主拷贝操作。更新操作在影
子内存进行,事务完成后才复制到主拷贝上。相应地,磁盘上对
应Dw磁盘区,内容完全相同,备份时只需备份一份即可。如果
发生硬盘物理损坏时,可以通过比较来恢复错误的页,保证数据
的可靠性,提高恢复速度。在数据库停止时,内存表空间的内容
都会写入磁盘,这样再启动时就不用把数据读入内存。
检查点线程使用ping—pong检查点,允许检查点临时不一
致,随后通过重作日志和回滚日志信息使检查点达到一致,这样
减少了等待检查点物理10完成的时间.可减少恢复负载提高事
务性能。
为了在可恢复性和性能之间平衡,ALTlBASE提供了5级的
系统持续性级别。最高的5级把日志记录在进程Ⅸ;同步线程和
事务都会把日志写到日志文件,可以保证任何情况下不丢失数
据,但是性能最差,少有采用;而缺省的3级把操作系统内核区
片j作日志缓冲,即使ALrnBAsE进程失效,操作系统也会把日志
写到日志文件,但是南于经过了操作系统,性能会有所下降,除
系统宕机外,哪怕进程停止这一级别也可以保证数据的可靠性。
4语句优化和执行性能
内存表的优化使用的统计信息与磁盘不同,由于内存表不
需要读硬盘,所以优化的目标主要在减少CPu使用,不再考虑
lO。执行成本主要与表的行数、列基数、值的范围有关,实际执行
时间每次都相差不大。而磁盘表还要考虑磁盘上的块数、缓冲大
小,由于每次数据分布不可能一样,执行时问也相差较大。
执行时内存表以指针访问对象,连接排序的中间结果可以
全部放在内存中,相应算法也有简化;而磁盘表的巾间结果在内
存缓冲中放不下,要放在临时表空间中,进行多次连接,同时需
要进行磁盘地址转换,可能还会有缓冲替换引起磁盘10,这些都
降低了执行速度。
索引也是影响执行的一个因素,由于内存表全部放在内存
中。索引结构与omcle等数据库也不同,索弓f巾不朋存储表中的
数据,只需存储指向数据的指针。这样不但可精简索引的大小,
而且移动指针是很快的操作。内存表的索引创建在临时内存区,
内存库重启时索引才会重建。由于不在数据库文件中存储索引
信息.ALrl’lBASE不需要记录更新的日志,可以提高数据库的性
能。如果有大索引,在启动时重建时间太长,影响启动,可以设置
永久索引,系统在正常关闭时把索引存储在磁盘上。启动时载
人,省略了建索引的过程,加快启动。
5结语
通过以上的介绍可以看fI{。仅仅是把数据完全装载到内存,
就带来了与传统数据库迥然不同的架构变化,说明了内存数据
库在速度上的优势所在。但是也要看到,对AL.rnBASE的误用也
会造成性能的严重下降。只要我们能用好AL,l’lBAsE,就能为业
务提供强大的支持。
(责任编辑:戚米莎)
第一作者简介:梁军科,男,1972年6月生,2000年毕业于
太原理工大学计算机应用专业,工程师,山西联通计费结算中
心.山西省太原市,030012.
ProbeintothePerformanceandReliabiIityofALTIBASEIn—memoryDatabase
LL~NGJun-ke,LIUBao_mei
ABSTRACT:11hepe而珊aJlceofin—memorydatabasecanbeimproVedthmughloadingdataintotheintemalmemory,and
atthesametimethedatareliabilitycanbeensured.ThispaperintmducesthesystemfI.ameworkofAIJTIBASE,explainsthe
structureofin—memorydatab嬲ethatisdifkrentf而mtmdi“onaldatabas.
KEYWORDS:A堋BASE;in—memorydatabase;traditionaldatabase;pe南mance;reliability
105万方数据
ALTIBASE内存数据库性能及可靠性探讨
作者: 梁军科, 刘宝梅
作者单位: 山西联通计费结算中心,山西太原,030012]
刊名: 科技情报开发与经济
英文刊名: SCI-TECH INFORMATION DEVELOPMENT & ECONOMY
年,卷(期): 2010,20(10)
本文链接:http://d.g.wanfangdata.com.cn/Periodical_kjqbkfyjj201010050.aspx