首页 数据库 mysql教程 SAPHANA:列式内存数据库评测

SAPHANA:列式内存数据库评测

Jun 07, 2016 pm 03:28 PM
sap 内存 数据库 评测

我一直怀疑SAP宣称的主存数据库HANA能够实现OLTP。因为内存是会挥发的,一旦断电,便什么都没了。这也许对OLAP来说没什么,毕竟数据可以重新从源系统中抽取,而且OLAP的业务紧迫性似乎也从来没有来得比OLTP重要。所以我也一直相信内存计算只会充单BI 加速器

我一直怀疑SAP宣称的主存数据库HANA能够实现OLTP。因为内存是会“挥发”的,一旦断电,便什么都没了。这也许对OLAP来说没什么,毕竟数据可以重新从源系统中抽取,而且OLAP的业务紧迫性似乎也从来没有来得比OLTP重要。所以我也一直相信内存计算只会充单BI 加速器的功能,因此也就对之“意兴阑珊”了——一个做报表的的系统又能挑起什么样的惊涛骇浪呢?

有段时间我把更多的注意力放在C-STORE上,一种基于网格(多节点,异地部署)的列式数据库方案。在处理扩展性和可用性方面,它通过Projection Overlapping(射影重叠冗余)技术实现K-Saftey(即能容忍K个节点同时挂掉);在处理更新操作方面(列式数据库的难点便是更新),它通过一个巧妙的混合架构合并了一个写优化库(WS)和一个读优化库(RS)。WS通常保持很小的数据量,以便获得更高的更新性能;RS则是专门为查询优化过的数据结构。需要值得注意的是WS 也是列式的,而非行式,这样做的主要目的为了避免写两个不同的查询优化器,同时更加方便的将WS自动的转换城RS(Tuple Mover)。C-STORE是一种应付大数据很好的方案,很明显该方案似乎更适合主存架构,因此后来发展成H-STORE(商用VoltDB)也就顺理成章。所有的这些让我更加坚定主存数据库只有架构在网格上(或者说“云”)才能更好的实现其商业应用价值。

而HANA从一开始让我更相信它会秉承SAP的传统,以INSTALL-BASE的模式交付,然后靠License获得收入。这种on-premises模式相较于on-demand模式让我觉得它老气横秋。就像那种令人讨厌又根深蒂固的老传统那样值得被唾弃。这种主观的偏见也一直蒙蔽了我,让我没有真正花时间去了解它。这次借和SAP合作培训的机会,我深入的了解这个代表SAP未来,也许是整个企业应用行业未来的主存数据库技术——HANA。

我这里不想累述HANA的具体架构,这些信息大家都可以从SAP发布的官方文档上去了解。SAP也在最近正式发布了 HANA的学术报告。了解后会发现跟我上面所述的C-STORE有许多异曲同工之处。我在这里想给大家一个参照,以帮助大家了解主存数据库到底有多快,以及我们以后该如何抉择?

既然要参照,不能只参考SAP给的数据或者SAP BW等应用跑出的结果。HANA被公布成一种崭新的数据库,那么就让我们用数据库的公开基准测试标准TPC-H来测试它,并将结果与传统的行式数据库(ORACLE)进行对比。我这次用到的是TPC-H 2.8的数据结构和22个SQL查询。性能测试主要包含以下4个内容1)数据加载,作为暂时主打数据集市的数据库,数据加载能力是我们关注的重要指标;2)数据压缩,一则经常作为列式数据库的卖点,二则HANA是按内存大小来收费的,可是直接关乎成本的;3)查询性能,内存数据库的主要卖点,是这次基准测试的重头戏;4)增量更新,是数据仓库非常重要的指标,也能从侧面让我们看到HANA的OLTP能力,否则就只能成为Larry所说的“wacko”,而不够“transformative”了。

TPC-H是一个业界公认的数据库性能测试基准,比较公正和中立,它定义了8个标准数据库表:customer, lineitem, nation, orders, partsupp, part, region, supplier,各表之间的关系可见tpc.org官方文档。从tpch.org官网上下载源代码,编译后得到一个数据生成工具(dbgen)和一个查询生成工具(qgen)。TPC-H定义了不同的数据库容量(size),用命令dbgen –s 10就可以生成10GB的数据,其中最大的表Lineitem行数达到59986052行。Qgen可以随机产生相同条件的不同取值的22个SQL查询。

本次测试HANA的运行环境如下:

硬件HP DL980, 内存512G, CPU Xeon X7560 2.27GHZ 32核

操作系统SUSE Linux Enterprise Server 11.1

