JDBC連接openGauss6.0和PostgreSQL16.2性能對比

来源:https://www.cnblogs.com/huaweiyun/p/18190500
-Advertisement-
Play Games

本文分享自華為雲社區《JDBC連接openGauss6.0和PostgreSQL16.2性能對比》,作者: Gauss松鼠會小助手。 PostgreSQL vs openGauss 01 前置準備 安裝JDK: 詳細安裝步驟請問度娘,輸入能正常返回即已安裝 [root@db06 ~]# java - ...


本文分享自華為雲社區《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

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在MySQL的查詢中常常會用到 order by 和 group by 這兩個關鍵字,它們的相同點是都會對欄位進行排序,那查詢語句中的排序是如何實現的呢? ...
  • 轉載自tuoluzhe8521 導讀:通過簡化複雜的任務依賴關係, DolphinScheduler為數據工程師提供了強大的工作流程管理和調度能力。在3.2.0版本中,DolphinScheduler帶來了一系列新功能和改進,使其在生產環境中的穩定性和可用性得到了顯著提升。 為了幫助讀者更好地理解和 ...
  • 架構簡介 PolarDB-X 採用 Shared-nothing 與存儲分離計算架構進行設計,系統由5個核心組件組成。 PolarDB分散式 架構圖 計算節點(CN, Compute Node) 計算節點是系統的入口,採用無狀態設計,包括 SQL 解析器、優化器、執行器等模塊。負責數據分散式路由、計 ...
  • 本文分享自華為雲社區《MySQL 給用戶添加 ALTER VIEW 的許可權》,作者: 皮牙子抓飯。 MySQL 是一個廣泛使用的關係型資料庫管理系統,用於許多 Web 應用程式和企業級解決方案中。在 MySQL 中,用戶許可權的管理是非常重要的,以確保資料庫安全性和數據完整性。在某些情況下,需要為用戶 ...
  • 前言 之前就有考慮過想要研究下RediSearch,號稱高性能全文索引的功能,這幾天閑來無事調研了一番。 RediSearch 介紹 RediSearch 是 Redis Labs 提供的一款強大且高效的搜索和全文索引引擎。它是一個基於 Redis 的模塊,允許用戶在 Redis 資料庫中進行複雜的 ...
  • 1,介紹 鎖是電腦協調多個進程或線程併發訪問某一資源的機制。在資料庫中,除傳統的計算資源(CPU、RAM、I/O)的爭用以外,數據也是一種供許多用戶共用的資源。如何保證數據併發訪問的一致性、有效性是所有資料庫必須解決的一個問題,鎖衝突也是影響資料庫併發訪問性能的一個重要因素。從這個角度來說,鎖對數 ...
  • 近年來,新質生產力、數據要素及數據資產入表等新興概念猶如一股強勁的浪潮,持續衝擊並革新著企業數字化轉型的觀念視野,昭示著一個以數據為核心驅動力的新時代正穩步啟幕。 面對這些引領經濟轉型的新興概念,為了更好地服務於客戶並提供切實可行的實踐指導,自3月20日起,袋鼠雲將推出全新《袋鼠雲大數據實操指南》系 ...
  • AutoMySQLBackup備份配置了加密選項過後,它會將資料庫的備份文件加密。測試解密這些加密的備份文件時遇到錯誤(密鑰做了脫敏處理)。 $ openssl enc -aes-256-cbc -d -in daily_mysql_2024-05-14_09h09m_Tuesday.sql.gz. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...