memSQL简介

article/2025/9/13 22:30:10

前言

由前Facebook工程师创办的MemSQL,号称世界上最快的分布式关系型数据库,兼容MySQL但快30倍,能实现每秒150万次事务。原理是仅用内存并将SQL预编译为C++。

MemSQL 提供免费的开发者版本(数据限制32G)和全功能试用版本(试用期30天)

MemSQL 架构:

在这里插入图片描述

MemSQL 生态系统:

在这里插入图片描述

入门使用

下载

http://developers.memsql.com/docs/1b/guides/starting.html

  • 点击右上角的下载链接 http://www.memsql.com/#download ,它会要求你提供email等信息,提交后返回一个license key和下载链接,我们下载developer版的即可。

安装

$ tar -xzf memsqlbin_amd64.tar.gz
$ cd memsqlbin

启动

$ ./check_system
$ ./memsqld

注:

  • check_system会告诉系统是否满足需求,比如内核版本,OS版本,64位 等等
  • 启动的时候,要加 -u root,否则会报fatal错误;如果你已经有mysql在运行,那么可能需要更改默认启动端口3306为其他端口,比如 3307
./memsqld -u root --port 3307
  • 如果你的RAM没有8G,启动的时候会有警告,但可以忽略。

测试

$ mysql -u root -h 127.0.0.1 -P 3306 --prompt="memsql> "

注: 这里-h不要使用localhost,用 127.0.0.1
进入命令行后就是标准的mysql客户端了。

memsql> show databases;+--------------------+| Database           |+--------------------+| information_schema || memsql             |+--------------------+2 rows in set (0.00 sec)

建库:

memsql> create database chris001;Query OK, 0 rows affected (0.08 sec)memsql> show databases;          +--------------------+| Database           |+--------------------+| information_schema || memsql             || chris001           |+--------------------+3 rows in set (0.00 sec)

建表:


memsql> use chris001;Database changedmemsql> memsql> create table tab001 (id int primary key, name varchar(100), memo varchar(200),num int);Query OK, 0 rows affected (6.71 sec)memsql> memsql> memsql> show tables;+--------------------+| Tables_in_chris001 |+--------------------+| tab001             |+--------------------+1 row in set (0.00 sec)memsql> desc tab001;+-------+--------------+------+-----+---------+-------+| Field | Type         | Null | Key | Default | Extra |+-------+--------------+------+-----+---------+-------+| id    | int(11)      | NO   | PRI | NULL    |       || name  | varchar(100) | YES  |     | NULL    |       || memo  | varchar(200) | YES  |     | NULL    |       || num   | int(11)      | YES  |     | NULL    |       |+-------+--------------+------+-----+---------+-------+4 rows in set (0.00 sec)

插入数据后查询:

memsql> insert into tab001 values (1,'chris','xxx',100);Query OK, 1 row affected (1.82 sec)memsql> memsql> memsql> select * from tab001;+----+-------+------+------+| id | name  | memo | num  |+----+-------+------+------+|  1 | chris | xxx  |  100 |+----+-------+------+------+1 row in set (0.71 sec)memsql> select * from tab001;+----+-------+------+------+| id | name  | memo | num  |+----+-------+------+------+|  1 | chris | xxx  |  100 |+----+-------+------+------+1 row in set (0.00 sec)memsql> select * from tab001;+----+-------+------+------+| id | name  | memo | num  |+----+-------+------+------+|  1 | chris | xxx  |  100 |+----+-------+------+------+1 row in set (0.00 sec)memsql> select * from tab001;+----+-------+------+------+| id | name  | memo | num  |+----+-------+------+------+|  1 | chris | xxx  |  100 |+----+-------+------+------+1 row in set (0.00 sec)memsql> select count(0) from tab001; +----------+| count(0) |+----------+|        1 |+----------+1 row in set (0.63 sec)memsql> memsql> select count(0) from tab001;+----------+| count(0) |+----------+|        1 |+----------+1 row in set (0.00 sec)memsql> select count(0) from tab001;+----------+| count(0) |+----------+|        1 |+----------+1 row in set (0.00 sec)

查询的时候,服务端会打出日志:

136674795 2012-06-19 10:02:31 INFO: Table chris001.tab001 compiled in 6709 miliseconds (3185 miliseconds for header)

136678436 2012-06-19 10:02:31 INFO: Table chris001.tab001 row size 80 bytes (base overhead 32 bytes, column id 4 bytes, column name 12 bytes, column memo 12 bytes, column num 8 bytes)

186966810 2012-06-19 10:03:21 INFO: Query chris001.‘insert into tab001 values (?,?,?,?)’ compiled in 1825 miliseconds

194366714 2012-06-19 10:03:29 INFO: Query chris001.‘select * from tab001’ compiled in 712 miliseconds

283342115 2012-06-19 10:04:58 INFO: Query chris001.‘select count(0) from tab001’ compiled in 632 miliseconds

从以上测试我们看到,两次查询的首次和之后时间对比:

select * from tab001; (0.71 sec) (0.00 sec)

select count(0) from tab001; (0.63 sec) (0.00 sec)

从日志可以知道,首次查询的耗时基本全都花在编译上了 。

关闭

$ killall memsqld


http://chatgpt.dhexx.cn/article/MFIrHaTM.shtml

相关文章

统一异常处理解决方案

💁 作者:小瓦匠 💖 欢迎关注我的个人公众号:小瓦匠学编程。微信号:xiaowajiangxbc 📢 本中涉及到的所有代码资源,可以在公众号中获取,关注并回复:源码下载 👉…

SpringBoot统一异常处理详解

