MongoDb 的 MMAPv1 和 WiredTiger 存储引擎空间对比(800万文档 )

MongoDb 的MMAPv1和WiredTiger存储引擎空间对比(800万文档 )

MongoDB的使用经验

  • 版本:3.0.6
  • 数据量:876万个html片段
  • 选择mongoDB的原因,存储的对象是文档格式。
  • MongoDb 和 MySql 的可比性,相当于Java和JavaScript的可比性

数据插入和更新的效率

  • 最高插入记录一秒钟50个记录,同时更新20个记录,表现稳定

关于翻页的效率

  • MongoDB的翻页效率明显低。使用find(filter).skip().limit()的方式,不使用索引,通过全表扫描的方式进行的,如果记录数量上百万,系统几乎不可用。
  • 翻页采用 ( X > _id ) .limit() 的方式后,使用了_id索引,翻页耗时基本相同。

使用MySql MyISAM引擎, 占用空间:75G

  $ sudo ls -lth /jiubugaosuni/mysql_data/data/sample_doc/
  total 75G
  -rw-rw---- 1 327M doc_content.MYI
  -rw-rw---- 1  74G doc_content.MYD
  -rw-rw---- 1  13M shareholder.ibd
  -rw-rw---- 1  14M person.ibd
  -rw-rw---- 1  12M changerecord.ibd
  -rw-rw---- 1  21M basic.ibd
  -rw-rw---- 1 368K branch.ibd
  -rw-rw---- 1  14K shareholder.frm
  -rw-rw---- 1 8.8K person.frm
  -rw-rw---- 1  21K changerecord.frm
  -rw-rw---- 1 8.8K branch.frm
  -rw-rw---- 1  34K basic.frm
  -rw-rw---- 1 8.5K doc_content.frm
  -rw-rw---- 1 112K doc_details.ibd
  -rw-rw---- 1 8.6K doc_details.frm
  -rw-rw---- 1   61 db.opt

使用MMAPv1存储引擎,占用空间 111G

  $ ls -lth /jiubugaosuni/xiaolongren/mongo3data/
  total 111G
  -rw------- 2.0G document.58
  -rw------- 2.0G document.57
  -rw------- 2.0G document.x
  -rw------- 2.0G document.x
  -rw------- 2.0G document.x
  -rw------- 2.0G document.6
  -rw------- 2.0G document.5
  -rw------- 1.0G document.4
  -rw------- 512M document.3
  -rw------- 256M document.2
  -rw------- 128M document.1
  -rw-------  64M document.0
  -rw-------  16M document.ns
  drwxr-xr-x 4.0K journal
  drwxr-xr-x 4.0K _tmp
  -rw-------  64M local.0
  -rw-------  16M local.ns
  -rwxr-xr-x    5 mongod.lock
  -rw-r--r--   69 storage.bson
  -rw-------  16M test.ns
  -rw-------  64M test.0
  -rw-------  16M mongo_test_db_001.ns
  -rw-------  64M mongo_test_db_001.0
   weibo.com/tianchunfeng 微博交流

使用WiredTiger存储引擎,并启用压缩功能,占用空间30G

  $ ls -lth /jiubugaosuni/xiaolongren/mongo3wiredtigerdata/
  total 30G
  -rw-r--r--  894 WiredTiger.turtle
  -rw-rw-r--  44K WiredTiger.wt
  -rw-rw-r--  36K sizeStorer.wt
  -rw-r--r--  30G collection-0-5129251031362114904.wt
  -rw-r--r--  82M index-1-5129251031362114904.wt
  drwxrwxr-x 4.0K journal
  -rw-rw-r--  32K _mdb_catalog.wt
  -rw-rw-r--  32K collection-0--7409425942265573036.wt
  -rw-rw-r--  32K index-1--7409425942265573036.wt
  -rwxrwxr-x    6 mongod.lock
  -rw-rw-r--   95 storage.bson
  -rw-rw-r--  533 WiredTiger.basecfg
  -rw-rw-r--   46 WiredTiger
  -rw-rw-r--   21 WiredTiger.lock

关于_id 值

  • 在新增文档的时候,如果不指定_id字段的值,mongoDB 会自动生成一个唯一值。在与Mysql结合使用的场景下,可以把对应Mysql主键值当作mongoDB _id 值。

其他

  • 用mongoDB存储文档类或小文件类的数据,且数据带有一部分的元数据;
  • 以主键建立关联,用MySql满足复杂的查询需求,用mongoDB满足多变的schema数据结构需求;
  • MySql是面向字段的,mongoDB 是面向内容的
  • 字段名尽量短一点,mongoDB占用空间比MySql多

参考

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏GopherCoder

专栏:008:MySQLdb及其银行模拟转账

1854
来自专栏LanceToBigData

MySQL(三)之SQL语句分类、基本操作、三大范式

一、SQL语句的分类   DML(Data Manipulation Langauge,数据操纵/管理语言) (insert,delete,update,se...

2835
来自专栏MySQL实战分享

【MySQL经典案例分析】关于数据行溢出由浅至深的探讨

故事的开头我们先来看一个常见的sql报错信息, 相信对于这类报错大家一定遇到过很多次了...

3116
来自专栏Spark学习技巧

实战phoenix

一 安装部署 1, 下载 http://archive.apache.org/dist/phoenix/ 本文下载的是apache-phoenix-4.12....

38710
来自专栏大数据学习笔记

Hadoop基础教程-第11章 Hive:SQL on Hadoop(11.5 HQL:DDL数据定义)(草稿)

第11章 Hive:SQL on Hadoop 11.5 HQL:DDL数据定义 HQL中数据定义部分,也就是DDL,主要包括数据库定义和数据表的定义。 前面创...

2509
来自专栏Jerry的SAP技术分享

使用字面量或者绑定变量在HANA Studio里执行SQL语句

在SAP note 2000002 – FAQ: SAP HANA SQL Optimization里提到了SQL语句的两种执行方式,具体差异体现在where语...

2109
来自专栏王硕

原 为PostgreSQL添加插件

6025
来自专栏battcn

一起来学SpringBoot | 第八篇:通用Mapper与分页插件的集成

在一起来学SpringBoot | 第七篇:整合Mybatis一文中,我们介绍了 Mybatis这款优秀的框架,顺便提及了民间大神开发的两款插件( 通用Mapp...

1322
来自专栏黑泽君的专栏

day28_Struts2综合案例

a、拷贝必要的jar包(图中黄色框框) 和 与数据库操作有关的jar包与配置文件(图中绿色框框)

911
来自专栏信安之路

webgoat-Injection

注入攻击是WEB安全领域中一种最为常见的攻击方式。在“跨站脚本攻击”一章中曾经提到过,XSS本质上也是一种针对HTML的注入攻击。而在“我的安全世界观”一章中,...

850

扫码关注云+社区

领取腾讯云代金券