本周数据库业界探讨最火热的话题就是MemSQL,究竟是不是“旧瓶装新酒”引发了诸多的辩论,同时也引发了究竟是产品技术重要还是DBA重要的疑问。网络中有一些关于MemSQL的介绍,基本上都是来自官方文档。在本文中,数据库行业的著名独立分析师Curt Monash也发表了他对MemSQL的看法。   

MemSQL到底是什么?
内存关系型数据库
QL-92的子集 兼容MySQL(SQL覆盖问题除外)   

MemSQL的性能
读性能比memcached差10%左右
写性能比memcached强20%左右
一台64核、1/2 TB的机器上能跑到120万条插入每秒
同样条件下,20分钟之内能加载5亿条记录   

关于MemSQL的讨论主要集中在性能方面,包括: 数据通过哈希表和跳转表(skip lists)进行组织。MemSQL认为跳转表在多核上的扩展性非常好 查询模式可以编译成C++ MVCC/无读锁 轻量级写锁 可调整持久性,你可以fully durable的跑MemSQL,也可以设一个buffer size来限定可承受的交易数据量
其实将查询进行预编译很难说是一个创新,也不是业内的独一份。此前包括QlikTech、StreamBase以及ParAccel都做过类似的尝试。而MemSQL的特色在于: 编译成只要你想读就可以读的C++ 参数化,如果一个查询中包括一系列的参数,那么它会存储起来以备将来运行更多其它参数 持久性,如果服务器宕机,存储的编译查询不会丢失每个查询只占几KB的空间,在早期MemSQL的客户中,他们最多存储不会超过几千个查询模式。因此MemSQL对于编译这些查询会造成的影响还是表示非常乐观的,而使用LRU算法来释放空间的方式可能不会去考虑。   

MemSQL的持久性使用预写入日志到一个磁盘(传统或固态硬盘),同时发送快照到其他磁盘的方式。持久性的设计是连续的,但是在full-durability场景中是否也是就不清楚了。   

其他一些值得注意的技术细节包括: MemSQL可以运行在多温度环境下,通过DDL手动控制。也就是说,较新的数据会放到MemSQL中,旧数据放入到MySQL中 有一点我认为是最佳实践,MemSQL团队也秉承了这一理念,就是在两个或者多个服务器RAM中得到确认后,要第一时间提交写入 并行Group By,这个MemSQL的团队引以为豪 MemSQL不进行数据压缩,他们认为OLAP负载中才需要数据压缩 MemSQL的插入性能非常高,所以它们的目标客户群是那些存在频繁交易的系统用户

TechTarget中国原创内容,原文链接: http://www.searchdatabase.com.cn/showcontent_62951.htm

