最近闲来无事,看了下面试题目,看到mysql数据表的引擎模块,目前我们用的比较多的引擎应该是innodb和myisam,其他的引擎暂时抛开不谈,我们先来看看这两个数据表引擎有哪些异同:
纸上得来终觉浅,绝知此事要躬行,所以自己做了个实验,发现MyISAM引擎的表批量插入要优于Innodb
package com.sushi.jdbc;
import java.sql.Connection;}
下面是输出结果:
可以看出myiasm插入一千条数据大概需要7000毫秒左右,而innodb大概需要9000多毫秒
另外附上表结构(两张表结构一样,数据库引擎一个是myiasm,一个是innodb)
jdbc工具类也附上:
package com.sushi.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public final class JDBCUtils {
private static String driver="com.mysql.jdbc.Driver";
private static String url="jdbc:mysql://192.168.18.5:3306/mydb";
private static String user="root";
private static String password="toor";
private JDBCUtils(){}
static {
/**
* 驱动注册
*/
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
throw new ExceptionInInitializerError(e);
}
}
/**
* 获取 Connetion
* @return
* @throws SQLException
*/
public static Connection getConnection() throws SQLException{
return DriverManager.getConnection(url, user, password);
}
/**
* 释放资源
* @param conn
* @param st
* @param rs
*/
public static void colseResource(Connection conn,Statement st,ResultSet rs) {
closeResultSet(rs);
closeStatement(st);
closeConnection(conn);
}
/**
* 释放连接 Connection
* @param conn
*/
public static void closeConnection(Connection conn) {
if(conn !=null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
//等待垃圾回收
conn = null;
}
/**
* 释放语句执行者 Statement
* @param st
*/
public static void closeStatement(Statement st) {
if(st !=null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
//等待垃圾回收
st = null;
}
/**
* 释放结果集 ResultSet
* @param rs
*/
public static void closeResultSet(ResultSet rs) {
if(rs !=null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
//等待垃圾回收
rs = null;
}
}