DevilKing's blog

冷灯看剑,剑上几分功名?炉香无需计苍生,纵一穿烟逝,万丈云埋,孤阳还照古陵

0%

MemSQL intro

与MySQL相比具有以下优势:

  1. MemSQL是一个分布式可扩展的系统,可以轻松扩展到上千台机器的规模
  2. 没有buffer pool。传统的数据库会使用一个buffer pool, 因为他们不能把所有数据都放到内存中。所有db和表共享一个buffer pool,这样就会导致明显的竞争
  3. Lock-free的数据结构。MemSQL试用了基于内存优化的、lock-free的 skiplist和hash table作为索引。相比b-tree这些数据结构在内存中运行的更快
  4. Code generation. MemSQL把sql编译成native code提供更好的性能

从memsql5开始使用llvm来做code generation

关于code generation的主流部分?

一个MemSQL包含两种组件:

  1. Aggregator nodes负责处理分布式系统中的metadata, query路由,结果整合。依据请求规模,一个集群中可以有一个或者多个aggregators. 其中有一个是master aggregator用来维护metadata,集群监控和failover.
  2. Leaf nodes存储数据和执行sql查询。一个leaf节点是一个memsql server实例,包含多个partition.

aggregator部分,也有master和slave节点的区别,

reference tables的概念,类似spark broadcast部分?

分片的层级部分,partition部分切分,如何进行,如何更好通过使用的方式来优化策略