JDBC连接openGauss6.0和PostgreSQL16.2性能对比
1.华为云峰会2024,GaussDB扬帆出海,给世界一个更优选择2.预算有限,资源冗余?DWS集群缩容如何帮你解决烦劳3.数智融合,华为云GaussDB(for MySQL)助力企业释放数据新价值4.RDS for MySQL Serverless公测上线:弹性伸缩,最高可降成本超80%5.GaussDB跨云容灾:实现跨地域的数据库高可用能力6.实例详解如何构建动态SQL语句7.GaussDB(DWS)运维利刃:TopSQL工具解析8.手把手带你认识GaussDB轻量化运维管理工具9.守护更多女性健康,华为云GeminiDB助力美柚数据库高效稳定迁移10.GaussDB(DWS)集群通信:详解pooler连接池11.Libcomm通信库:GaussDB(DWS) 为解决建联过多的小妙招12.实例带你了解GaussDB数据库的LOCK TABLE13.RDS for MariaDB“智能DBA助手”,让运维效率嗖嗖地!14.实例带你了解GaussDB的索引管理15.详解GaussDB(DWS)中3个防过载检查项16.华为云数据库创新发展论坛,打造行业更优数据库底座!17.GaussDB(分布式)实例故障处理18.华为云GeminiDB新版本发布:全面支持Redis 6.219.究竟什么样的数据库,才能承接RTA广告这个技术活!20.GaussDB(DWS) 业务高可靠的三大利器:CN RETRY、远程读、ELB21.走在前、做示范,苏州农商银行携华为云完成超级网银系统改造22.分布式数据库技术的演进和发展方向23.新版Redis不再“开源”,对使用者都有哪些影响?24.cgroup、资源池、用户的关系..涉及到GaussDB(DWS)的资源设置25.GeminiDB Cassandra接口新特性FLASHBACK发布:任意时间点秒级闪回26.探索GaussDB(DWS)湖仓融合:Hudi与元数据打通的深度解析27.详解数仓对象设计中序列SEQUENCE原理与应用28.数仓调优实战:GUC参数调优29.详讲openGauss 5.0 单点企业版如何部署_Centos7_x8630.华为云GeminiDB,广告RTA的“登云梯”31.DTC2024,华为云数据库创新融合大发展,打造世界级数据库!32.GaussDB(DWS)基于Flink的实时数仓构建33.数仓的两种轻量级数据交换格式:json与jsonb34.重磅新品发布!云耀数据库HRDS,享受轻量级的极致体验35.“企业创新新引擎”数据库专项赋能会,让云原生技术普惠千行百业!36.GaussDB SQL查询语句执行过程解析37.详解数仓的向量化执行引擎38.Redis开源社区持续壮大,华为云为Valkey项目注入新的活力39.详解数仓的3A安全能力40.【GaussDB(for MySQL)】 Big IN查询优化41.GaussDB细粒度资源管控技术透视42.带你了解GaussDB SQL中的BOOLEAN表达式43.数仓安全:数据脱敏技术深度解析44.详解GaussDB(DWS)中的行执行引擎45.了解GaussDB SQL中CASE表达式
46.JDBC连接openGauss6.0和PostgreSQL16.2性能对比
47.MySQL 给用户添加 ALTER VIEW 的权限48.MySQL全文索引源码剖析之Insert语句执行过程49.全球厂商之最,华为17篇论文入选国际数据库顶会ICDE50.GeminiDB PITR,让游戏回档“进退自如”!51.浅析MySQL 8.0直方图原理52.LLVM技术在GaussDB等数据库中的应用53.告别内存OOM,解决MySQL内存增长问题54.从数据库设计到性能调优,全面掌握openGemini应用开发最佳实践55.深度体验与测评openGauss 6.0.0新版本56.深度解读数据库引入LLVM技术后如何提升性能57.从Purge机制说起,详解GaussDB(for MySQL)的优化策略58.攀登不止,华为数据库论文入选SIGMOD 2024,技术创新再谱新篇59.技术解读数据库如何实现“多租户”?60.解读MySQL 8.0数据字典的初始化与启动61.GeminiDB全面联动MySQL:热点数据,一键加速62.探秘数据库中的并行计算技术应用63.硬核解读,WeTune是如何提升数据库查询重写性能?64.开源数据库Greenplu突然闭源?GaussDB(DWS)提供数仓新可能65.数据库异常难定位?GaussDB(DWS)运维神器TopSQL来解决66.MySQL派生表合并优化的原理和实现67.华为云发起,openGemini正式成为CNCF官方项目!68.MySQL中为什么要使用索引合并(Index Merge)?69.解读MySQL 8.0数据字典缓存管理机制70.解读GaussDB(for MySQL)灵活多维的二级分区表策略71.深度解读GaussDB(for MySQL)与MySQL的COUNT查询并行优化策略72.一图为你揭秘云数据库GaussDB管理平台亮点73.深度解读GaussDB逻辑解码技术原理74.深度解读RDS for MySQL 审计日志功能和原理75.遇到慢查询怎么办?一文解读MySQL 8.0查询分析工具76.从源码分析,MySQL优化器如何估算SQL语句的访问行数77.一文带你搞懂GaussDB数据库性能调优78.揭秘UGO SQL审核功能4大特性,让业务平滑迁移至GaussDB79.了解GaussDB性能调优之隐式转换,解决慢SQL问题80.全面解读TaurusDB透明压缩特性,降低数据库使用成本81.解读GaussDB的BTree索引和UBTree索引,如何带来更强并发能力82.想提高查询性能,用GaussDB(DWS) in表达式还是or表达式?83.详解GaussDB(DWS)逻辑集群,如何化解大规模业务数据管理难题84.TaurusDB库表时间点极速恢复,大幅缩短数据恢复时间85.拦截烂SQL,解读GaussDB(DWS)查询过滤器过滤规则原理86.开源for Huawei,Beam适配GaussDB实践案例分享87.优化大宽表查询性能,揭秘GaussDB(DWS) 谓词列analyze本文分享自华为云社区《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 总结
- PostgreSQL 16.2 对比 openGauss 6.0 在连接创建上大概有3~4倍左右的性能优势,当然都是在毫秒级别
- 针对高并发场景建议使用连接池来减少连接的频繁创建和关闭所带来的耗时
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 我与微信审核的“相爱相杀”看个人小程序副业
2021-05-14 解读 SSDB、LevelDB 和 RocksDB 到 GaussDB(for Redis) 的迁移
2021-05-14 数据中心太耗电,送你一个节能神器
2021-05-14 带你彻底搞懂高性能网络模式Reactor 和 Proactor
2020-05-14 如何处理暗数据?
2020-05-14 为什么说物联网平台是城市数字化的必备底座
2020-05-14 【论文阅读】增量式物体检测