今天由于项目需要进行了数据库大批量数据操作的实验:
由服务程序生成10万条记录,竟将其插入到SQLSERVER数据库中
第一次:刚开始用三层架构的Model 模式,即创建实体对象并给对象赋值,并且每次都关闭conn,程序循环执行10万次共用了80多分钟。
第二次:conn只打开一次,运行10万次共用了30分钟。
第三次:直接用字符串连接sql语句进行执行,抛弃model用了,执行10万次共用了5分钟。
第四次:用StringBuilder.append()操作sql语句,又节省了20多秒。
第五次:将所有语句(10万个)都用StringBuilder进行连接,结果SQLSERVER缓存溢出,出现异常。
第六次:将所有生成的数据都插入到datatable中然后用adapter.update到数据库中,使用时间未发生变化。
第七次:将所有生成的数据都插入到datatable中(用时2.1秒),然后用sqlbulkcopy的writerToServer方法(4.8秒),10万条数据居然6.9秒。
sqlbulkcopy太牛叉了