HANA版本1.00.25.358341

1) 数据加载

用dbgen –s 10命令生成外部的*.tpl文件(CSV格式), 其中lineitem.tpl文件大小为7.3GB。手工创建对应的*.ctl文件,该文件为HANA所特有的导入参数文件,具体格式如下:

INTO TABLE VINCEN.LINEITEM

From lineitem.tbl FIELDS DELIMITED BY ‘|’

ERRO LOG LINEITEM.tbl.txt

将lineitem.tpl和lineitem.ctl文件上传到HANA服务器上(/media/tpc-h/),然后在SAP HANA Studio里面打开一个SQL Editor窗口,输入如下命令:

IMPORT FROM '/media/tpc-h/lineitem.ctl' WITH THREADS 10 BATCH 50000

WITH TABLE LOCK WITHOUT TYPE CHECK;

update VINCENT.LINEITEM MERGE DELTA INDEX;

WITH THREADS 10 BATCH 50000是指以10个线程并行导入,每50000条提交一次。这个是SAP所推荐的基于列式数据库导入的一个组合,我也尝试过其他组合,得到得结果也差不多。需要注意的是HANA最多容许256个并行线程。WITH TABLE LOCK 和WITHOUT TYPE CHECK同样可以起到加快数据加载速度的效果。最后还需要有个MERGE DELTA INDEX的动作,就像C-STORE一样,为了提高更新速度,HANA是先对一个DELTA index进行更新,然后再将之MERGE到主index上。

以同样的方式对其他表进行数据加载操作。

下表是针对lineitem进行加载的时间对比,单位为秒(s)。

HANA

ORACLE

616

680

HANA的时间是import和merge的时间之和。可见在数据加载方面,HANA的性能是不亚于常规ORACLE的。HANA不仅仅是将数据加载到内存中,它还需同时在HDD(硬盘)和SSD(高速闪存)上对数据进行快照存储和日志记录。这方面HANA在保证了数据完整性的同时,也实现了列式数据库更新方面的超越是非常值得肯定的。

在数据加载后设置每个表的主码和创建相关列的索引,用到语句如下:

ALTER TABLE VINCENT.LINEITEM ADD PRIMARY KEY (L_ORDERKEY,L_LINENUMBER);

CREATE INDEX ORDERKEY1 ON VINCENT.LINEITEM (L_ORDERKEY);

CREATE INDEX PARTSUPPKEY1 ON VINCENT.LINEITEM (L_PARTKEY,L_SUPPKEY);

针对表lineitem 59986052条数据集,上述3个语句执行的总时间在300秒左右。

2) 数据压缩

在SAP HANA Studio中选中lineitem表,然后右键->Open Definition->Runtime Information可查看到lineitem的大小。我们将原来CSV格式的外部文件大小除以数据库表的大小的结果作为压缩率,即:压缩率 = CSV文件大小(7.3G)/ 数据表大小。数据表大小又分为不加索引、纯数据的大小以及包含索引的大小。具体结果如下:

项目

HANA

ORACLE

不加索引大小

1.67G

5.14G

不加索引压缩率

4.37

1.42

加索引大小

3.17G

9.84G

加索引后的压缩率

2.3

0.74

由上表可见HANA具有非常出色的数据压缩能力,在不加索引的情况下能将外部的CSV格式的文件压缩4.37倍。可见列式数据库在数据压缩方面的优越性。需要说明的是这次ORACLE的版本是11g R2, 也用到了其最新的行式压缩技术,但跟HANA比起来明显不是一个层次的。

3) 查询性能

用qgen产生22个SQL查询语句并对其做了简单的语法调整,例如调整ADD_MONTHS等时间处理函数,尽量不改变语句原来的结构。将这22个查询复制到SAP HANA Studio的SQL Editor中运行即可获得每个查询语句执行的时间。

测试结果以及和ORACLE对比如下(单位:毫秒ms)

查询

HANA

ORACLE

提高倍数

1

4727

66240

14.01

2

1320

3830

2.9

3

1349

28440

21.08

4

1203

22180

18.44

5

1623

30760

18.95

6

738

16500

22.36

7

1104

25100

22.74

8

1041

20830

20.01

9

12896

60020

4.65

10

2213

26060

11.78

11

805

3700

4.6

12

987

22860

23.16

13

2963

70980

23.96

14

1950

19080

9.78

15

1437

17280

12.03

16

927

6060

6.54

17

860

15400

17.91

18

3177

58000

18.26

19

695

18930

27.24

20

728

20670

28.39

21

16702

47880

2.87

22

1294

6310

4.88

