硕鼠的博客站

范路的博客主站,时而会发些东西。

下周西安进行BDS2006和Interbase2007应用的研讨会

下周要到西安进行Interbase2007的技术研讨会。
不知道国内是否还有Interbase的使用者。Interbase是一种非常棒的数据库产品,速度奇快,在同样的硬件环境下速度比MSSQL快很多。在2007版中增加了很多新的功能,解决了很多Interbase以前的问题。
感觉最棒的两个功能是在线增量备份和批量更新。
在线增量备份,就像名字上写的那样,可以在基本不影响前台工作的前提下比较快速的将数据库进行备份。我作了一个实验,当第一次对一个1.5G的数据库进行online dump(增量备份也叫在线倾倒)的时候用了40分钟(不好意思,机器比较老旧),然后向数据库里面插入了一万条记录,然后再执行相同的命令,两分钟完成。在Dump的同时进行的数据库操作会比平时慢一些,但是还是可以接受的。当数据库发生问题的时候,可以直接将Dump的文件作为Interbase数据库进行加载,基本上可以做到无缝实时恢复。有了这个技术基本上可以保证我们的程序每30分钟到60分钟进行一次增量备份。
增量备份的实现方法对于Delphi程序员来说主要有两种:
1、命令行:
gbak -d dbtest.gdb dbtest.dmp -user sysdba -pass masterkey
第一次执行这个命令的时候会进行一次完整的备份。以后每次执行就进行增量备份。
如果键入
gbak -d dbtest.gdb dbtest.dmp -user sysdba -pass masterkey -ov
则进行一次强制的完整备份。
2、通过IBX组件实现同样的功能:
Interbase2007提供了新的IBX组件,其中IBDatabase支持增量备份。
首先在IBDatabase1中设置好数据库连接,然后执行下面的这个语句完整增量备份动作(建议在后台线程里面执行):
IBDatabase1.OnlineDump([‘dbtest.dmp’], [], false, false);
这个函数一共有四个参数,第一个是dump文件数组,可以有多个dump文件;第二个是文件容量数组,如果有多个dump文件,你就必须告诉Interbase每个文件的容量是多大,当前面的文件满了,才开始写后面的文件,最后一个文件的容量一般不写;第三个参数是确定是进行增量备份还是全备份,如果是true的话就是全备份,所以我们使用false进行增量备份;第四个参数是是否overwrite整个dump文件,如果是true的话,就相当于在命令行的时候加了’-ov’这个参数。
批量更新准许我们把一批SQL语句(insert、update、delete)一起提交到数据库服务器中去,统一执行。我试过了,插入一千条记录所用时间基本上是逐条插入的三分之一。
应用方法:
使用IBScript组件,
IBScript1.Script.Clear;
IBScript1.Script.Add(‘Batch Start;’);
IBScript1.Script.Add(‘Insert …….;’);
IBScript1.script.Add(‘Batch Execute;’);
IBScript1.ExecuteScript;
注意事项:开始的第一句是Batch Start ,最后一句是Batch Execute ,每句都以分号结尾, 里面的语句不要太多,我试过2000条没什么问题,但是我的字段比较少,所以建议大家控制在500~1000条之间。
 
先写这些,其它的新功能我正在研究,等登过一段时间在和大家分享。

 

Both comments and pings are currently closed.

Comments are closed.

Close Bitnami banner
Bitnami