postgis mysql sqlite mongodb速度对比

前言: 最近做了一下几个数据库之间的速度对比,最后的结果还挺出人意料的,特此记录一下。

本文使用的是同一份数据,分别存储到了postgis、mysql、sqlite和mongodb中,数据共70万左右,数据量并不大,只是为了满足测试。

postgis、mysql、sqlite都是关系型数据库,我们来看下表结构:
在这里插入图片描述
再来看下mongodb中的数据结构:
在这里插入图片描述
本文使用的是SSM(Spring+SpringMVC +MyBatis)架构,因为本人不会在MyBatis中配置mongodb,所以只配置了postgis、mysql、sqlite的环境参数:

<environments default="mysql">
        <!-- 数据库环境 -->
        <environment id="postgis">
            <!-- 使用JDBC使用管理 -->
            <transactionManager type="JDBC"/>
            <!-- 数据源配置 -->
            <dataSource type="POOLED">
                <property name="driver" value="${postgis.driver}"/>
                <property name="url" value="${postgis.url}"/>
                <property name="username" value="${postgis.username}"/>
                <property name="password" value="${postgis.password}"/>
            </dataSource>
        </environment>
        <!-- 数据库环境 -->
        <environment id="mysql">
            <!-- 使用JDBC使用管理 -->
            <transactionManager type="JDBC"/>
            <!-- 数据源配置 -->
            <dataSource type="POOLED">
                <property name="driver" value="${mysql.driver}"/>
                <property name="url" value="${mysql.url}"/>
                <property name="username" value="${mysql.username}"/>
                <property name="password" value="${mysql.password}"/>
            </dataSource>
        </environment>
        <!-- 数据库环境 -->
        <environment id="sqlite">
            <!-- 使用JDBC使用管理 -->
            <transactionManager type="JDBC"/>
            <!-- 数据源配置 -->
            <dataSource type="POOLED">
                <property name="driver" value="${sqlite.driver}"/>
                <property name="url" value="${sqlite.url}"/>
                <property name="username" value=""/>
                <property name="password" value=""/>
            </dataSource>
        </environment>
    </environments>

mongodb的数据库连接是直接从代码中读取配置文件以后进行的:

String resource=this.getClass().getClassLoader().getResource("/").getPath()+"mongodb.properties";
InputStream inStream = new FileInputStream(new File(resource));
Properties properties = new Properties();
properties.load(inStream);
String host=properties.getProperty("host");
String port=properties.getProperty("port");
String database=properties.getProperty("database");
String table=properties.getProperty("table");
MongoClient mongoClient = new MongoClient( host , Integer.parseInt(port) );
MongoDatabase mongoDatabase = mongoClient.getDatabase(database);
MongoCollection<Document> collection = mongoDatabase.getCollection(table);
long startTime = System.currentTimeMillis(); //获取开始时间
MongoCursor<Document> iterator = collection.find().iterator();
long endTime = System.currentTimeMillis(); //获取结束时间
infoLogger.info("从mongodb中读取数据共用时"+(endTime-startTime)+"ms");

然后分别统计查询1、100、1000、10000、100000、700000条数据的时间,如下所示:
在这里插入图片描述

其中mongodb的时间有一些问题,因为我在查询的时候发现最多只能查出来500多条,具体原因未找到,如果有人知道的话,烦请告诉我一下,谢谢。
从上面的表格来看,sqlite是关系型数据库中最快的,紧接着是postgis,出乎我的意料。

总结: 本文对比了几种数据库的查询速度,数据量并不大,只能说明一小部分问题,感兴趣的同学可以进行更深入的测试,不对之处欢迎指正,回见。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AIGIS.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值