`
javawebsoa
  • 浏览: 425415 次
社区版块
存档分类
最新评论

关于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里指定多个服务器及切换参数配置

我的新浪微博:http://weibo.com/yzsind

分享到:
评论

相关推荐

    oracle mysql jdbc驱动

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

    oracle sql mysql的jdbc驱动

    本知识点将详细介绍Oracle SQL和MySQL的JDBC驱动,以及如何在Java程序中使用这些驱动进行数据库操作。 首先,JDBC是Java平台的标准接口,它允许Java应用程序与各种数据库系统进行通信。JDBC驱动是实现这个接口的...

    Oracle+MySql JDBC demo

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

    oracle_mysql_jdbc.

    Oracle和MySQL是两种广泛应用的关系型数据库管理系统(RDBMS),而Java Database Connectivity (JDBC) 则是Java编程语言中用于与各种数据库进行交互的标准接口。本话题将围绕“Oracle 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驱动(Oracle、MySql)

    Java Database Connectivity (JDBC) 是Java编程语言中用于与各种数据库进行交互的一组标准API。...无论是Oracle还是MySQL,选择合适的JDBC驱动,结合Java强大的面向对象特性,可以构建出稳定、高效的数据库应用程序。

    jdbc(mssql,oracle,mysql)

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

    mysqljdbc.jar;oraclejdbc.jar

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

    sql server mysql oracle jdbc连接

    本篇文章将深入探讨标题"sql server mysql oracle jdbc连接"所涉及的知识点,包括SQL Server、MySQL和Oracle这三种主流数据库的JDBC连接。 首先,JDBC是Java API,它允许Java程序通过Java代码与数据库进行通信。...

    jdbc驱动(含oracle mysql)

    本资源包含Oracle和MySQL两种常用数据库的JDBC驱动,适用于Java开发项目。 Oracle JDBC驱动: Oracle JDBC驱动分为 Thin 和 OCI 两种类型。Thin 驱动是一种纯Java实现,无需Oracle客户端即可运行,适合远程连接。而...

    jdbc-driver(Oracle-Mysql).rar jdbc 驱动

    总结来说,Oracle和MySQL的JDBC驱动是Java应用程序与这两种数据库交互的关键。理解它们的工作原理和使用方式,对于进行数据库操作和开发高效的数据驱动应用至关重要。在实践中,正确导入驱动库,规范地建立和管理...

    Oracle、Mysql和JDBC学习.zip

    在深入学习Oracle、MySQL和JDBC的过程中,你可能需要阅读官方文档,参与实际项目,或者参考各种教程和书籍。通过实践,你可以更好地理解数据库的运行机制,熟练运用JDBC进行数据库编程,为后续的软件开发工作打下...

    JDBC访问Mysql或Oracle要用的JAR包

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

    JDBC驱动包(oracle和mysql)

    Oracle JDBC驱动用于连接Oracle数据库,而MySQL JDBC驱动则用于连接MySQL数据库。这两种驱动都是为了确保Java程序能够顺利地与各自数据库进行数据操作。 1. Oracle JDBC驱动: Oracle提供了多种类型的JDBC驱动,...

    JDBC连接工具mysql与oracle

    连接Oracle的步骤与MySQL类似,但需使用Oracle的JDBC驱动,如ojdbc: 1. **添加驱动依赖**:在Maven的pom.xml中添加Oracle的JDBC驱动: ```xml <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc...

    com.mysql.jdbc_5.1.5.jar.zip

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

    java连接oracle、SQLServer、mySql的 jdbc jar包

    MySQL的JDBC驱动程序在Java代码中加载和连接的方式与Oracle和SQL Server类似: ```java Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://hostname:port/...

    MySql和Oracle的JDBC驱动

    综上所述,MySQL和Oracle的JDBC驱动为Java开发者提供了与数据库交互的标准接口,使跨平台开发变得更加便捷。了解并熟练掌握这些驱动的使用方法,对提升Java数据库应用的开发效率和质量至关重要。

    mysql oracle sqlserver jdbc驱动包

    `mysql-connector-java`是MySQL提供的JDBC驱动程序,用于在Java应用中建立与MySQL服务器的连接。版本号3.1.11表明这是一个较旧的版本,可能不支持最新的MySQL特性。开发者通常会使用最新稳定版以获取更好的性能和...

    oracle jdbc mysql 等数据连接所有的配置

    本文将根据提供的信息,详细介绍Oracle、MySQL以及SQL Server等数据库的JDBC连接配置方法。 #### Oracle JDBC连接配置 Oracle数据库是Oracle公司的一款关系型数据库管理系统。在Java应用程序中通过JDBC(Java ...

Global site tag (gtag.js) - Google Analytics