们知道,Borland一直强调Interbase的一个优点,它就是MGA机制。MGA机制当然也在Firebird上被采用。
  那么,什么是MGA机制呢?
MGA,全称Multi-Generational Architecture,中文名称多代版本机制,是一种并发处理机制。
  在运行基于分布式系统时,常会发生几个客户端同时访问同一数据的情况,称为并发,并发如果处置不当,就会产生数据不一致。早期的数据库,全靠客户程序来处理并发,要手动加锁,手动解锁,现在的这些工作,DBMS已经自动处理了。并发处理,要采用加锁的方法才能避免冲突,加锁分两种,一种是悲观锁,还有一种是乐观锁。所谓悲观锁,是指当被加锁时,其它用户一概不能访问加锁的数据,而乐观锁则可以读取数据。从加锁范围看,加锁还可以分页面锁、行级锁、表锁,当然,以行级锁最优。
  MGA是一种乐观锁,也是一种行级锁。当某个数据被并发访问时,所有用户都可以读数据,也可以写数据!!!此时数据是有版本的,当有客户提交了数据之后,当前数据的版本号就提高了。当提交数据时,MGA会根据数据版本高低(先后),判断客户读取的数据是否被改变,如果已被改变,则拒绝修改,并执行事务回滚。这样,MGA就比普通乐观锁更灵活。
posted on 2011-05-07 09:35  fyen  阅读(812)  评论(0编辑  收藏  举报