公司简介
400-118-3070
jointstarc@com
![](/dist/images/code.png)
1.多核架构的硬件系统
--------
CPU已经从主频时代进入多核时代,但是这些硬件的升级并不能直接带来速度的飞升,最主要的问题就是传统的架构问题。解决这个问题的核心就是如何突破FSB(Front Side Bus,前端总线)的瓶颈(其带宽的限制),对FSB可以理解成CPU和其他所有I/O的唯一接口。
----
SAP很好地利用了Intel公司的QPI(QuickPath InterConnect,快速通道互连)技术取代FSB,进而构建了多核、大缓存、大并行化处理的硬件架构。另外,还在SAP HANA数据库底层的代码中广泛使用了优化的SIMD(单指令多数据流),以及多线程技术,实现在内存计算中的高并发读写和本地内存访问机制。
----
2.NUMA结构
----
基于“多核共享内存处理器设计架构”的访问称为非一致性内存访问(Non Uniform Memory Access,NUMA)。访问内存的耗时和带宽取决于CPU内核的访问内存的相对位置。有点像学位房一样,你花那么多钱买那么贵的房子图的就是孩子能就近上学一样。那么,你花那么多钱买这个HANA,它就是要帮你的CPU内核主要从本地内存中加载数据,而不是从其他CPU的本地内存来加载数据。简而言之,就是尽量让一个CPU去访问和计算这个CPU所对应的本地内存中的数据,而不是从其他CPU的本地内存中读取数据,这是需要从软件架构层面来实现。
----
在分布式环境下,所有的数据查询请求都被拆分成一个个子任务,然后在所有服务器节点上执行。执行并行任务处理时,为了避免本地CPU内核访问其他CPU内核或其他服务器上的CPU内核的本地内存中的数据,我们需要在将数据加载到内存的时候,做好数据的分区。再加上,InfiniBand适配器、10GB~100GB以太网,或各种专有服务器之间互连的技术。将数百个多内核CPU服务器搭建成一个庞大的NUMA服务器集群,可以做到共享几百个TB的内存。
----
3.列存储数据压缩
----
SAP HANA在业内独创性地采用了行列混合的存储模式。
传统意义上的数据库表是一个二维表,由列和行组成。这种数据表结构,明显可以看出:行存储更擅长数据更新(每次更新一条信息的时候都是插入一行数据),列存储更擅长读取(每一列只要读取不重复数据即可)。
当然,行存储和列存储各有各的作用,在SAP HANA中,行存储也是基于内存存储架构而设计的,这种内存行存储是特别为了高性能的并发写入数据(OLFIT专利,在SAP HANA的SYS这个Schema下面的所有数据库表,都是以行存储方式存在)。
除此之外,在大数据时代,读取的优化明显是重头戏,为了避免因耗时而造成CPU等待信息的延迟,列存储通过将相关的数据存储在临近的内存块中,使内容控制器能够最小化高速缓存缺失的次数,从而提升CPU缓存命中率。加上压缩、数据即索引等技术手段,缩短了数据从内存读入到CPU缓存的周期,就可以让CPU在同一个单位时间内处理更多的数据。
----
电话咨询
企业微信
留言建议
人工客服