内存数据库MemSQL ——基于内存,MVCC+哈希表、跳表的更多相关文章

  1. 聊聊Mysql索引和redis跳表 ---redis的有序集合zset数据结构底层采用了跳表原理 时间复杂度O(logn)(阿里)

    redis使用跳表不用B+数的原因是:redis是内存数据库,而B+树纯粹是为了mysql这种IO数据库准备的.B+树的每个节点的数量都是一个mysql分区页的大小(阿里面试) 还有个几个姊妹篇:介绍 ...

  2. 自己动手实现java数据结构(九) 跳表

    1. 跳表介绍 在之前关于数据结构的博客中已经介绍过两种最基础的数据结构:基于连续内存空间的向量(线性表)和基于链式节点结构的链表. 有序的向量可以通过二分查找以logn对数复杂度完成随机查找,但由于 ...

  3. 跳表(SkipList)原理篇

    1.什么是跳表? 维基百科:跳表是一种数据结构.它使得包含n个元素的有序序列的查找和插入操作的平均时间复杂度都是 O(logn),优于数组的 O(n)复杂度.快速的查询效果是通过维护一个多层次的链表实 ...

  4. 聊聊Mysql索引和redis跳表

    摘要 面试时,交流有关mysql索引问题时,发现有些人能够涛涛不绝的说出B+树和B树,平衡二叉树的区别,却说不出B+树和hash索引的区别.这种一看就知道是死记硬背,没有理解索引的本质.本文旨在剖析这 ...

  5. Redis 学习笔记(篇三):跳表

    跳表 跳表(skiplist)是一种有序的数据结构,是在有序链表的基础上发展起来的. 在 Redis 中跳表是有序集合(sort set)的底层实现之一. 说到 Redis 中的有序集合,是不是和 J ...

  6. Redis中的跳表

    date: 2020-10-15 14:58:00 updated: 2020-10-19 17:58:00 Redis中的跳表 参考网址1 参考网址2 redis 数据类型 zset 实现有序集合, ...

  7. 基于内存的关系数据库memsql初探

    背景 广告系统中,算法模型预估需要根据广告的实时转化统计结果,才能做出更精准的预估:同时,支持多维度聚合查询(例如按照广告各个不同层级维度,按照时间不同粒度的维度),并跨大区合并.一开始的版本是基于m ...

  8. SpringSecurity实战记录(一)开胃菜:基于内存的表单登录小Demo搭建

    Ps:本次搭建基于Maven管理工具的版本,Gradle版本可以通过gradle init --type pom命令在pom.xml路径下转化为Gradle版本(如下图) (1)构建工具IDEA In ...

  9. RDD:基于内存的集群计算容错抽象(转)

    原文:http://shiyanjun.cn/archives/744.html 该论文来自Berkeley实验室,英文标题为:Resilient Distributed Datasets: A Fa ...

随机推荐

  1. Linq XML

    写得比较啰嗦,自己记载备用   1 public class XmlFunction   2     {   3         private static XDocument _doc = new ...

  2. 从零开始 WIN8.1 下Android 开发环境搭建

    一.JDK安装 当前最新版本是JDK8.0 地址http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-21331 ...

  3. Frameset布局

    <FRAMESET> <FRAME> <NOFRAMES> <IFRAME> ■ 框架概念 : 所谓框架便是网页画面分成几个框窗,同时取得多个 URL. ...

  4. Google HTML/CSS/JS代码风格指南

    JS版本参见:http://www.zhangxinxu.com/wordpress/2012/07/google-html-css-javascript-style-guides/ HTML/CSS ...

  5. [转] 《高性能HTML5》读后整理的Web性能优化内容

    读后感 先说说<高性能HTML5>这本书的读后感吧,个人觉得这本书前两章跟书的标题完全搭不上关系,或者说只能算是讲解了“高性能”这三个字,HTML5完全不见踪影.个人觉得作者应该首先把HT ...

  6. 超链接字体颜色设置(通过html/css的设置方法)

    超链接字体颜色设置是通过css来设置,a链接的颜色设置常用的有以下两种,1.超链接a的初始状态颜色,2.超链接字体的鼠标滑过颜色,还有两种病不常用:3.超链接字体的已访问颜色,4.超链接字体在按下鼠标 ...

  7. Python: 设计模式 之 工厂模式例(1)

    #!/usr/bin/env python #coding=utf-8 # # 工厂模式一例 # 版权所有 2014 yao_yu (http://blog.csdn.net/yao_yu_126) ...

  8. Struts2技术内幕-----第七章

    1)基于人机交互的请求--响应模式主要由哪三大要素构成?     ①沟通协议-----人和机器都能够明白的数据通信格式     ②请求内容-----人通过某种机制向机器发起的数据请求     ③响应内 ...

  9. [译]36 Days of Web Testing(二)

    Day 7: Http 和 Https Why? 当在网络上传输一些私人,敏感信息时,应该采用加密的手段来保证这些信息在传输的过程中不被侦测到.Https协议正是这种实现机制. Https是一种广泛使 ...

  10. Hbase 学习笔记(一) Hbase的物理模型 Hbase为每个值维护了一个多级索引,即<key, column family, column name, timestamp>

      比如第一个region 代表 0-100 第二个region 代表 101 -200的 分的越多越不好管理,但同时方便了并行化处理,并发度越高,处理的越快.mapreduce就是按照rowkey的 ...