设为首页 收藏本站
查看: 1022|回复: 0

[经验分享] 关于ElasticSearch与MySql的数据存储测试!

[复制链接]

尚未签到

发表于 2017-12-13 11:29:15 | 显示全部楼层 |阅读模式
  一直好奇存储大小相同的记录,es和mysql谁占用存储空间更大呢。虽然按道理来看应该是mysql,但一直没有亲自尝试,总还是心里感觉不那么踏实。
  所以今天做一个测试,看看到底实际情况怎么样?
  关于在二者的数据存储,有下面一个大概的说明,可能不够准确,但我只知道这么多:
  1、ES先将数据存到内存,再通过队列的形式写到磁盘;虽然mysql也有内存模式,但是在大多数实际应用中我们仍然使用的传统模式,所以在并发写入方面,es要优于mysql。
  2、ES存储的数据是经过压缩的。在实际测试中笔者发现6千条记录并不比5千条记录所占用的磁盘空间大。
  3、关于mysql,每条索引的长度是和你创建列的时候制定的长度相同的。比如你创建varchar(100),当你在该列上创建索引,那么索引的长度则是102字节,因为长度超过64字节则会额外增加2字节记录索引的长度。
  4、在这个测试中es未做分词,仅用于数据存储。
  测试机硬件配置:
  CPU
  I7 8核心
  内存
  12G
  硬盘
  320G
  网络
  局域网
  ES索引配置:5个主分片,未添加复制分片。Type结构如下:
字段

类型

分词

备注

  id
  string

  createTimeYmd
  date

  创建日期yyyy-mm-dd格式
  createTime
  date

  创建时间yyyy-mm-dd hh:mi:ss格式
  createName
  string

  xmlContent
  string

  申报表xml报文,本次测试中使用的xml报文为30kb的xml结构体。约等于2.8w个字符长度。
  refKey
  string

  业务关联字段(模拟)
  mysql数据表的结构与es中type的结构相同,详细如下:
字段

类型

主键

备注

  id
  long

  自增
  createTimeYmd
  date

  创建日期yyyy-mm-dd格式
  createTime
  date

  创建时间yyyy-mm-dd hh:mi:ss格式
  createName
  varchar(10)

  xmlContent
  text

  申报表xml报文,本次测试中使用的xml报文为30kb的xml结构体。约等于2.8w个字符长度。
  refKey
  varchar(10)

  业务关联字段(模拟)
  以下为es记录数与物理文件列表:
记录条数 单位:行

es数据文件(物理存储空间)

mysql数据文件(物理存储空间)

  5000
  21.8M
  183.51M
  15000
  47.9M
  550.51M
  65000
  257M
  2386M
  18w
  4.02GB
  对比鲜明,不忍继续
  26.8w
  7.85GB
  677621
  27.5GB
  从以上数据指标可以看出,ES在做存储的时候针对数据是做了压缩的。根据其规律可以推测出1000W行这样的记录,其存储空间约为500GB。1亿条记录,其主分片存储空间约为5T。
  在5000至6.5w行数据的写入过程中,es与mysql完成写入的时间都在可接受的范围内,耗时并不长。(ps:mysql使用单线程for循环的方式插入数据;es前6.5w行记录使用单线程循环插入,后面数据过多,使用8个线程,循环插入。)
  由于对比过于鲜明,相同数据量的情况下mysql占用的空间明显比es大很多,在插入6.5W行数据后就没再继续做插入测试。
  在添加数据过程中,笔者尝试边写入边查询。使用refKey做为条件进行随机查询,值得一提的是在6.5万行记录中查询一条记录所耗时间不足3秒;而mysql,在边写入边查询的时候(特别是循环暴力写入),其查询几乎处于停滞状态。
  在添加操作结束后,笔者随机做了一下查询操作,如果使用主键mysql查询能够很快得到结果,如果使用非主键----refKey做查询,mysql要在7,8秒左右才能返回结果,而es查询相同条件的数据,仅需要2秒不足,且es里面的总数据量在60w+,比mysql的数据总量要大很多。
  做此对比的目的不是说es就比mysql好用。二者各有所长,要按使用场景,按需选用。
  以上为es与mysql存储数据的对比结果。测试过程中使数据在附件中列出。如果没有,可能是我忘了, 如果有人需要,可提醒我上传。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-423613-1-1.html 上篇帖子: mysql 大数据量分页优化 下篇帖子: win10下装mysql-5.7.18-winx64
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表