MemSQL初体验 - (1)传说中速度最快的关系数据库软件

来源:互联网 发布:https 443端口 编辑:程序博客网 时间:2024/05/20 22:39

最快的RDBMS数据库是哪个呢,之前人们会在ORACLE/SYBASE/DB2这类大型软件产品中争论不休,而后MSSQL SERVER/MYSQL这类的中小型数据库软件也加入战场,尽管论战热门非凡,但结论一直未定,大家比来比去的结果越来越趋向于各说各话(老实讲你要是问我的看法,Oracle目前正大力推广的Exadata倒是最有实力据此头衔的)。

现如今,这个问题可能有答案了,由前FACEBOOK工程师Eric Frenkiel和 Nikita Shamgunov(前微软 SQL Server 高级工程师)开发的MemSQL,号称是全世界最快的关系型数据库。

做为一个新面孔,MemSQL的实现确实与现有的传统RDBMS很不一样,首先MemSQL"也"是内存数据库,所有数据均放置在内存里,这一点其实并不新颖,TimesTen这类产品就不说了,现如今流行的NoSQL产品哪个不是利用内存的高手,所以你看我用了一个"也"字,说明多年DBA一线从业的历练,如今的我说话做事还是相当严谨。

真正的区别在于,按照MemSQL官方文档中的说法,MemSQL使用一种叫做"code generation"的方法,将SQL语句编译成C++并缓存起来,这样下次执行就很快了,号称执行效率比传统的基于磁盘的关系型软件要快30倍。

除了速度快之外,对于传统的开发人员,尤其是使用MySQL数据库的朋友来说,接下来这个消息就更为喜人了,MemSQL与MySQL数据库之间的兼容性做的非常好。MemSQL官方的技术文档有多处明确表示,使用MemSQL和MySQL没有区别(并非全兼容,是说MemSQL支持的,提供了接口的操作,其操作命令与MySQL数据库中实现相同功能的命令行参数与调用方法完全相同),事实也确实如此,mysql命令行或MySQL客户端工具,以及各种MySQL数据库的管理软件,均可以像操作MySQL那样操作MemSQL,并且在操作过程中,除了感觉响应特别的快之外(第一次操作响应慢,之后极快),也确实分辨不出这到底连接的是MemSQL还是MySQL。

基于MemSQL与MySQL之间高度的兼容,三思这里就不准备在MemSQL的使用技巧上费什么笔墨了,下面主要针对性能做些基础测试。

1、配置MemSQL运行环境

先来看看如何配置一套MemSQL环境。MemSQL目前只支持64位系统,软硬件的需求如下:

                                                                                                                               

Distribution

Minimum Version

Command

Amazon AMI

2012.03

sudo yum install gcc-c++

CentOS

6.0

sudo yum install gcc-c++

Debian

6.0

sudo apt-get install g++

Fedora

15

sudo yum install gcc-c++

OpenSUSE

11.3

sudo zypper install gcc-c++

Red Hat

6.1

sudo yum install gcc-c++

Ubuntu

10.04

sudo apt-get install g++

硬件方面需要cpu为inter i3或更高,内存至少8G。不过官方文档也说了,内存低于8G也能运行,因为MemSQL是内存数据库,其存储能力是依赖于内存的,要是内存小存的东西也就少,内存多存的东西也更多。

我这里的测试环境是个虚拟机,内存只有2G,结果启动memsqld服务时抛出要警告:

    Warning: The recommended configuration for MemSQL is at least 8 GB of RAM

不过就目前版本来看,内存多也多不到哪去,因为当前提供的开发版最大也只能使用10G内存。

MemSQL可以直接到其官网下载:http://memsql.com/

输入名称和邮箱地址,就会生成一个licence key,并显示下载和安装页面。

安装挺简单的,所谓的安装其实就是解压缩二进制包,然后检查下环境就o了,步骤如官网页面所示:

    $ wget http://download.memsql.com/814d3816f4084953833243fbf6c40d37/memsqlbin_amd64.tar.gz

    $ tar xvfz memsqlbin_amd64.tar.gz

    $ cd memsqlbin

    $ ./check_system

    $ ./memsqld --port 3307

这下不仅安装完了,连服务都启动好了。说明一下,这是官方的步骤,如果我指定的话,最后一步会加个&符号,将任务放在后台执行。

注意看这里指定了--port选项值为3307,这是避免与MySQL数据库服务默认的3306端口冲突,memsqld启动时如果不指定--port选项,那么默认服务端口也是3306。

    提示:

    MemSQL也有选项文件,跟MySQL挺像,就位于memsqlbin目录下,名为memsql.cnf。

然后就可以拿标准的mysql命令行工具连接该MemSQL服务:

    $ mysql -u root -h 127.0.0.1 -P 3307 --prompt="MemSQL> " 

    Welcome to the MySQL monitor.  Commands end with ; or \g.

    Your MySQL connection id is 253

    Server version: 5.5.8 MemSQL source distribution

    Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

    This software comes with ABSOLUTELY NO WARRANTY. This is free software,

    and you are welcome to modify and redistribute it under the GPL v2 license

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    MemSQL> show databases;

    +--------------------+

    | Database           |

    +--------------------+

    | information_schema |

    | memsql             |

    +--------------------+

    2 rows in set (0.00 sec)

绳命,处处都充满着井棋,居然连information_schema都有,还真跟MySQL一样。

0 0
原创粉丝点击