26 个解决方案
#1
hibernate批量删除或更新优化, 有意想不到的结果,也许这个可以实现jdbc啊executeSQL
#2
使用jdbcTemplate.execute(String sql);
#3
批处理 executebatch
#4
本人在此之前没有接触过hibernate批量更新,经大神指点,马上查阅资料,发现资料中的批量更新,得先把数据一次性查询出来,可我的十万条数据不能做到一次性查询啊!能告诉具体怎么做吗?
#5
对于这种list的数据更新,我一般的做法是先拼凑多条sql语句数组,然后批量执行sql数组。
这种方法可以提高io速率,但浪费了内存。
这种方法可以提高io速率,但浪费了内存。
#6
这种做法与一条一条的执行有什么不同吗?
#7
用PreparedStatement的executeBatch来做
#8
什么系统需要10W条数据更新?
#9
可以减少与数据库交互时数据传输的次数
#10
大数据处理 估计都分区。。
#11
http://blog.csdn.net/uohzoaix/article/details/7372427 这里有你需要的
#12
jdbc批处理非常适合你这种情况,并且效率极高,大致代码如下
conn = JdbcUtil.getConnection();
i++;
String sql1 = "insert into user(name,password,email,birthday)
values('kkk','123','abc@sina.com','1978-08-08')";
String sql2 = "update user set password='123456' where id=3";
st = conn.createStatement();
st.addBatch(sql1); //把SQL语句加入到批命令中
st.addBatch(sql2); //把SQL语句加入到批命令中
if(i%10000==0)
st.executeBatch();
#13
批处理 executebatch
正解
#14
http://blog.csdn.net/uohzoaix/article/details/7372427 这里有你需要的
这里的批量更新操作where条件是固定的,比如更新年龄大于1的记录的年龄都加1,where 条件就是age>1;而我的where 条件是不一样的,我要实现的是一个类似将id为1的年龄更新为2,将id为2的年龄更新为5,将id为3的年龄更新为2.....,
#15
用MySQL存储过程
#16
想提高速度 就需要在内存中操作。
#17
关注一下,坐等最佳方案。
#18
jdbc批量删除修改更新,比框架的快一些 或者说存储过程 在操作的时候
记得及时的释放资源!
记得及时的释放资源!
#19
PreparedStatement 的 executeBatch 是应该的, Hibernate 本身也是依赖于 JDBC 的嘛。总之我们要避免不必要的修改和减少网络通信的次数还要“提示数据库我们批量执行不需要每次重新编译SQL语句”,像Oracle 自动对编译过的SQL 缓存的技术并不见得所有数据库都默认开启需要我们通过 JDBC PreparedStatement 明确地提示数据库这样去做。
如果本来就是批量处理的,或许可以用数据库提供的从文件导入的工具来做,当然这就不通用了,主要是给夜间批量导入导出数据准备的,每家厂商的做法不一样,还可能要求导入和导出的双方版本相同。
如果本来就是批量处理的,或许可以用数据库提供的从文件导入的工具来做,当然这就不通用了,主要是给夜间批量导入导出数据准备的,每家厂商的做法不一样,还可能要求导入和导出的双方版本相同。
#20
oracle么?
#21
不能使用 存储过程吗?这样更快一点。
#22
最好的办法是 存储过程
#23
用存储过程吧
#24
什么系统需要10W条数据更新?
#25
楼主我遇到和你一样的问题了,请问你是怎么解决的。
#26
批处理 executebatch
赞同
#1
hibernate批量删除或更新优化, 有意想不到的结果,也许这个可以实现jdbc啊executeSQL
#2
使用jdbcTemplate.execute(String sql);
#3
批处理 executebatch
#4
hibernate批量删除或更新优化, 有意想不到的结果,也许这个可以实现jdbc啊executeSQL
本人在此之前没有接触过hibernate批量更新,经大神指点,马上查阅资料,发现资料中的批量更新,得先把数据一次性查询出来,可我的十万条数据不能做到一次性查询啊!能告诉具体怎么做吗?
#5
对于这种list的数据更新,我一般的做法是先拼凑多条sql语句数组,然后批量执行sql数组。
这种方法可以提高io速率,但浪费了内存。
这种方法可以提高io速率,但浪费了内存。
#6
对于这种list的数据更新,我一般的做法是先拼凑多条sql语句数组,然后批量执行sql数组。
这种方法可以提高io速率,但浪费了内存。
这种做法与一条一条的执行有什么不同吗?
#7
用PreparedStatement的executeBatch来做
#8
什么系统需要10W条数据更新?
#9
对于这种list的数据更新,我一般的做法是先拼凑多条sql语句数组,然后批量执行sql数组。
这种方法可以提高io速率,但浪费了内存。
这种做法与一条一条的执行有什么不同吗?
可以减少与数据库交互时数据传输的次数
#10
大数据处理 估计都分区。。
#11
http://blog.csdn.net/uohzoaix/article/details/7372427 这里有你需要的
#12
jdbc批处理非常适合你这种情况,并且效率极高,大致代码如下
conn = JdbcUtil.getConnection();
i++;
String sql1 = "insert into user(name,password,email,birthday)
values('kkk','123','abc@sina.com','1978-08-08')";
String sql2 = "update user set password='123456' where id=3";
st = conn.createStatement();
st.addBatch(sql1); //把SQL语句加入到批命令中
st.addBatch(sql2); //把SQL语句加入到批命令中
if(i%10000==0)
st.executeBatch();
#13
批处理 executebatch
正解
#14
http://blog.csdn.net/uohzoaix/article/details/7372427 这里有你需要的
这里的批量更新操作where条件是固定的,比如更新年龄大于1的记录的年龄都加1,where 条件就是age>1;而我的where 条件是不一样的,我要实现的是一个类似将id为1的年龄更新为2,将id为2的年龄更新为5,将id为3的年龄更新为2.....,
#15
用MySQL存储过程
#16
想提高速度 就需要在内存中操作。
#17
关注一下,坐等最佳方案。
#18
jdbc批量删除修改更新,比框架的快一些 或者说存储过程 在操作的时候
记得及时的释放资源!
记得及时的释放资源!
#19
PreparedStatement 的 executeBatch 是应该的, Hibernate 本身也是依赖于 JDBC 的嘛。总之我们要避免不必要的修改和减少网络通信的次数还要“提示数据库我们批量执行不需要每次重新编译SQL语句”,像Oracle 自动对编译过的SQL 缓存的技术并不见得所有数据库都默认开启需要我们通过 JDBC PreparedStatement 明确地提示数据库这样去做。
如果本来就是批量处理的,或许可以用数据库提供的从文件导入的工具来做,当然这就不通用了,主要是给夜间批量导入导出数据准备的,每家厂商的做法不一样,还可能要求导入和导出的双方版本相同。
如果本来就是批量处理的,或许可以用数据库提供的从文件导入的工具来做,当然这就不通用了,主要是给夜间批量导入导出数据准备的,每家厂商的做法不一样,还可能要求导入和导出的双方版本相同。
#20
oracle么?
#21
不能使用 存储过程吗?这样更快一点。
#22
最好的办法是 存储过程
#23
用存储过程吧
#24
什么系统需要10W条数据更新?
#25
楼主我遇到和你一样的问题了,请问你是怎么解决的。
#26
批处理 executebatch
赞同