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

devtools/2024/11/15 17:29:20/

JDBC在Linux终端直接编译运行JAVA程序连接PG🆚OG数据库

看腻了就来听听视频演示吧:https://www.bilibili.com/video/BV1CH4y1N7xL/

前置准备

安装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/

Hello World

纯java代码,不涉及数据库

编辑java文件代码,注意文件名需与类名同名

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

编译运行:

javac HelloWorld.java
java HelloWorld

image.png

连接数据库(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

image.png

openGauss_97">连接数据库(openGauss)

openGauss出6.0了,下载个极简版来试试
image.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

image.png

PG 🆚 OG 总结

数据库版本连接调用次数平均响应时间
PostgreSQL16.210025ms
openGauss6.010095ms
  • PostgreSQL 16.2 对比 openGauss 6.0 在连接创建上大概有3~4倍左右的性能优势,当然都是在毫秒级别
  • 针对高并发场景建议使用连接池来减少连接的频繁创建和关闭所带来的耗时

http://www.ppmy.cn/devtools/26138.html

相关文章

基于PCIE4C的数据传输(三)——使用遗留中断与MSI中断

本文继续基于PCIE4C IP核实现主机&#xff08;RHEL 8.9&#xff09;与FPGA&#xff08;Xilinx UltrascaleHBM VCU128开发板&#xff09;间DMA数据传输时的中断控制。本文分为三个部分&#xff1a;FPGA设计、驱动程序设计、上板测试。 FPGA设计 基于PCIE4C的数据传输&#xff0…

ollama-python-Python快速部署Llama 3等大型语言模型最简单方法

ollama介绍 在本地启动并运行大型语言模型。运行Llama 3、Phi 3、Mistral、Gemma和其他型号。 Llama 3 Meta Llama 3 是 Meta Inc. 开发的一系列最先进的模型&#xff0c;提供8B和70B参数大小&#xff08;预训练或指令调整&#xff09;。 Llama 3 指令调整模型针对对话/聊天用…

java一个接口完成三种文件类型上传(exe,文档,图片)

try {// 获取文件后缀名String originalFilename file.getOriginalFilename();String fileExtension originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();// 判断文件类型并设置对应的字段和保存路径String filePath;String fieldType;…

VMware虚拟机安装Linux(CentOS)【超详细】

参考大佬文章&#xff1a;VMware虚拟机安装Linux教程(超详细)_vmware安装linux虚拟机-CSDN博客 目录 一、获取映射文件 二、新建虚拟机 三、安装操作系统 四、切换系统用户 一、获取映射文件 参考大佬文章获取映射文件&#xff0c;以及对应修改后缀名的方法 二、新建虚拟…

Hotcoin 投融资周报|4.20–4.26共38笔公开投融资事件,基础设施领跑,游戏、DeFi相关融资活跃

​​4月20日至4月26日期间&#xff0c;加密市场共发生38笔投融资事件&#xff0c;其中基础设施10笔、游戏 10 笔、DeFi 6笔、AI3笔、Depin 2 笔、NFT相关2笔、SocialFi 1笔、 其他 4 笔。 本周千万美金以上融资有5笔&#xff1a; 模块化 Move 区块链框架Movement完成了一轮38…

ChatGPT向付费用户推“记忆”功能,可记住用户喜好 | 最新快讯

4月30日消息&#xff0c;人工智能巨头OpenAI宣布&#xff0c;其开发的聊天机器人ChatGPT将在除欧洲和韩国以外的市场全面上线“记忆”功能。这使得聊天机器人能够“记住”ChatGPT Plus付费订阅用户的详细信息&#xff0c;从而提供更个性化的服务。 OpenAI早在今年2月就已经宣布…

JENKINS 安装,学习运维从这里开始

Download and deployJenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their softwarehttps://www.jenkins.io/download/首先点击上面。下载Jenkins 为了学习&#xff0c;从windows开始&#x…

【JAVA】part5-Java集合

Java 集合 Java集合概述 Java数组的局限性 数组初始化后大小不可变&#xff1b;数组只能按索引顺序存取。 Java的java.util包主要提供了以下三种类型的集合&#xff1a; List&#xff1a;一种有序列表的集合&#xff0c;例如&#xff0c;按索引排列的Student的List&#xff1b…