SanssouciDB
1、内存计算,每台节点都选择高端机器,典型的配置有2TB内存,64个CPU
主要原因是同等处理能力下,减少集群规模,这样可以减少网络的消耗。
2、SanssouciDB是一个 shared-nothing 和shared-memroy的混合结构,每个实例和每个节点负责固定分区的数据。所以从整个集群来看,整个集群式shared-nothing的结构,从单个节点来看,多个核访问共享的存储。所有节点连接共享存储,可以使NAS,或者SAN,主要是用来存放日志和恢复。
3、并行无所不在:
节点之间分布式查询引擎
节点内部CPU之间并行查询算法
处理器级别使用SIMD(Single Instruction Multiple Data)
4.为提高性能使用FLASH存储,而不是使用硬盘。
5、IMDB解决了传统磁盘数据的读取性能瓶颈。
6、每个节点一个进程,一个进程管理多个线程,每个物理核心一个线程。一个专门的调度器负责给线程分配任务。
7、框架:
最上层提供SQL和存储过程接口,也提供API给程序直接调用。
分布层,负责分布元数据的协调,分布式事务和分布式查询引擎。
Server进程负责元数据的负责和同步。元数据包含存储表和分区的信息。
主数据存放在内存中,主要包括(main store,differential store和索引)
8.列式存储
为了解决列式存储的弊端(更新性能较差),允许经常作为一个组查询的列,存放在一起。叫做混合列。这样就同时具备了较好的读和写的性能。
9.数据是经过字典压缩的
新值加到字典中,可能会导致整个列需要重新压缩,为了解决写性能差的问题。专门使用了叫做 differential store的结构,这里存储还没有被集成到main store的数据。只存储references到字典。Differential store会定期被合并到main store。
10.如果只是少量数据被查询,会使用到反向索引。
11.Insert-only模式,减少锁争用。
12.为了避免数据库毁坏,在非易失性内存中写日志和快照。
13.FLASH卡只能写 1万到十万次,磁盘可以写10^15次。
14. Phase Change Memory (PCM)
15、字节序对齐
16、自动并发,将一个查询分成多个流处理。数据库系统可以处理内联和外联。
实现自动并发依赖两个基础技术,pipeline并发和数据并发。
Pipeline并发效果非常有限,数据并发效果非常好。
17、数据分区的几种方式:
按照数据在表中位置分区
按照表的值分区
哈希的方式分区
罗宾环
18.并行数据处理引擎:
启动时,一个进程绑定一个核,启动时减少消耗。
一个机器上,通过多路内存控制器,减少同一台集群的竞争。
19.充分利用SIMD(Single Instruction Multiple Data ,单指令多数据量)多个部分的执行时间不一致,单个部分执行时间长会拖慢整体速度,因为每部分执行都很快,所以影响不是很明显。
复制多个操作数,并把他们打包在大型寄存器的一组指令集。
以同步方式,在同一时间执行同一条指令。
20.通过压缩缩小数据量,增加查询性能。
通过压缩提升性能,必须压缩所消耗的CPU获得的好处要大于本地内存带宽消耗所有获得的好处。