最近公司准备把内存数据库和数据库换成国产的数蚕数据库。老大让我来测试一下性能。周末正好加个小班小试了一下。

环境准备:

官方提供的包括的linux和windows平台专业版各一套。我这里测试是windows平台使用Windows 10系统。

开发机器:CPU i7 8700, 内存 16G, 256G固态盘。

数据准备:

使用100000,1000000条包含整数类型,浮点类型,日期类型,字符串类型的数据,其中name,date,value含有重复值。构造的数据表为id,name,date,value的字段表。


内存数据库

测试内容包含:插入查询

插入分别使用insert, sql文件和import功能。

这个数据库的sql和标准有一些不太一致的地方,还好在线文档写得很清晰,过了一遍就大概齐了解区别了。

运行sct_local_mem.exe,或者运行sct_s_mem.exe再运行sct_c_mem.exe连接服务端。

以下测试在sct_local_mem.exe上,经测试通过网络速度对这部分插入测试几乎没有影响。

首先构造数据表

create table test(id u32(false), name string(true), date date(true), value float(true));

insert使用数据库序列函数seq可以直接生成序列。

insert into test (id, name, date, value) select seq(100000), constants("张三",100000), constants (date(),100000), seq(100000)+1.0;

执行时间:

execute time: 743390 us                134518条每秒

使用

select "insert into test (id,name,date,value) values(" + x2str(id) + ",\"" + name + "\",\"" + x2str(date) + "\"," + x2str(value) + ");" as sql from test export as csv path="test.sql";

生成sql文件。去除第一行

Sql文件内容为100000行

insert into test(id, name, date, value) values(0,"张三","2020-11-12",1.000000);insert into test(id, name, date, value) values(1,"张三","2020-11-12",2.000000);insert into test(id, name, date, value) values(2,"张三","2020-11-12",3.000000);insert into test(id, name, date, value) values(3,"张三","2020-11-12",4.000000);
…

使用exec 执行sql文件

exec "test.sql"

执行时间:

execute time: 12597752 us           7938条每秒

使用import加载csv时间

select * from test export as csv path="test.csv";import test from csv path="test.csv";

执行时间:

execute time: 875321 us            114285条每秒

对应百万结果:

insert select 时间: execute time: 7906557 us            126422 条每秒

exec 时间: execute time: 125150944 us                7990条每秒

import time: execute time: 9379922 us                 106610 条每秒

大体上可以看出时间上是亚线性关系稳定的增加。

查询测试(仅在1000000数据下):

select id,date from test where first 100;

execute time: 447 us

select id,date from test where first 10000;

execute time: 7067 us

select id,date from test where id==10000;

execute time: 345 us

查询速度可以媲美nosql数据库


硬盘数据库

构造表

create table test(id u32(false), name string16(true), date date(true), value float(true));

insert插入数据

insert into test (id, name, date, value) select seq(100000), constants(“张三”,100000), constants (date(),100000), seq(100000)+1.0;

执行时间:

execute time: 247098217 us                 平均404条每秒

exec sql执行时间:

exec "test.sql";

execute time: 274124784 us                 平均364条每秒

数据无import命令使用load命令替代

load test from csv path="test.csv";

load执行时间:

execute time: 2055357 us                   平均48543 条每秒

百万insert和exec时间比较长就没有测试,只测试load

load执行时间:

execute time: 18544048 us                  平均54054条每秒

查询测试(仅在1000000数据下):

select id,date from test where first 100;

execute time: 1256 us

select id,date from test where first 10000;

execute time: 59253 us

select id,date from test where id==10000;

execute time: 465 us


结论

整体看对比内存数据库硬盘直接insert语句插入速度慢了20倍左右。

load/import导入数据比内存数据库只慢了一倍左右。

查询速度少量查询慢了约一倍,查询越多速度慢的越多。

内存数据库速度上优势很明显,数据库产品整体上性能比较稳定,查询性能非常出色。适合多读少写的业务场景。

更新一下:

后来技术服务人员告诉我们说插入是默认不启用写缓存的,启用写缓存后我又测试了一下插入速度,大约提升了四倍左右性能,2000条左右每秒,和其它数据库性能差不多。

