JDBC连接openGauss6.0和PostgreSQL16.2性能对比

news/2024/9/23 7:33:36

本文分享自华为云社区《JDBC连接openGauss6.0和PostgreSQL16.2性能对比》,作者: Gauss松鼠会小助手。

PostgreSQL vs openGauss

01 前置准备

安装JDK:

详细安装步骤请问度娘,输入能正常返回即已安装

[root@db06 ~]# java -version
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
[root@db06 ~]# javac -version
javac 1.8.0_262

下载PostgreSQL驱动jar包:https://jdbc.postgresql.org/

下载openGuass驱动jar包:https://opengauss.org/zh/download/

02 Hello World

纯java代码,不涉及数据库层,编辑java文件代码,注意文件名需与类名同名

vi HelloWorld.java

public class HelloWorld{public static void main(String[] args){System.out.println("Hello World . . . ");}
}

编译运行:

javac HelloWorld.java
java HelloWorld

cde3e59d885d19f87ef1c5dfd69dfa0d_20240423-5920493a-8b73-4a89-8f8b-b28d64bc132b.png

03 连接数据库(PostgreSQL)

需要用到驱动jar包,测试PG版本是16.2

创建Demo文件,文件名与类名同名

vi DBConnectDemo.java

import java.sql.*;public class DBConnectDemo {public static void main(String[] args){// 相关ip,port,database,user,password需进行替换String url = "jdbc:postgresql://172.16.107.156:54321/testdb";String username = "muser";String password = "Test@123";try {// 加载驱动Class.forName("org.postgresql.Driver");// 打印数据库版本Connection conn = DriverManager.getConnection(url, username, password);Statement stmt = conn.createStatement();ResultSet result = stmt.executeQuery("select version();");while (result.next()){System.out.println("DB version : " + result.getString("version"));}long avgtime = 0;int n = 10;        // 循环次数// 循环打印连接建立时间for(int i=0;i<n;i++){long start = System.nanoTime();Connection connection = DriverManager.getConnection(url, username, password);long end = System.nanoTime() - start;System.out.println("connect success: " + end + " 纳秒");connection.close();avgtime += end;}System.out.println("avg time: " + avgtime/n + " 纳秒");}  catch (Exception e){e.printStackTrace();}}}

编译运行:需要在路径前面加上 .: 来指定路径

javac编译时在同目录下可以不指定驱动jar包

java运行时则需要指定

javac -cp "/tmp/postgresql-42.5.2.jar" DBConnectDemo.java
java -cp "/tmp/postgresql-42.5.2.jar" DBConnectDemo (有问题)
java -cp ".:/tmp/postgresql-42.5.2.jar" DBConnectDemo
java -cp ".:./*" DBConnectDemo

392884d7dcd32added9cc8032688fc57_20240425-c04ac173-ccd2-4bbf-af68-eb7751ab5402.png

04 连接数据库(openGauss)

openGauss出6.0了,下载个极简版来试试

be2aa89349f19d672e59a7b619c95be4_20240424-f4c3e609-b22a-4bc7-a0a7-fd5caf651e1b.png

opengauss连接需要调整驱动和数据库信息

String url = "jdbc:opengauss://172.16.107.156:15400/testdb";Class.forName("org.opengauss.Driver");

完整代码:

vi OGConnectDemo.java

import java.sql.*;public class OGConnectDemo {public static void main(String[] args){// 相关ip,port,database,user,password需进行替换String url = "jdbc:opengauss://172.16.107.156:6543/testdb";String username = "muser";String password = "Test@1234";try {// 加载驱动Class.forName("org.opengauss.Driver");// 打印数据库版本Connection conn = DriverManager.getConnection(url, username, password);Statement stmt = conn.createStatement();ResultSet result = stmt.executeQuery("select version();");while (result.next()){System.out.println("DB version : " + result.getString("version"));}long avgtime = 0;int n = 10;        // 循环次数// 循环打印连接建立时间for(int i=0;i<n;i++){long start = System.nanoTime();Connection connection = DriverManager.getConnection(url, username, password);long end = System.nanoTime() - start;System.out.println("connect success: " + end + " 纳秒");connection.close();avgtime += end;}System.out.println("avg time: " + avgtime/n + " 纳秒");}  catch (Exception e){e.printStackTrace();}}}

编译运行:OG会打印其他日志信息,这里我们把输出结果写到文件里

javac -cp ".:/tmp/opengauss-jdbc-6.0.0-RC1.jar" OGConnectDemo.java
java -cp .:/tmp/opengauss-jdbc-6.0.0-RC1.jar OGConnectDemo > OGConnectDemo.log
cat OGConnectDemo.log

012aef26a3c198bba8d6d221cd684756_20240425-baefea00-2d2e-49a2-b080-0feef391b58c.png

05 PG 🆚 OG 总结

image.png

  • PostgreSQL 16.2 对比 openGauss 6.0 在连接创建上大概有3~4倍左右的性能优势,当然都是在毫秒级别
  • 针对高并发场景建议使用连接池来减少连接的频繁创建和关闭所带来的耗时

 

点击关注,第一时间了解华为云新鲜技术~

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/31275.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

中移铁通禹路由 ExportSettings 敏感信息泄露漏洞

漏洞描述: 该漏洞由于cgi-bin/ExportSettings.sh未对用户进行身份验证,导致攻击者能够未授权获取到路由器设置信息,包含了后台管理员用户的账号和密码 fofa: title="互联世界 物联未来-登录" 鹰图: web.body="互联世界 物联未来-登录" POC: GET /cgi-bi…

用友畅捷通TPlus-keyEdit.aspx接口存在SQL注入漏洞

漏洞描述: 该漏洞是由于畅捷通T的/tplus/UFAQD/keyEdit.asp接口处未对用户的输入进行过滤和校验,未经身份验证的攻击者可以利用SQL注入漏洞获取数据库中的信息 fofa: app="畅捷通-TPlus" POC: GET /tplus/UFAQD/keyEdit.aspx?KeyID=1%27%20and%201=(select%20@@ve…

vue3编译优化之“静态提升”

本文讲了vue3是如何实现编译优化之“静态提升”,静态节点无需每次执行render函数都去生成一次虚拟DOM前言 在上一篇 vue3早已具备抛弃虚拟DOM的能力了文章中讲了对于动态节点,vue做的优化是将这些动态节点收集起来,然后当响应式变量修改后进行靶向更新。那么vue对静态节点有…

toLua中Lua调用C#中的类

toLua中Lua调用C#: [7]Lua脚本调用C#中的class 准备工作:打算在Lua脚本中使用Debug,使用lua调用C#脚本,需要绑定LuaState和自定义添加Debug--- --- Generated by EmmyLua(https://github.com/EmmyLua) --- Created by TonyChang. --- DateTime: 2024/5/14 6:55 --- print(&…

《食品小经营登记证》办理流程

第一步:登录甘肃政务服务网第二步:选择区域第三步:点击“一件事服务”填写“申请者基本信息”选择“经营项目”上传身份证一路涉足、一路留恋、一路回望。依旧前行。

库的移植和使用---例子:JPEG的解码和编码

库的通用移植安装步骤,以及库的使用步骤学习;以JPEG库作为例子进行学习目录开源库移植步骤[1]:下载库的源码包[2]:解压,且阅读“README(自述文件)",了解对应库的使用规则[3]:打开源码中的install.txt的文本,学习库的移植和安装步骤[4]:把下载好的源码包jpegsrc.…

C#.Net筑基-模式匹配汇总

从C#7开始支持的 模式匹配 语法(糖,挺甜),可非常灵活的对数据进行条件匹配和提取,经过多个版本的完善,已经非常强大了。01、模式匹配概述 从C#7开始支持的 模式匹配 语法(糖,挺甜),可非常灵活的对数据进行条件匹配和提取,经过多个版本的完善,已经非常强大了。 C# 支…

全面系统的AI学习路径,帮助普通人也能玩转AI

前言 现如今AI技术和应用的发展可谓是如火如荼,它们在各个领域都展现出了巨大的潜力和影响力。AI的出现对于我们这些普通人而言也是影响匪浅,比如说使用AI工具GPT来写文档查问题、使用AI辅助编程工具帮助我们写代码、并且可是使用AI来实现人工客服等。那么普通人如何学习AI呢…