万次对数据库查询操作 效率非常慢,如何解决?
现在是这样的
我需要批量导入 用户:(导入内容为:用户编号)
导入的同时,对用户进行业务校验,通过校验的就可以入库。
每一次校验都得到数据库里取相关信息,用户有3万条,这样执行速度非常慢?
大侠 帮出出主意
[b]问题补充:[/b]
关键是 3万条记录 进行3万次校验 要做3万次数据库查询,
用户编号是加密的,是唯一的,也是是查询必要条件,每一用户查询出来的记录是一条
慢就慢在 查询数据库
万次对数据库查询操作 效率非常慢,如何解决?
现在是这样的
我需要批量导入 用户:(导入内容为:用户编号)
导入的同时,对用户进行业务校验,通过校验的就可以入库。
每一次校验都得到数据库里取相关信息,用户有3万条,这样执行速度非常慢?
大侠 帮出出主意
[b]问题补充:[/b]
关键是 3万条记录 进行3万次校验 要做3万次数据库查询,
用户编号是加密的,是唯一的,也是是查询必要条件,每一用户查询出来的记录是一条
慢就慢在 查询数据库
用线程池,大概10条线程左右,把3万条作业分给10个线程。估计速度大概提高3倍左右。当然,线程不是越多越好,视CPU的个数和处理能力而定,通常多CPU的系统用线程的效率还是非常明显的。
可以用spring和hibernate快速搭建这样一个基于线程的导入平台。假如你的数据库访问本来就是Hibernate的话。就更简便了。起一个新项目,把原来平台的Hibernate的mapping和持久化类直接拷贝过来就可以直接用。其实就是搭建一个快速的只有数据库访问的小系统。用单个类启动spring就可以用,而且这个小系统可以重复使用,只需要修改一下配置,用工具从数据库生成一下Hibernate的mapping就可以了。