返回顶部
首页 > 资讯 > 数据库 >Oracle和MySQL的JDBC到底有多慢
  • 387
分享到

Oracle和MySQL的JDBC到底有多慢

2024-04-02 19:04:59 387人浏览 泡泡鱼
摘要

本篇文章为大家展示了oracle和Mysql的JDBC到底有多慢,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。经常听人说,数据库的io性能不佳,但说归说,并没有感性

本篇文章为大家展示了oracleMysql的JDBC到底有多慢,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

经常听人说,数据库io性能不佳,但说归说,并没有感性认识。我们现在就来实际测试一下,常用的Oracle和mysql的JDBC读取性能如何。

之所以测试JDBC,是因为大部分应用是JAVA写的,也就只能用JDBC来访问数据。这里仅测试用JDBC读出数据,并产生成Java的记录对象(毕竟到了这一步才能在应用中使用),不作任何计算。

1. 数据来源

使用TPCH生成的数据,选用其中的customer表来做测试,数据记录为3000万行,8个字段。它生成的原始文本文件名为customer.tbl,文件大小为4.9G。利用数据库提供的数据导入工具将此文件数据导入到Oracle和Mysql的数据表中。

2. 测试环境

在一台Intel服务器上完成测试,2个Intel2670 CPU,主频2.6G,共16核,内存64G。数据库表数据及文本文件均存储在同一块SSD硬盘上。

所有测试均在服务器本机上完成,没有消耗网络传输时间。

3. 数据库读数测试

通过Oracle提供的JDBC接口,用SQL语句执行数据读取。

Java写起来麻烦,用SPL脚本执行测试:

Oracle和MySQL的JDBC到底有多慢

MySQL的测试代码类似,不再赘述。

测试结果(时间单位:秒)

Oracle和MySQL的JDBC到底有多慢

第二次可能由于操作系统有了硬盘缓存,所以更快。因为我们主要是为了测试JDBC的读取时间,所以就以第二次为准,减少数据库本身从硬盘读数的影响。每秒读出行数也是按第二次时间来计算的,也就是说,Oracle每秒能读出10万行多数据,MySQL大概接近8万行。当然这个值和表的字段数及类型都有关(customer表有8个字段),只是一种参考。

4. 文本文件对比

只从上面的数据量还没有太多感性认识,我们再读一下文本文件来对比。办法是一样的,从文件中读出数据,并解析出记录,不作任何计算。

编写如下SPL脚本执行测试:

Oracle和MySQL的JDBC到底有多慢

测试结果是42秒!

这意味着,读取文本要比读取Oracle快281/42=6.69倍,比MySQL要快381/42=9.07倍!

我们知道,文本解析是个非常麻烦的事情,但即使这样,从文本文件读取数据还是远远快于从数据库中读数。Oracle和MySQL的IO实在是太慢了!

5. 二进制方式

我们进一步再看使用二进制方式的存储格式的读取性能,并和文本比对。

为了对比明显,这次换一个更大的表,用TPCH中的orders表,有3亿行数据,9个字段。

文本读取的代码和上面类似,读取时间测试为438秒。

然后,我们将这个文本文件转换成SPL组表,再写代码测试:

Oracle和MySQL的JDBC到底有多慢

测试结果是164秒,大概仅仅是文本读取的三分之一。

这是情理之中的事情,因为二进制数据不再需要解析,可以直接产生对象,计算量少了很多,因而要更快。

需要说明的是,组表文件虽然采用列存格式,但在这里读出了所有列,并没有比文本少取任何内容,没有占列存的便宜。事实上,因为读所有列,使用列存还会吃点亏,如果采用SPL集文件(一种行存格式)还会更快。

6. 并行提速

从文件中取数还很容易实现并行,文本和组表都容易写出并行程序。还是用上面的orders表为例来测试,使用4线程取数。

文本取数代码:

Oracle和MySQL的JDBC到底有多慢

组表取数代码:

Oracle和MySQL的JDBC到底有多慢

用SPL很容易实现数据分段和并行计算。

测试结果为:

文本 119秒

组表 43秒

与串行相比,接近了线性提升,将CPU的多核充分利用起来了。

数据库中的数据则不容易简单地实施分段并行,需要用WHERE条件去拼,结果很难说清到底是并行不力还是WHERE执行损失太多,测试结果的参考意义就打折扣了,这里就不再做了。

7. 结论

数据库(Oracle和MySQL)的JDBC性能非常非常差!比文本文件还要差5倍以上。而采用二进制数据时,会比文本再提高3倍的读取性能。也就是说,合理格式的二进制文件会比数据库有15倍以上的优势。再考虑到并行因素,比数据库快出几十上百倍也是完全可能的。

在关注性能且数据量较大时,千万不要把数据读出数据库计算!

如果实在需要读出后再计算(有时SQL很难写出复杂的过程计算),就不要再用数据库存储了(大数据都是历史,基本也不再改了,可以事先读出),用文本都比数据库强,用二进制当然更好(推荐使用SPL组表,哈哈)。切不要把时间浪费在读数这种非计算任务上了。

上述内容就是Oracle和MySQL的JDBC到底有多慢,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: Oracle和MySQL的JDBC到底有多慢