总时间

60739

607110

10

提高倍速 = ORACLE的执行时间 / HANA的执行时间

可以看到HANA每个查询都比传统的行式数据库快很多,22个查询总体时间也正好是ORACLE的十分之一。对于有些查询,速度提升非常明显,例如第19和20个查询。深入调查发现这2个查询都涉及到对最大表lineitem的查询和聚合计算。可见HANA对越大的表查询提升的性能越明显。例外情况是第21个查询,虽然也涉及到了对lineitem的查询,但该语句包含了3次lineitem的自连接(self-join),进一步深入发现凡是对lineitem有join操作的 SQL查询HANA的性能都表现得相对不尽如人意。可见HANA对join处理还需要进一步提高,SYBASE IQ在这方面有许多值得HANA去借鉴的地方。

4) 增量更新

这次增量更新也是更加偏向于性能,而不是我们通常要求的ACID原则。先通过以下语句删除表lineitem中的6000000行记录:

DELETE FROM VINCENT.LINEITEM WHERE L_ORDERKEY BETWEEN 1 AND 6000000;

删除6000000记录耗时29秒。

用dbgen –s 1重新产生第1到6000000行记录的CSV文件,上传到HANA服务器上(/media/tpc-h1/),用以下导入命令完成对数据的加载:

IMPORT FROM '/media/tpc-h1/lineitem.ctl' WITH THREADS 10 BATCH 50000;

update VINCENT.LINEITEM MERGE DELTA INDEX;

跟初始导入所不同的是,这次导入是不会锁表的,并且有主码重复的检查和索引的同步更新消耗。导入时间40秒,融合时间为124秒。可以看出增量更新的速度(36000行每秒)不如初始导入时候的速度(97000行每秒),不过这个速度也是相当不错的。融合(MERGE)过程耗去了大部分的时间。

总结:

这次拿ORACLE和HANA做对比,没有任何贬低ORACLE的意思。ORACLE是传统RDBMS的翘楚,它代表了在这个领域最好的技术;而HANA是主存数据库的代表,是SAP孤注一掷的筹码。这样的对比能让我们更加清楚的看清未来数据库的发展趋势。也许熟悉ORACLE的人会说最新的版本11g支持并行查询,或许能获得和HANA相差不多的查询性能。但我们更应该看到主存数据库强大的潜力。SAP不大可能一蹴而就,但它似乎正在按照自己的步骤一步一步向前。在一次针对销售的培训上,我向一位德国的顾问提问“为什么不把HANA架构在云上?”,他半开玩笑的说:“啊!SAP应该马上把你招进来。实际上我们正在朝这个方向发展,但现在这种情况只是个开始。”

实际上我已经看到了BW on HANA,这也确实向大家证明:至少现在Netweaver平台是可以完全运行在HANA上的。我也知道 HP的硬件目前可支持16个节点8 TB容量的内存。因此我也有理由相信Hasso真能带领着他的200人近卫军改变当前沉闷的氛围和乏味的游戏规则。Business Suite on HANA 将是R4, Business ByDesign on HANA将是R5, HANA on Cloud就是R6, …… 希望SAP的Realtime能一直坚持下去,能给我们足够的惊喜!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

大内存优化,电脑升级16g/32g内存速度没什么变化怎么办? 大内存优化,电脑升级16g/32g内存速度没什么变化怎么办? Jun 18, 2024 pm 06:51 PM

对于机械硬盘、或SATA固态硬盘,软件运行速度的提升会有感觉,如果是NVME硬盘,可能感觉不到。一,注册表导入桌面新建一个文本文档,复制粘贴如下内容,另存为1.reg,然后右键合并,并重启电脑。WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement]"DisablePagingExecutive"=d

消息称三星电子、SK 海力士堆叠式移动内存 2026 年后商业化 消息称三星电子、SK 海力士堆叠式移动内存 2026 年后商业化 Sep 03, 2024 pm 02:15 PM

本站9月3日消息,韩媒etnews当地时间昨日报道称,三星电子和SK海力士的“类HBM式”堆叠结构移动内存产品将在2026年后实现商业化。消息人士表示这两大韩国内存巨头将堆叠式移动内存视为未来重要收入来源,计划将“类HBM内存”扩展到智能手机、平板电脑和笔记本电脑中,为端侧AI提供动力。综合本站此前报道,三星电子的此类产品叫做LPWideI/O内存,SK海力士则将这方面技术称为VFO。两家企业使用了大致相同的技术路线,即将扇出封装和垂直通道结合在一起。三星电子的LPWideI/O内存位宽达512

