简单测试(Oracle PK Mysql)

一,前言

我mysql和oracle都是本地的。

1.mysql和oracle分别插1万条数据
2.mysql和oracle分别批量插入1万条数据
3.mysql和oracle分别批量插入100万数据


应用场景

Oracle的应用:主要在传统行业的数据化业务中,比如:银行、金融这样的对可用性、健壮性、安全性、实时性要求极高的业务;零售、物流这样对海量数据存储分析要求很高的业务。电商也有很多使用者,如京东(正在投奔Oracle)、阿里巴巴(计划去Oracle化)。数据安全要求较高,没有预算压力,业务模式比较固定就用Oracle。
MySQL的应用:大都集中于互联网方向,因为价格便宜,安装使用简便快捷,深受广大互联网公司的喜爱。安全要求稍低,灵活度要求高,主要是免费,维护更为便捷,就选mysql。

二,测试结果

这里写图片描述

1. mysql和oracle分别插1万条数据

这里写图片描述

2.mysql和oracle分别批量插入1万条数据

这里写图片描述

3.mysql和oracle分别批量插入100万数据

这里写图片描述

三,代码

package com.cxx.jdbc;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.sql.*;
/**
 * @Author: cxx
 * jdbc使用流程
 * 1.加载驱动 Class.forName("");
 * 2.获取连接 Connection
 * 3.获取执行对象 Statement
 * 4.执行sql,处理结果
 * 5.关闭连接
 * @Date: 2018/5/29 16:37
 */
public class TestJdbc {
    private static Logger log = LoggerFactory.getLogger(TestJdbc.class);
    private String url="jdbc:mysql://localhost:3306/ks?useUnicode=true&characterEncoding=UTF-8&&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
    private String userName="root";
    private String password="123456";
    private String driveName = "com.mysql.jdbc.Driver";
    private Connection connection=null;
    public TestJdbc(){
        try {
            //Class.forName(driveName);
            log.debug("加载驱动");
            //Connection conn  = DriverManager.getConnection(url,userName,password);
            Class.forName("oracle.jdbc.driver.OracleDriver");
            //2.获取连接
            Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe", "sa", "123456");
            this.connection=conn;
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void selectData() throws Exception{
        Statement statement = connection.createStatement();
        ResultSet rs = statement.executeQuery("SELECT * from tb_news");
        while (rs.next()){
            System.out.println(rs.getString(1));
        }
    }

    public void insertData() throws Exception {
        PreparedStatement psmt = connection.prepareStatement("insert into tb_news(title,content) VALUES(?,?)");
        psmt.setString(1,"标题");
        psmt.setString(2,"内容");
        int num=0;
        for (int i = 0; i <1000000 ; i++) {
            System.out.println("插入记录:"+i);
            num+= psmt.executeUpdate();
        }
        System.out.println(num);
    }

    public void insertBatch() throws SQLException {
        connection.setAutoCommit(false);
        PreparedStatement psmt = connection.prepareStatement("INSERT INTO tb_news(title,content) VALUES(?,?)");
        for (int i = 0; i <1000000 ; i++) {
            psmt.setString(1,"标题"+i);
            psmt.setString(2,"内容"+i);
            psmt.addBatch();
            if (i%100000==0){
                System.out.println("**********批处理");
                psmt.executeBatch();
                connection.commit();
            }
        }
    }

    public static void main(String[] args) throws Exception {
        TestJdbc jdbc = new TestJdbc();
        long start = System.currentTimeMillis();
        //jdbc.insertData();
        jdbc.insertBatch();
        long end = System.currentTimeMillis();
        System.out.println("执行10000数据耗时为:"+(end-start));
        //jdbc.selectData();
    }
}
CREATE TABLE `tb_news` (
  `title` varchar(250) COLLATE utf8_unicode_ci NOT NULL,
  `content` varchar(250) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

猜你喜欢

转载自blog.csdn.net/m0_37499059/article/details/80500861
今日推荐