** 1\. 什么是SAP HANA Delta Merge技术,为什么SAP HANA需要Delta Merge技术? **
目前SAP
系统中的大部分业务表都是以列式存储的方式保存在内存里,列式存储会提供更高的压缩比例,更快的查询与计算,但是它的修改与写入成本很高,并不利于业务的增加,修改等操作。
SAP HANA数据库提供了Delta Merge技术,每个SAP HANA的数据表(列存储),都开辟了2个内存区域(Main Store和Delta
Store)用来存储数据。
Main Store内存区域的数据是有很高压缩比率,有着更快的查询和计算,但是写的成本很高;
Delta Store 内存区域的数据是对数据库的写优化设计的,有着非常快的插入和修改速度,但是压缩率和读取比较慢。
然后存放在Delta 区域中的数据会定期合并到Main内存区域中,这个过程在SAP HANA 环境中称为Delta Merge。
** 2\. SAP HANA Delta Merge的分类 **
** Auto Merge **
是HANA的标准触发Merge方式,HANA中的"Mergedog"系统进程会定期检查列式存储的数据库表的Delta内存区域,如果满足需要Merge的配置条件,会自动触发完成Delta
Merge。
** Smart Merge ** 是SAP
HANA提供的一种可以更直接控制Merge过程的方法。用户能够在系统中灵活定义一些触发条件,一但条件满足就开始执行Merge过程 。例如:Delta
Merge的容量超过100M大小就触发Merge操作。
** Hard Merge ** 是SAP HANA 提供手工SQL语句触发并且不设定任何条件的Merge 方式 ,SQL语法如下:MERGE DELTA
OF "< _table_name_ >"。
** Force Merge ** 和Hard merge类似,它会强制执行手动Merge操作。
** Critical Merge ** 这是SAP HANA为了保持系统稳定性能而设定的Merge 方式,例如Auto
Merge关闭了,也没有Smart Merge满足条件被触发,当Delta Store增长非常大的时候,会触发Critical Merge。
** 3\. SAP HANA Delta Merge的过程 **
上面的图总结了整个Delta Merge的过程:
Before Merge
1)Main 中存放原始数据,Delta 中存放增量数据;
2)所有写操作在 Delta 中进行;
3)读操作可读取 Main 和 Delta 中的数据。
During Merge
1)合并操作从 Main 中数据和 Delta 中已提交的数据进行合并,放入 Main New 中;
2)Delta 中未提交的数据复制到 Delta New 中;
3)所有写操作在 Delta New 中进行;
4)读操作可读取 Main,Delta 和 Delta New 中数据;
5)Delta New 中若有新提交的数据也通过合并操作合并到 Main New 中。
After Merge
1)删除 Main 和 Delta,留下 Main New 和 Delta New;
2)所有写操作在 Delta New 中进行;
3)读操作可读取 Main New 和 Delta New 中的数据;
4)此时的 Main New 和 Delta New 即为下次 Merge 的 Main 和 Delta。
** 4\. SAP HANA Delta Merge的监控 **
通过检索视图M_DELTA_MERGE_STATISTICS,可以查看所有历史Merge操作记录。
作者:贾栋才
审核:贾栋才
编辑:王 锐