金邦推出全新 DDR5 8600 内存,提供 CAMM2、LPCAMM2 及常规型号可选 金邦推出全新 DDR5 8600 内存,提供 CAMM2、LPCAMM2 及常规型号可选 Jun 08, 2024 pm 01:35 PM

本站6月7日消息,金邦(GEIL)在2024台北国际电脑展上推出了其最新DDR5解决方案,而且给出了SO-DIMM、CUDIMM、CSODIMM、CAMM2和LPCAMM2等版本可选。▲图源:Wccftech如图所示,金邦展出的CAMM2/LPCAMM2内存采用非常紧凑的设计,最高可提供128GB的容量,速度最高可达8533MT/s,其中部分产品甚至可以在AMDAM5平台上稳定超频至9000MT/s,且无需任何辅助散热。据介绍,金邦2024款PolarisRGBDDR5系列内存最高可提供8400

DDR5 MRDIMM 和 LPDDR6 CAMM 内存规范蓄势待发,JEDEC 公布关键技术细节 DDR5 MRDIMM 和 LPDDR6 CAMM 内存规范蓄势待发,JEDEC 公布关键技术细节 Jul 23, 2024 pm 02:25 PM

本站7月23日消息,微电子标准制定方JEDEC固态技术协会当地时间22日宣布,DDR5MRDIMM和LPDDR6CAMM内存技术规范即将正式推出,并介绍了这两项内存的关键细节。DDR5MRDIMM中的“MR”即MultiplexedRank(多路复用列),这意味着该内存支持两个或以上的Rank(列),并可在单个通道上组合和传输多个数据信号,无需额外的物理连接就能有效提升带宽。JEDEC规划了多代DDR5MRDIMM内存,目标最终将其带宽提升至12.8Gbps,较DDR5RDIMM内存目前的6.4

iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 Jul 18, 2024 am 05:48 AM

苹果公司最新发布的iOS18、iPadOS18以及macOSSequoia系统为Photos应用增添了一项重要功能,旨在帮助用户轻松恢复因各种原因丢失或损坏的照片和视频。这项新功能在Photos应用的"工具"部分引入了一个名为"已恢复"的相册,当用户设备中存在未纳入其照片库的图片或视频时,该相册将自动显示。"已恢复"相册的出现为因数据库损坏、相机应用未正确保存至照片库或第三方应用管理照片库时照片和视频丢失提供了解决方案。用户只需简单几步

雷克沙战神之翼 ARES RGB DDR5 8000 内存图赏:炫彩白翼支持 RGB 雷克沙战神之翼 ARES RGB DDR5 8000 内存图赏:炫彩白翼支持 RGB Jun 25, 2024 pm 01:51 PM

在 7600MT/s、8000MT/s这样的超高频旗舰内存价格普遍较高的情况下,雷克沙出手了,他们推出了名为战神之翼 ARES RGB DDR5 的全新内存系列,拥有 7600 C36 和 8000 C38 两种规格可选,16GB*2 套条的价格分别为 1299 元和 1499 元,性价比非常高。本站拿到了 8000 C38 版本的战神之翼,接下来就给大家带来它的开箱图赏。雷克沙战神之翼 ARES RGB DDR5 内存的包装设计精良,采用醒目的黑红配色搭配彩色印刷。包装左上角设有专属 &quo

江波龙展示 FORESEE LPCAMM2 笔记本内存:最高 64GB、7500MT/s 江波龙展示 FORESEE LPCAMM2 笔记本内存:最高 64GB、7500MT/s Jun 05, 2024 pm 02:22 PM

本站5月16日消息,雷克沙品牌母公司江波龙发布消息,在CFMS2024上展示了内存新形态——FORESEELPCAMM2。FORESEELPCAMM2搭载了LPDDR5/5x颗粒,可兼容315ball和496ball设计,支持7500MT/s及以上的频率,产品容量可提供16GB、32GB、64GB多种选择。在产品工艺方面,FORESEELPCAMM2采用全新的设计架构,将4颗x32LPDDR5/5x内存颗粒直接封装在压缩连接器上,实现了单个内存模块上的128位内存总线,提供比标准内存条更高效的封

如何在PHP中处理数据库连接错误 如何在PHP中处理数据库连接错误 Jun 05, 2024 pm 02:16 PM

PHP中处理数据库连接报错,可以使用以下步骤:使用mysqli_connect_errno()获取错误代码。使用mysqli_connect_error()获取错误消息。通过捕获并记录这些错误信息,可以轻松识别并解决数据库连接问题,确保应用程序的顺畅运行。

See all articles