`

Oracle_与mysql官方jdbc的一些区别

 
阅读更多

关于oracle与mysql官方jdbc的一些区别

 

 

描述

mysql

oracle

jdbc驱动

 

驱动下载地址:
http://dev.mysql.com/downloads/connector/j/
驱动类型:TYPE4

最新版都声称支持JDBC4.0

标准驱动注册名称:com.mysql.jdbc.Driver

用于主从读写分离驱动注册名称:com.mysql.jdbc.ReplicationDriver

驱动下载地址:

http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html
驱动类型:TYPE2(oci),TYPE4(thin)
最新版都声称支持
JDBC4.0
标准驱动注册名称:
oracle.jdbc.OracleDriver
oracle.jdbc.driver.OracleDriver

jdbc url

 

标准驱动URL如下:
jdbc:mysql://host:port/dbname

ReplicationDriverURL如下:

jdbc:mysql:replication://master,slave1,slave2/dbname

oci模式:需要客户端安装oracle的客户端,并且使用的jdbc驱动最好和客户端安装的版本相同,URL格式如下:
jdbc:oracle:oci:@tnsname

jdbc:oracle:oci:@host:port:sid
thin模式:不需要安装oracle的客户端,URL格式如下:jdbc:oracle:thin:@host:port:sid

连接属性

 

可以在jdbc url中直接像http url一样用键值对指定连接属性,例如:

jdbc:mysql://127.0.0.1:3306/test?user=root&password=1234

只能通过properties配置属性

连接指定字符集

 

默认为服务器端字符编码,可以在连接中通过属性 characterEncoding强制指定字符编码

不支持指定数据库字符集,默认为服务器端字符编码;
jdbc 的数据编码与本地NLS_LANG环境变量无关;
对于一些如US7ASCII这种非国际化字符的数据库编码,存取中文需要做转码处理;
如果数据编码与数据库不同也需要做转码处理;
使用NVARCHAR2这种国际化字段类型不需要转码处理

batch

批量处理DML操作,一般用于减少网络传输,有可能性能提升10倍以上。

支持,会返回每条SQL实际影响的行数,
mysqlbatch默认只是语法支持,并不提高性能,需要在连接属性中指定rewriteBatchedStatements=true才能达到batch真真的效果:
insert into values(...)将转换为insert into values(...),(...),...SQL执行,
update delete将转换为一个多条语句的SQL发送到服务器执行,期间会临时设置allowMultiQueries=true

支持,不支持返回影响行数,
老版本的驱动当一个batch很大时有数据丢失的BUG

客户端数据接收方式

 

默认为从服务器一次取出所有数据放在客户端内存中,fetch size参数不起作用,当一条SQL返回数据量较大时可能会出现JVM OOM

要一条SQL从服务器读取大量数据,不发生JVM OOM,可以采用以下方法之一:

1、当statement设置以下属性时,采用的是流数据接收方式,每次只从服务器接收部份数据,直到所有数据处理完毕,不会发生JVM OOM

          setResultSetType(ResultSet.TYPE_FORWARD_ONLY);

          setFetchSize(Integer.MIN_VALUE); 

2、调用statementenableStreamingResults方法,实际上enableStreamingResults方法内部封装的就是第1种方式。

3、设置连接属性useCursorFetch=true (5.0版驱动开始支持)statementTYPE_FORWARD_ONLY打开,再设置fetch size参数,表示采用服务器端游标,每次从服务器取fetch_size条数据,注意这种方式会大量占用服务器的临时空间,一般比较少用。

支持,默认为从服务器一次取出fetch size 条记录放在客户端,客户端处理完成一个批次后再向服务器取下一个批次,直到所有数据处理完成,当需要处理大量数据时,ResultSetType应设置为TYPE_FORWARD_ONLY,否则可能会出现JVM OOM 

PreparedStatement

预处理SQL

支持
主要用于防SQL注入,目前版本对性能没有提升,详细说明见
http://blog.csdn.net/yzsind/article/details/7266281

支持
非常重要,不仅可防止SQL注入,还会大大送减少服务器CPU开销,提高性能

SQL执行超时设置

 

可通过PreparedStatement.setQueryTimeout(value)设置每条SQL的执行超时时间(5.0)

通过连接属性socketTimeout设置所有SQL的超时时间

可通过PreparedStatement.setQueryTimeout(value)设置每条SQL的执行超时时间

通过连接属性oracle.jdbc.ReadTimeout设置所有SQL的超时时间

一次执行多条SQL

 

通过参数allowMultiQueries控制,默认不允许,当多条SQL时会返回多个结果集,可以用jdbcgetMoreResults方法处理,例:
stmt.executeQuery("select * from t1;select * from t2");
ResultSet rs1=stmt.getResultSet();
while (rs1.next()) {   ...}
if (stmt.getMoreResults()) {

  ResultSet rs2=stmt.getResultSet();

  while (rs2.next()) {    ...  }

}

不支持

负载均衡与故障切换

 

通过loadbalance相关的连接参数实现负载均衡(5.1)
使用ReplicationDriver实现读写分离,通过connection.setReadOnly实现masterslave请求自动处理,例如:
Class.forName("com.mysql.jdbc.ReplicationDriver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql:replication://127.0.0.1,10.20.36.20/test",
          "yzs", "yzs");
conn.setReadOnly(true);
...//
操作主库
conn.setReadOnly(false);
...//
操作从库
conn.setReadOnly(true);
...//
操作主库
详见:
http://dev.mysql.com/doc/refman/5.6/en/connector-j-reference-replication-connection.html

通过在连接url里指定多个服务器及切换参数配置

 

 

分享到:
评论

相关推荐

    Mysql JDBC驱动 .zip_MYSQL_jdbc mysql_mysql jdbc_mysql jdbc driver_

    MySQL JDBC驱动,也称为Connector/J,是Oracle公司提供的官方MySQL数据库适配器,它实现了JDBC接口,使得Java程序员可以方便地在MySQL数据库上执行SQL语句和处理结果。 **1. JDBC基础** JDBC提供了一组接口和类,...

    SSH+ORACLE_jdbc+MYSQL_jdbc+MD的所有jar包

    Oracle_jdbc和MYSQL_jdbc则分别对应的是Oracle数据库和MySQL数据库的Java驱动,用于在Java程序中与数据库进行交互。MD可能指的是MD5,一种广泛使用的哈希函数,常用于密码存储或数据校验。 1. **Spring**:Spring是...

    MySQL_for_JDBC,Oracle9i_for_JDBC,SQL_2000_for_JDBC,SQL_2005_for_JDBC数据库驱动架包.rar

    标题和描述中提到的"MySQL_for_JDBC"、"Oracle9i_for_JDBC"、"SQL_2000_for_JDBC"以及"SQL_2005_for_JDBC"都是针对不同数据库系统的Java JDBC驱动程序。JDBC(Java Database Connectivity)是Java编程语言中的一个...

    oracle_mysql_jdbc.

    Oracle和MySQL是两种广泛应用的关系型数据库管理系统(RDBMS),而Java Database Connectivity (JDBC) 则是Java编程语言中用于与各种数据库进行交互的标准接口。本话题将围绕“Oracle MySQL JDBC”这一主题,详细...

    oracle_11g&mysql_5.1-jdbc driver.rar

    JDBC(Java Database Connectivity)是Java语言中用于与数据库交互的一组接口和类,它允许Java应用程序连接到各种类型的数据库系统,包括Oracle和MySQL。 1. **Oracle JDBC驱动**: Oracle提供了多种类型的JDBC...

    kettle_jdbc_连接mysql_oracle_dm_gbase数据库jar包.rar

    标题 "kettle_jdbc_连接mysql_oracle_dm_gbase数据库jar包.rar" 暗示了这个压缩包包含了用于Kettle(Pentaho Data Integration,也称为KDI)通过JDBC连接MySQL、Oracle和DM(可能指的是达梦数据库)以及GBase数据库...

    JDBC(sqlserver_oracle_mysql)

    总的来说,JDBC为Java开发者提供了一种统一的方式来与不同类型的数据库进行通信,无论是在SQL Server、Oracle还是MySQL环境下,都能通过标准的JDBC API进行数据操作,增强了代码的可移植性和效率。理解并熟练掌握...

    JDBC驱动包(oracle和mysql).zip_jdbc_oracle_piecedze

    本压缩包“JDBC驱动包(oracle和mysql).zip_jdbc_oracle_piecedze”包含了Oracle和MySQL数据库的JDBC驱动,这对于Java开发者来说是必要的,因为他们可以使用这些驱动来建立和管理与数据库的连接。 首先,我们来看...

    jdbc(mssql,oracle,mysql)

    标题 "jdbc(mssql,oracle,mysql)" 涉及到的是数据库连接技术,特别是Java数据库连接(JDBC)与三个主流关系型数据库管理系统——Microsoft SQL Server、Oracle和MySQL的交互。JDBC是Java语言中用来规范客户端程序...

    Struts2+Oracle_jdbc驱动+MySql_jdbc驱动+log4j 常用jar包

    该压缩文件包含了JavaWeb开发中常用的Struts2核心jar,MySQL的JDBC驱动jar,Oracle的JDBC驱动jar,还有log4j日志jar,MD5 jar ,文件上传下载jar,生成验证码jar--patcha。主要提供给JavaWeb阶段的学习者使用

    JSP_JDBCconn_oracle_java_MYSQL_

    总之,“JSP_JDBCconn_oracle_java_MYSQL_”这个资源涵盖了通过JSP和JDBC技术与MsSQL、MYSQL和Oracle数据库交互的基础知识和实践技巧,对于开发涉及多数据库系统的Java Web应用具有重要参考价值。

    oracle mysql jdbc驱动

    Oracle MySQL JDBC驱动是连接Oracle数据库和Java应用程序的重要组件,它允许Java程序通过Java Database Connectivity (JDBC) API与MySQL数据库进行交互。Oracle公司为MySQL提供官方的JDBC驱动,确保了高效、稳定的...

    com.mysql.jdbc_5.1.5.jar.zip

    MySQL JDBC驱动程序是Java应用程序与MySQL数据库之间通信的桥梁,它允许Java开发者使用SQL语句执行数据库操作。在本文中,我们将深入探讨`com.mysql.jdbc_5.1.5.jar`,这是一个针对MySQL数据库的JDBC驱动程序版本,...

    mysql jdbc 驱动 适用于5.7及以上版本数据库

    mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上...

    JDBC_MySQL_Oracle_EL_JSTL权威指南大全

    在Web开发领域,掌握一些核心技术是至关重要的,其中包括JDBC(Java Database Connectivity)、MySQL、Oracle数据库以及EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)。这些技术是构建...

    JDBC数据库驱动_oracle_sqlserver_mysql

    MySQL JDBC驱动也称为Connector/J,它允许Java应用程序与MySQL数据库进行交互。这个版本可能较旧,目前MySQL已经更新到了8.x版本,建议使用最新版本如"mysql-connector-java-8.x.y.jar",以获取更好的兼容性和性能。...

    mysqljdbc.jar;oraclejdbc.jar

    mysqljdbc.jar文件包含了所有必要的类和资源,使得Java应用程序能够通过JDBC API与MySQL数据库建立连接,执行SQL语句,以及管理事务。 Oracle JDBC驱动,通常指的是ojdbc.jar或thin driver,它是Oracle公司提供的...

    mysql_sqlserver_oracle-jdbc.rar

    标题中的"mysql_sqlserver_oracle-jdbc.rar"表明这是一个压缩包,包含了与MySQL、SQL Server和Oracle数据库相关的JDBC驱动程序。JDBC(Java Database Connectivity)是Java编程语言用来规范应用程序如何访问数据库的...

    JDBC访问Mysql或Oracle要用的JAR包

    标题中的“JDBC访问Mysql或Oracle要用的JAR包”指的是Java Database Connectivity(JDBC)驱动程序,这些驱动程序允许Java应用程序与MySQL和Oracle数据库进行交互。在Java编程中,JDBC是Java标准版(Java SE)的一...

    Oracle+MySql JDBC demo

    在IT领域,数据库连接是应用程序...总的来说,"Oracle+MySql JDBC demo"提供了一个很好的学习平台,让你掌握如何在Java中使用JDBC与Oracle和MySQL数据库进行通信,这对于任何Java开发者的技能树都是不可或缺的一部分。

Global site tag (gtag.js) - Google Analytics