百万级海量数据内存数据库和数据库的性能对比相关推荐

  1. OPPO百万级高并发MongoDB集群性能数十倍提升优化实践

    点击蓝色"架构文摘"关注我哟 加个"星标",每天上午 09:25,干货推送! 1. 背景 线上某集群峰值TPS超过100万/秒左右(主要为写流量,读流量很低), ...

  2. 百万excel导入mysql_百万级xlsx表格导入数据库的实现方案

    需求是这样的,供应商给到一份 xlsx 表格(144MB),里面刚好有 100w 行数据(11列).我需要把它们稍作处理后写入到 mysql 数据库 项目基于 Laravel,既然需要稍作处理,那我首 ...

  3. mongodb每秒写入量_OPPO百万级高并发MongoDB集群性能数十倍提升优化实践

    本文是"我和MongoDB的故事"MongoDB征文比赛的一等奖文章,杨亚洲也到2019年MongoDB中文社区年终盛会进行了现场分享.接下来我们一起来欣赏下完整版内容. 1 背景 ...

  4. php beego,MixPHP 2.2 / Beego 1.12 数据库查询性能对比

    质疑的点 本次主要质疑的是:测试没有数据库查询:大家觉得加上 db 查询会很不一样,但是我认为基准测试 hello world 代表天花板,还是有一些意义的,db 查询性能方便我猜测 mix 与 be ...

  5. 一台mysql并发能力_mysql怎么支撑百万级并发-对于同一个表,MySQL支持多少个并发操作...

    到服务器的SQL最大并发连接数为16384.mysql百万级数据查询. 受服务器配置和网络环境的限制,实际服务器支持的并发连接数量会更小. MySQL流量大,并发问题高 因为mysql是一个线程的连接 ...

  6. 百万级数据量,千万级数据量是多少,海量数据的优化方案

    百万级数据量,千万级数据量是多少? 这里的百万级,千万级,针对数据库,指的是表的数据条数.有时也指并发事务量. 海量数据的优化方案 Note:    具体优化要结合自身的业务特性 百万级: 这个数据量 ...

  7. 千万级并发架构下如何提高数据库存储性能

    如图所示,表示发起一个请求时,涉及到数据库的相关操作,在前面的文章中我们说过,如果服务端要提升整体的吞吐量,就必须要减少每一次请求的处理时长,那么在当前这个场景中,数据库层面哪些因素会影响到性能呢? ...

  8. mysql 百万级数据库优化方案【转】

    一.百万级数据库优化方案 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断 ...

  9. 总结:如何使用redis缓存加索引处理数据库百万级并发

    前言:事先说明:在实际应用中这种做法设计需要各位读者自己设计,本文只提供一种思想.准备工作:安装后本地数redis服务器,使用mysql数据库,事先插入1000万条数据,可以参考我之前的文章插入数据, ...

最新文章

  1. 计算机无法搜索本地文件,电脑本地磁盘无法搜索文件。怎么处理?
  2. opengl微发展理解
  3. 信息学奥赛一本通(1220:单词接龙)
  4. Android笔记 simpleAdapter demo
  5. java hibernate 多对多_hibernate 多对多映射配置详解
  6. Delphi实现带有格式的Excel导出功能
  7. elementui的表格在使用v-if之后列的顺序错乱问题
  8. 【Java爬虫】接口模拟微信公众号登录,搜索公众号,获取公众号文章,java实现
  9. Chrome扩展之书签
  10. 吴恩达深度学习环境配置
  11. minecraft服务器stats文件夹,《我的世界》文件夹目录作用讲述
  12. wps/excel 正则表达式 提取数字
  13. 年薪50万的Python工程师曝光公司面试题
  14. JAVA打印简易版日历
  15. 如何开始用Python编程
  16. 学WEB前端开发,自学还是培训靠谱
  17. 标准化和归一化,请勿混为一谈,透彻理解数据变换
  18. 生成化学表达式下标、上标数字
  19. centos7防火墙端口设置
  20. 微信小程序 - (广告、优惠券)弹出与关闭

热门文章

  1. 【分享】集简云小程序识别身份证同步到表单流程搭建示例
  2. 时钟门控技术-clock gating
  3. 【DL】第8章 序列到序列的映射
  4. 腾讯推出全新 Linux QQ 并正式上线官网
  5. 数据科学的统计学知识笔记
  6. 2022FW柯罗芭KLOVA 用极简主义演绎服装美学
  7. S7-1200 PLC高速计数器
  8. 关于菲律宾工作的一些事情.
  9. powermill四轴联动圆雕木雕编程加工视频教程
  10. ZOJ 2547 Tri Tiling 脑筋急转弯