JAVA-预处理&连接池技术

开发环境

mysql
eclipse
JAR包
	mysql-connector-java-5.1.7-bin.jar
	mchange-commons-java-0.2.11.jar
	c3p0-0.9.5.2.jar

同步100w数据只需22秒
code如下:

public class MyClassTest {
	public static void main(String[] args) throws Exception{
		MyConnect	myConn= new MyConnect("mysql_afschool");
		List<String[]> select= myConn.select("select * from student");
		
		
		
		ComboPooledDataSource pool = new ComboPooledDataSource("mysql_afschool");
		Connection conn = pool.getConnection();
		conn.setAutoCommit(false);//关闭自动提交
		String  insert_sql=myConn.preInsert("student_copy");

		PreparedStatement psts = conn.prepareStatement(insert_sql);
		 
		 
		 int count =0;
		 
	       SimpleDateFormat sdf = new SimpleDateFormat();// 格式化时间 
	        sdf.applyPattern("yyyy-MM-dd HH:mm:ss");// a为am/pm的标记  
	        Date date1 = new Date();// 获取当前时间 
	        System.out.println("开始时间:" + sdf.format(date1)); // 输出已经格式化的现在时间(24小时制) 
		 
		 for (int n=0;n<=35000;n++) { //插入1400数据 看看卡需要多久
		 for(String[] str:select) {
		 for(int i=0;i<str.length;i++) {
			 psts.setString(i+1, str[i]);
		 }
		 psts.addBatch(); 
		 count++;
		 }
	}
		 psts.executeBatch();
		 conn.commit();//提交
	        sdf.applyPattern("yyyy-MM-dd HH:mm:ss");// a为am/pm的标记  
	        Date date2 = new Date();// 获取当前时间 
	        System.out.println("结束时间:" + sdf.format(date2) +"\n同步记录数" + count); // 输出已经格式化的现在时间(24小时制) 
	        conn.close();
	        
	}
}

c3p0-config.xml 配置如下

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
    <default-config>  
        <property name="initialPoolSize">10</property>  
        <property name="maxIdleTime">30</property>  
        <property name="maxPoolSize">100</property>  
        <property name="minPoolSize">10</property>  
        <property name="maxStatements">200</property>  
    </default-config>  
  

	
 <!--配置连接池mysql1-->
    <named-config name="mysql_afschool">
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <!-- mysql 开启mysql的批写入,预处理 useServerPrepStmts=true&amp;rewriteBatchedStatements=true-->
        <property name="jdbcUrl">jdbc:mysql://127.0.0.1/af_school?useUnicode=true&amp;useServerPrepStmts=true&amp;rewriteBatchedStatements=true&amp;characterEncoding=UTF-8</property>     
        <property name="user">root</property>
        <property name="password">Ldd123456</property>

	    <property name="initialPoolSize">2</property>
	    <property name="minPoolSize">2</property>
	    <property name="maxPoolSize">10</property>
	    <property name="maxIdleTime">30</property>
	    <property name="idleConnectionTestPeriod">200</property>	    
	 </named-config>  
   
	 <!--配置连接池mysql2-->
	   <named-config name="mysql_target_db">
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://127.0.0.1/target_db?useUnicode=true&amp;characterEncoding=UTF-8</property>     
        <property name="user">root</property>
        <property name="password">Ldd123456</property>

	    <property name="initialPoolSize">2</property>
	    <property name="minPoolSize">2</property>
	    <property name="maxPoolSize">10</property>
	    <property name="maxIdleTime">30</property>
	    <property name="idleConnectionTestPeriod">200</property>	 
	</named-config> 		


 <!--		注意:XML里的&号须转义为 &amp; 
		其中,
		initialPoolSize 初始连接个数。当连接池创建时,立即准备几个连接,放到池子里
		minPoolSize 池子里最少连接个数
		maxPoolSize 池子里最多有多少连接。当到达此数时,再通过getConnection() 时将会阻塞、直到有可用的连接
		maxIdleTime 最大空闲时间。当一个连接建立后、长时间未用时,会被连接池自动关闭多余的连接。连接池最会少保留 minPoolSize 个可用连接。
		idleConnectionTestPeriod 为了防止发呆而被MySQL服务器踢掉,定时向服务器发送测试消息、以声明自己的存在。
		
		比如,minPoolSize设置为2,则池子里至少保留2个可用连接。即使程序不作任何这个操作,这两个连接也不会被关闭。但是,如果超过8个小时未操作,则此连接会因为‘发呆’会被MySQL踢掉。
		
		所以,为了避免被踢,要设置定时给向服务器发一个消息以证明自己没死。idleConnectionTestPeriod 就是这个定时的间隔。
-->
	
</c3p0-config>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: mysql-connector-java-8.0.30.jar 是 MySQL 数据库的 Java 连接器,可以用于在 Java 应用程序中连接和操作 MySQL 数据库。该连接器支持 JDBC 4.2 和 4.3 规范,提供了高性能和可靠的数据库连接功能。 ### 回答2: mysql-connector-java-8.0.30.jar是MySQL官方提供的Java连接器驱动程序。它是用于在Java应用程序和MySQL数据库之间建立连接和进行通信的重要组件。这个驱动程序可以让开发者使用Java编程语言轻松地连接和操作MySQL数据库。 mysql-connector-java-8.0.30.jar提供了广泛的功能和工具,以便开发者可以在应用程序中执行各种数据库操作,如执行SQL查询、插入、更新和删除数据等。这个驱动程序也支持事务处理和连接池等高级功能,以确保数据的完整性和安全性。 此外,mysql-connector-java-8.0.30.jar还提供了大量的API类和方法,用于处理数据库连接的建立、关闭和管理,以及执行各种数据库操作。开发者可以使用这些API来编写灵活、高效和安全的Java应用程序,与MySQL数据库进行交互。 为了使用mysql-connector-java-8.0.30.jar,开发者需要将该驱动程序的JAR文件添加到Java项目的类路径中,并在代码中使用合适的类和方法来连接和操作MySQL数据库。开发者还需要提供正确的连接参数,如数据库主机名、端口号、用户名和密码等。 总的来说,mysql-connector-java-8.0.30.jar是一个重要的组件,使Java开发者能够轻松地连接和操作MySQL数据库。它提供了丰富的功能和工具,使开发者能够编写高效、灵活和安全的数据库应用程序。 ### 回答3: mysql-connector-java-8.0.30.jar 是MySQL数据库的官方Java驱动程序,用于通过Java代码连接和操作MySQL数据库。它是一个JDBC(Java Database Connectivity)驱动程序,提供了Java程序与MySQL数据库之间的连接和交互功能。 mysql-connector-java-8.0.30.jar 提供了一组API(Application Programming Interface),使开发人员可以使用Java语言轻松地连接到MySQL数据库,并执行诸如增加、查询、更新和删除等各种数据库操作。这个jar文件还包含了一些与数据库连接和事务等相关的类和方法,为开发人员提供更灵活和高效的数据库操作。 使用mysql-connector-java-8.0.30.jar,我们可以在Java应用程序中创建一个数据库连接,并通过SQL语句进行各种数据库操作。我们可以执行查询语句来检索数据,也可以执行更新语句来修改数据,还可以执行事务来保证数据的一致性和完整性。 此外,mysql-connector-java-8.0.30.jar 还具有一些高级功能,如建立连接池、执行批量操作和使用预处理语句等。这些功能可以提高数据库操作的性能和效率,并且在处理大量数据时尤为有用。 总之,mysql-connector-java-8.0.30.jar 是连接和操作MySQL数据库的重要工具,对于开发Java应用程序与MySQL数据库的交互是非常有帮助的。它提供了丰富的API和各种功能,使得开发者可以更轻松地进行数据库操作,并且提高了应用程序的性能和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值