SAP HANA数据库

SAP HANA 数据库

一、行列式存储

SAP HANA DB 支持两种存储方式:行存储 以及 列存储。SAP HANA DB 针对列存储进行了优化,这也是默认的存储类型。

在计算机内存中,是按线性序列存储的。如下图所示,行存储是以一行记录为单位进行存储,列存储则是以列为单位。
表基于行和基于列的存储原理
在这里插入图片描述

在 SAP HANA DB中,针对列存储进行了一下的优化:高性能读取操作,同时仍提供良好的写入性能操作。应用高效的数据压缩以节省内存并加快搜索速度和计算。此外,SAP HANA数据库的一些功能,如 分区,仅适用于列表。列存储通常是适用于大批量更新的表。但是,更新和插入性能是在行表上更好。基于行存储通常适用于具有 频繁的单次更新。

行存储 与 列存储 各自的优点 以及应用场景

存储类型优点应用场景
列存储1. 高性能读取操作,同时仍提供良好的写入性能操作 2.应用高效的数据压缩以节省内存并加快搜索速度和计算 3.消除额外索引 4. 消除了物化聚合(有点类似与view)1.通常只计算单列或少量列。2.根据几列的值查询该表。 3.表包含大量列 4.该表有大量的行和列操作的需求(聚合、扫描等)5.大多数列只包含少数不同的值(与行数相比),可以实现高压缩率。
行存储1. 更新和插入性能在行表上更好1.应用程序一次只需要处理一条记录(多次查询/更新单个记录)。 2.应用程序通常需要查询完整记录(select *)。3.压缩率低:列相对于行来说含有更多不同的值。4既不需要聚合,也不需要快速查询。5.该表包含少量行(例如,配置 表)。

二、Temporal Tables

Temporal Tables:提供管理历史数据功能的表。

三、列存储的内存管理

两种存储类型:
存储类型概括
Main Storage在这个区域,主要存储的是主数据,并且进行了有效的数据压缩。可读,但不能进行写入操作
Delta Storage在这个区域,主要存储的是每次写入的数据。可读,并且能进行写入操作,对写优化

在这里插入图片描述

Delta合并操作(The Delta Merge Operation)

写仅在Delta Storage 进行。Delta Merge优化数据并传输到Main Storage(也就是Delta合并到Main)。每个表的主存储必须在内存中重写,然后持久化到磁盘

Delta合并过程:
在这里插入图片描述
1.在合并操作之前,所有写操作都进入Delta1存储,所有读操作都从Main1存储和Delta1存储读取。
2.在合并操作运行时,会发生以下情况:
a.所有的写操作都会进入第二个Delta存储,即Delta2。
b.读取操作从原始Main Storage main 1中读取数据,也从Delta Storage delta 1和delta 2中读取数据。
c.Main1和Delta 1的内容合并到新的主存Main 2中。
3.合并操作完成后,会发生以下事情:
a.删除Main1和Delta1存储。
b.整个主存储器的内容将持久化到磁盘。

四、数据压缩(针对列表)

在SAP HANA DB中,列表有两种压缩方式

压缩方式概述
字典压缩(Dictionary compression)默认的压缩方法适用于所有列。它涉及到将不同的列值映射为连续的数字,这样存储的通常是更小的连续数字,而不是实际存储的值。(Delta Storage 只用了字典压缩 对写优化)
高级压缩(Advanced compression)每一列可以使用不同的压缩方法进一步压缩,即前缀编码、游程编码(run length encoding, RLE)、簇编码、稀疏编码和间接编码。SAP HANA数据库使用压缩算法来确定哪种压缩类型最适合列。(仅应用在Main Storage )

在这里插入图片描述

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值