本文分享自华为云社区《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
复制代码
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
复制代码
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.java
java -cp .:/tmp/opengauss-jdbc-6.0.0-RC1.jar OGConnectDemo > OGConnectDemo.log
cat OGConnectDemo.log
复制代码
05 PG 🆚 OG 总结
点击关注,第一时间了解华为云新鲜技术~
评论