本文链接: https://lsjlt.com/news/68074.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Oracle和MySQL的JDBC到底有多慢
    本篇文章为大家展示了Oracle和MySQL的JDBC到底有多慢,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。经常听人说,数据库的IO性能不佳,但说归说,并没有感性...
    99+
    2024-04-02
  • 浅谈Redis的keys命令到底有多慢
    keys命令的用法: keys pattern 查找符合正则匹配的key的列表。扫描对象是Redis服务中所有的key,想想都很慢对不对? 同时执行keys命令的同时,Redi...
    99+
    2024-04-02
  • mysql中的int(5)到底有是多长
    目录int(5)到底有是多长先来看一个实际例子总结int(5)到底有是多长 在设计 mysql 表字段时,int(5) 表示是该字段长度为 5 吗? 如果你觉得是,那请你继续往下看,相信你会有新的收获的。 先来看一个...
    99+
    2023-04-12
    mysql中int(5) int(5)有多长 mysql中int(5)有多长
  • MySQL到底能有多少个字段
    今天技术讨论群里 “一切随遇而安”同学看书时出现一个疑问,一个MySQL的表中到底可以有多少个字段?带着这个疑问,我们展开了探讨,也接着讨论了一个单字段长度的问题。 1.  官方文档说明 官方文档的内容如下,主要意思是字段个数限制...
    99+
    2015-06-14
    MySQL到底能有多少个字段
  • MySQL 到底是如何做到多版本并发的
    目录MySQL 多版本并发 一、多版本并发控制1、一致性读2、深入一致性读原理二、Undo Log 的组成MySQL 多版本并发 一、多版本并发控制 我们知道,读未提交会造成脏读、...
    99+
    2024-04-02
  • 你的mysql到底能存多少数据呢?
    前言 参考借鉴文章 我说MySQL每张表最好不超过2000万数据,面试官让我回去等通知? 这里自己在总结一下,原因是相关知识欠缺,看别人的文章研究很久才弄明白,所以这里记录一些心得。 作者:阿杆 ...
    99+
    2023-09-08
    mysql java 数据库
  • 如何判断你的MySQL到底是读多还是写多
    本篇内容主要讲解“如何判断你的MySQL到底是读多还是写多”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何判断你的MySQL到底是读多还是写多”吧!笨方法(不...
    99+
    2024-04-02
  • 阿里云的服务器到底有多少个
    本文将详细探讨阿里云的服务器数量,并分析其对云计算产业的重要意义。 近年来,云计算的发展日益迅猛,而作为国内云计算市场的领军者,阿里云的服务器数量无疑成为了公众关注的焦点。那么,阿里云的服务器到底有多少个呢?这个问题的答案并不简单,因为它涉...
    99+
    2023-11-04
    阿里 有多少个 服务器
  • MySQL慢查询中的commit慢和binlog中慢事务有什么区别
    这篇文章主要介绍了MySQL慢查询中的commit慢和binlog中慢事务有什么区别的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL慢查询中的commit慢和binlog中慢事务有什么区别文章都会有所收...
    99+
    2023-07-02
  • oracle和mysql哪个用的多
    mysql在全球数据库系统中更常用,根据db-engines 2023年6月排名,mysql排名第一,而oracle排名第二。 Oracle 和 MySQL:谁更常用? 答案: 根据 ...
    99+
    2024-04-19
    mysql oracle
  • 多维数据库Oracle Essbase和IBM Cogons的底层原理
    本篇内容主要讲解“多维数据库Oracle Essbase和IBM Cogons的底层原理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“多维数据库Oracle E...
    99+
    2024-04-02
  • 使用Logstash和JDBC将MySQL的数据导入到Elasticsearch(ES)的过程
    使用Logstash和JDBC将MySQL的数据导入到Elasticsearch(ES)的过程包含多个步骤。请注意,首先你需要准备好的JDBC驱动,Logstash实例,Elasticsearch实例...
    99+
    2023-09-11
    mysql elasticsearch jenkins
  • Bash 脚本在大数据处理中的作用到底有多大?
    随着大数据时代的到来,处理海量数据已经成为了许多企业和组织所面临的一个重要问题。而 Bash 脚本作为一种强大的命令行工具,也被越来越多的人用于大数据处理中。本文将介绍 Bash 脚本在大数据处理中的作用,并演示一些常用的 Bash 脚本...
    99+
    2023-08-10
    大数据 bash 关键字
  • Java8中的接口和抽象类到底有什么区别
    本篇内容主要讲解“Java8中的接口和抽象类到底有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java8中的接口和抽象类到底有什么区别”吧!区别1:首先抽象类是一个“类”,而接口只是一...
    99+
    2023-06-16
  • mysql和oracle的区别有哪些
    本篇内容主要讲解“mysql和oracle的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql和oracle的区别有哪些”吧! ...
    99+
    2024-04-02
  • oracle和mysql的区别有哪些
    小编给大家分享一下oracle和mysql的区别有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2024-04-02
  • mysql和oracle的区别有什么
    一、宏观上: Oracle是大型的数据库而Mysql是中小型数据库;Mysql是开源的,Oracle是收费的,且价格昂贵。 Oracle支持大并发,大访问量,是OLTP的最好的工具。 安装占用的内存也是有差别,Mysql安装完成之后占用的内...
    99+
    2023-10-21
    数据库 oracle mysql
  • 又又叕出BUG啦!理智分析Java NIO的ByteBuffer到底有多难用
    目录一、前言二、API三、Netty 的数据容器3.1 工作原理四、内存池化五、字节级操作六、引用与释放一、前言 ByteBuf是Netty当中的最重要的工具类,它与JDK的Byte...
    99+
    2024-04-02
  • 什么是新零售?新零售背面的新技术到底有多强?
     新零售的概念进入商业流通不过几年,而实际上,其背后关于人工智能、大数据、云计算等基础技术,在消费者看不见的生产、物流、供应链等诸多环节,创建零售新场景和新模式,正发生着更加深刻的改变。    了解更...
    99+
    2023-06-05
  • 从mysql到oracle必须了解的事有哪些
    本篇内容主要讲解“从mysql到oracle必须了解的事有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“从mysql到oracle必须了解的事有哪些”吧! ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作