Commit 7193a482 by liuyongshuai

优化批量插入数据效率

parent 6afe41b2
...@@ -224,6 +224,53 @@ public class IphoneTrackServiceImpl implements IphoneTrackService { ...@@ -224,6 +224,53 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
List<Track> tracks = jsonArray.toJavaList(Track.class); List<Track> tracks = jsonArray.toJavaList(Track.class);
List<TrackVO> trackVOs = new ArrayList<TrackVO>(); List<TrackVO> trackVOs = new ArrayList<TrackVO>();
if(tracks != null && tracks.size() > 0){ if(tracks != null && tracks.size() > 0){
int limit = 120;//批处理量
int size = tracks.size();
long threadNum = size / limit;
for (int i = 0; i < threadNum + 1; i++) {
HandleThread thread = new HandleThread(tracks, i * limit, ((i + 1) * limit), trackVOs,obj);
thread.start();
}
resultMap.put("objectfromtype","IMSI");
resultMap.put("objectfromvalue",obj);
resultMap.put("data",trackVOs);
}else{
resultMap.put("objectfromtype","IMSI");
resultMap.put("objectfromvalue",obj);
resultMap.put("data",trackVOs);
}
}
}
return resultMap;
}
/**
* 多线程批处理
* by changchao
*/
class HandleThread extends Thread {
private List<Track> data;
private int start;
private int end;
private List<TrackVO> trackVOs;
private String obj;
public HandleThread(List<Track> data, int start, int end, List<TrackVO> trackVOs, String obj) {
this.data = data;
this.start = start;
this.end = end;
this.trackVOs = trackVOs;
this.obj=obj;
}
public void run() {
if (start > data.size()) {
return;
}
if (end > data.size()) {
end = data.size();
}
List<Track> tracks = data.subList(start, end); //从fromIndex(包含),到toIndex(不包含)
List<Track> paramTracks = new ArrayList<Track>(); List<Track> paramTracks = new ArrayList<Track>();
for (Track track : tracks ) { for (Track track : tracks ) {
if(track.getTimestamp() != 0){ if(track.getTimestamp() != 0){
...@@ -252,19 +299,16 @@ public class IphoneTrackServiceImpl implements IphoneTrackService { ...@@ -252,19 +299,16 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
if (paramTracks != null && paramTracks.size() > 0){ if (paramTracks != null && paramTracks.size() > 0){
trackRepository.save(paramTracks); trackRepository.save(paramTracks);
} }
resultMap.put("objectfromtype","IMSI");
resultMap.put("objectfromvalue",obj);
resultMap.put("data",trackVOs);
}else{
resultMap.put("objectfromtype","IMSI");
resultMap.put("objectfromvalue",obj);
resultMap.put("data",trackVOs);
}
}
} }
return resultMap;
} }
@Override @Override
public JSONObject getObjectRelatioNoSave(String obj) throws InterServiceException{ public JSONObject getObjectRelatioNoSave(String obj) throws InterServiceException{
try{ try{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment