`
flyong
  • 浏览: 5044 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

求:10w级别连续插入方法

阅读更多

昨天模拟了在mysql5.0数据库中连续插入10w条记录,主要用到hibernate的save()方法,用for循环模拟了一下,结果到3w,是在没有心情等下去了,花了1H多,数据库是本机的,

个人机器AMD sempron 3000+ 主频1.60GHz,内存1.5GB

 

想问:10w级别的如何连续插入控制在1m内?一般连续插入10w级别的数据在mysql数据库中耗时是多少?

分享到:
评论
3 楼 xly_971223 2008-11-27  
	public void insert()throws SQLException{
		long s = System.currentTimeMillis();
		Connection conn = getConnection();
		
	
		PreparedStatement ps = null;
		try {
			conn.setAutoCommit(false);
			ps = conn.prepareStatement("insert into t_house(title, address, forward, total_room, total_hall, total_toilet, build_area, use_area,input_time, publish_type) values(?,?,?,?,?,?,?,?,?,?)");
			for(int i = 0; i < 10000; i++){
				ps.setString(1, randomTitle());
				ps.setString(2, "北京东燕郊");
				ps.setString(3, "南");
				ps.setInt(4, random(4));
				ps.setInt(5, random(2));
				ps.setInt(6, random(2));
				ps.setInt(7, random(1000000));
				ps.setInt(8, random(1000000));
				ps.setDate(9, Date.valueOf(genDate()));
				ps.setString(10, String.valueOf(random(1)));
				ps.addBatch();
				
			}
			ps.executeBatch();
			conn.commit();
		} catch (SQLException e) {
			conn.rollback();
			throw e;
		}finally{
			ps.close();
			conn.close();
		}
2 楼 xly_971223 2008-11-27  
直接上jdbc preparedstatement
有一个批量插入的方法 记不住了 你可以去查一下api
另外最关键是不要插入一条提交一次事务 这样效率太低

	public void insert()throws SQLException{
		long s = System.currentTimeMillis();
		Connection conn = getConnection();
		
	
		PreparedStatement ps = null;
		try {
			conn.setAutoCommit(false);
			ps = conn.prepareStatement("insert into t_house(title, address, forward, total_room, total_hall, total_toilet, build_area, use_area,input_time, publish_type) values(?,?,?,?,?,?,?,?,?,?)");
			for(int i = 0; i < 10000; i++){
				ps.setString(1, randomTitle());
				ps.setString(2, "北京");
				ps.setString(3, "南");
				ps.setInt(4, random(4));
				ps.setInt(5, random(2));
				ps.setInt(6, random(2));
				ps.setInt(7, random(1000000));
				ps.setInt(8, random(1000000));
				ps.setDate(9, Date.valueOf(genDate()));
				ps.setString(10, String.valueOf(random(1)));
				ps.addBatch();
				
			}
			ps.executeBatch();
			conn.commit();
		} catch (SQLException e) {
			conn.rollback();
			throw e;
		}finally{
			ps.close();
			conn.close();
		}
1 楼 isky 2008-11-27  
用 hibernate  无状态 批处理方法  例如: org.biernate.StatelessSession   z这个接口的方法,插入对象后,对象就变成了游离态的对象,而不是持久态对象了。

相关推荐

Global site tag (gtag.js) - Google Analytics