当前位置:   article > 正文

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

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

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

PostgreSQL vs openGauss

01 前置准备

安装JDK

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

  1. [root@db06 ~]# java -version
  2. openjdk version "1.8.0_262"
  3. OpenJDK Runtime Environment (build 1.8.0_262-b10)
  4. OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
  5. [root@db06 ~]# javac -version
  6. 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

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

编译运行:

  1. javac HelloWorld.java
  2. java HelloWorld

03 连接数据库(PostgreSQL)

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

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

vi DBConnectDemo.java

  1. import java.sql.*;
  2. public class DBConnectDemo {
  3. public static void main(String[] args){
  4. // 相关ip,port,database,user,password需进行替换
  5. String url = "jdbc:postgresql://172.16.107.156:54321/testdb";
  6. String username = "muser";
  7. String password = "Test@123";
  8. try {
  9. // 加载驱动
  10. Class.forName("org.postgresql.Driver");
  11. // 打印数据库版本
  12. Connection conn = DriverManager.getConnection(url, username, password);
  13. Statement stmt = conn.createStatement();
  14. ResultSet result = stmt.executeQuery("select version();");
  15. while (result.next()){
  16. System.out.println("DB version : " + result.getString("version"));
  17. }
  18. long avgtime = 0;
  19. int n = 10; // 循环次数
  20. // 循环打印连接建立时间
  21. for(int i=0;i<n;i++){
  22. long start = System.nanoTime();
  23. Connection connection = DriverManager.getConnection(url, username, password);
  24. long end = System.nanoTime() - start;
  25. System.out.println("connect success: " + end + " 纳秒");
  26. connection.close();
  27. avgtime += end;
  28. }
  29. System.out.println("avg time: " + avgtime/n + " 纳秒");
  30. } catch (Exception e){
  31. e.printStackTrace();
  32. }
  33. }
  34. }

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

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

java运行时则需要指定

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

04 连接数据库(openGauss)

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

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

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

完整代码:

vi OGConnectDemo.java

  1. import java.sql.*;
  2. public class OGConnectDemo {
  3. public static void main(String[] args){
  4. // 相关ip,port,database,user,password需进行替换
  5. String url = "jdbc:opengauss://172.16.107.156:6543/testdb";
  6. String username = "muser";
  7. String password = "Test@1234";
  8. try {
  9. // 加载驱动
  10. Class.forName("org.opengauss.Driver");
  11. // 打印数据库版本
  12. Connection conn = DriverManager.getConnection(url, username, password);
  13. Statement stmt = conn.createStatement();
  14. ResultSet result = stmt.executeQuery("select version();");
  15. while (result.next()){
  16. System.out.println("DB version : " + result.getString("version"));
  17. }
  18. long avgtime = 0;
  19. int n = 10; // 循环次数
  20. // 循环打印连接建立时间
  21. for(int i=0;i<n;i++){
  22. long start = System.nanoTime();
  23. Connection connection = DriverManager.getConnection(url, username, password);
  24. long end = System.nanoTime() - start;
  25. System.out.println("connect success: " + end + " 纳秒");
  26. connection.close();
  27. avgtime += end;
  28. }
  29. System.out.println("avg time: " + avgtime/n + " 纳秒");
  30. } catch (Exception e){
  31. e.printStackTrace();
  32. }
  33. }
  34. }

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

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

05 PG OG 总结

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/605236
推荐阅读
相关标签
  

闽ICP备14008679号