数据库在线优化

QKbase Optimizer 利用Oracle最核心基本的复制功能来进行在线优化时的数据同步,因此其安全性和速度完全得以保障。基本上可以将在线优化分成以下四步进行:
1.初始化阶段:

第一阶段,QKbase Optimizer 将根据用户操作建立新表,该新表具有用户所期望的任意合规表结构。(如:简单的在线优化时该表的结构与原表一致,如果要对表做任何的转化如:改变数据类型,调整任何的存储参数,或者要将表转成分区表,移动表空间等,新建的表也会有相应的变化,在此阶段,QKbase Optimizer 也会在原表上建一个事务更新日志,事务更新日志可以利用快照日志,这是 Oracle 最核心可靠的复制组件,其安全性和可靠性得到
Oracle的支持和认可。
2.拷贝阶段:

第二阶段:QKbase Optimizer将把原表中的数据逐步分段拷贝到新建的表中,在拷贝的过程中,如果原表上有任何的 DML 操作,这些操作都会对原表造成修改,同时这些修改也会记录在快照日志中,如图中的78,79,80的改变量。在原表上没有任何的锁不影响原表的使用
3.同步阶段:

在拷贝完成时,事务更新日志中保存了在拷贝过程中原表上所有发生的DML,QKbase Optimizer将不断的把这些改变刷新到新表中以保证数据的一致同步,由于QKbase Optimizer允许将切换阶段调度到任意时刻或者自动检测负载并将切换调度到负载较低时进行,因此直到切换前,QKbase Optimizer 都会每一段时间做一次刷新同步操作以确保新表,原表一致,但是要注意一点,该同步操作时离散的,因此做完一次后,很有可能马上事务更新日志中又有新的改变堆积进来,如图中的改变量为80的修改。
4.切换阶段:

当负载较低或者到了用户指定时间,QKbase Optimizer 将把新表和原表进行切换,由于切换是对数据字典的操作,时间通常是固定的,一般就是几秒钟,QKbase Optimizer 的零切换技术,在切换的过程中,对原表只允许读操作,而这几秒钟内的DML操作将会感到停滞,切换完后,所有的事务都将在优化后的新表上进行。切换后,QKbase Optimizer将自动完成依赖对象重编译等工作,保证数据库前后状态一致。