文章目录 一、概述1、统一异常处理介绍2、原理和目标 二、Assert(断言)1、概述2、Assert自定义实战2.1 自定义接口Assert2.2 自定义异常2.3 Enum整合2.4 实战检测 三、统一异常处理器1、异常处理器说明1.1 handleServletException1.2 handleBindException和handleValidExceptio…

Shell 异常处理

原创:转载请注明出处 #!/bin/bash ##################服务器执行以下脚本############################# ## 重新上传脚本到服务器 -> 部署启动的脚本#当任何一行的命令执行错误的时候(比如命令写错了)直接退出,不继续往下执行…

java中的统一异常处理

目录 统一异常处理的原因 如果进行统一异常处理 1、编写统一异常处理类与方法 2、编写自定义异常类 3、定义异常枚举类 4、抛出指定异常 小提醒 统一异常处理的原因 在我们写代码的时候,因为各种场景需要进行各种校验,我们就可能会进行多种响应&…

JNI异常处理

前言 本文所要介绍的异常处理是指通过JNI调用java层方法时产生的异常处理,并不是指JNI调用Native层函数时产生的异常处理,如果童鞋们想要了解Native层的异常处理可以参考笔者之前的文章《C之异常处理》 按照java的经验,当发生异常而又没有捕…

Python——异常处理

文章目录 异常Python中的异常类捕获与处理异常自定义异常类with语句断言 异常 异常是在程序执行过程中发生的影响程序正常执行的一个事件。异常是Python对象,当Python无法正常处理程序时就会抛出一个异常。一旦Python脚本发生异常,程序需要捕获并处理它…

python异常处理输入不是整数_Python异常处理

异常处理: Python程序运行语法出错会有异常抛出不处理异常会导致程序终止 示例:用户输入一个整数转换成int型,如果用户输入的不是数字而是其他例如字母等则会出现异常 不使用异常处理代码的处理方法 #cat 异常处理.py abc = input("请输入一个数字") if not ab…

ARM的异常处理机制

异常种类 ARM共有如下7种异常模式: 复位(RESET):当处理器复位引脚有效时,系统产生复位异常中断。复位异常中断通常在系统加电和系统复位时发生,直接跳转到复位中断向量处执行称为软复位。未定义的指令(UDE…

spring异常处理

在项目中采用spring的异常处理机制: 示例一、在Controller中加ExceptionHandler注解定义异常拦截的方法,在方法中定义返回的页面: Controller public class ExceptionTestController {ExceptionHandlerpublic String handleException(Excep…

C语言异常处理

文章目录 前言一、 异常表达二、 异常报告三、 异常处理 前言 错误与异常: 错误与异常都是在程序编译或者运行时出现的错误, 不同的是,异常可以被开发人员捕捉和处理;而错误,一般不需要开发人员处理(也无法…

SpringBoot全局异常处理

文章目录 异常处理方案分类基于请求转发基于异常处理器基于过滤器 常见异常处理实现方案1. BasicExceptionController2. ExceptionHandler3. ControllerAdviceExceptionHandler4. SimpleMappingExceptionResolver5. HandlerExceptionResolver6. Filter 全局异常处理实现方案1. …

springboot整合之统一异常处理

特别说明:本次项目整合基于idea进行的,如果使用Eclipse可能操作会略有不同,不过总的来说不影响。 springboot整合之如何选择版本及项目搭建 springboot整合之版本号统一管理 springboot整合mybatis-plusdurid数据库连接池 springboot整合…

C++ 异常处理

目录 一、异常的定义 二、异常的抛出和捕获 1.throw 2.try...catch 3.异常安全 4.异常规范 三、系统预定义异常 四、用户自定义异常 一、异常的定义 异常在C用于错误处理,C语言中一般使用返回值表示错误,C对错误处理进行了扩展,统一使…

关于异常处理的知识整理

目录 1.什么是异常? 2.异常继承结构 3.异常结构继承图 4.关于异常处理的两种方式: 5.异常对象有两个非常重要的方法 1.什么是异常? 程序在执行过程中不正常的情况称为异常,以类和对象的形势存在,可以通过异常类&am…

异常处理---

异常 异常处理 例: public class Demo{public static void main(String[] args) {System.out.println("开始");method();System.out.println("结束");}public static void method(){int[] arr{1,2,3};System.out.println(arr[3]);//数组索引…

异常处理

1.相关概念的介绍 1)异常情形:是指阻止当前方法或作用域继续执行的问题。 2)监控区域:一段可能产生异常的代码,并且后面跟着处理这些异常的代码。 3)try块:如果在方法的内部或者在方法内部调…

异常及异常处理

一、异常的概念 定义: 异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误。 处理态度: 当捕获到异常以后一定要做出处理,哪怕是把这个异常的错误信息打印出来,这是一种良好的编程习惯。 …

异常处理(throw、throws、try-catch)

Java异常处理的五个关键字try、catch、finally、throw、throws 1.抛出异常throw 在编写程序时,我们必须要考虑程序出现问题的情况。比如,在定义方法时,方法需要接收参数。那么,当调用方法使用接收到的参数时,首先需要…

SpringBoot+Axis2搭建WebService服务端

SpringBootAxis2搭建WebService服务端 之前用过Spring Axis2搭建过WebService项目,网上也有很多资料教程,最近需要在一个SpringBoot项目中添加Axis2的服务端,在网上找了很久,没有找到相关教程,最终经过大神朋友的指点…

AXI(2)完结

四、握手 4.1握手过程 所有的五个通道都是通过相同的VALID/READY握手处理来传输地址、数据和控制信息。 双向握手的机制意味着主机和从机之间传输数据时,都可以控制传输的速率,只有当VALID和READY同时为高电平时,传输才会发生。 发送方&a…