写点什么

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

  • 2024-05-14
    广东
  • 本文字数:2345 字

    阅读完需:约 8 分钟

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

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

PostgreSQL vs openGauss

01 前置准备


安装 JDK:


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


[root@db06 ~]# java -versionopenjdk 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 -versionjavac 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.javajava HelloWorld
复制代码


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.javajava -cp "/tmp/postgresql-42.5.2.jar" DBConnectDemo (有问题)java -cp ".:/tmp/postgresql-42.5.2.jar" DBConnectDemojava -cp ".:./*" DBConnectDemo
复制代码


04 连接数据库(openGauss)


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



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.javajava -cp .:/tmp/opengauss-jdbc-6.0.0-RC1.jar OGConnectDemo > OGConnectDemo.logcat OGConnectDemo.log
复制代码


05 PG 🆚 OG 总结



  • PostgreSQL 16.2 对比 openGauss 6.0 在连接创建上大概有 3~4 倍左右的性能优势,当然都是在毫秒级别

  • 针对高并发场景建议使用连接池来减少连接的频繁创建和关闭所带来的耗时


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

发布于: 5 小时前阅读数: 14
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
JDBC连接openGauss6.0和PostgreSQL16.2性能对比_数据库_华为云开发者联盟_InfoQ写作社区