Hi Leute,
ich möchte einige Datensätze aus meiner Datenbank auslesen und diese in mehrere .txt Datein speichern, sozusagen ein dump der Datenbank.
Das habe ich auch schon implementiert, dass sind die Funktionen dafür:
Hier stellt sich mir die Frage:
Lohnt es sich, dies in mehreren Threads erledigen zu lassen?
Also dass ich die Funktionen writeUserFile und writeBookFile in jeweils einem eigenen Thread ablaufen lasse?
Meine Intuition sagt mir, dass es nichts bringt, da die Festplatte der Flaschenhals dabei ist und auf Grund des seriellen Schreibvorganges nicht parallel schreiben kann, was ja durch mehrere Threads ermöglicht werden soll, nämlich parallele Abarbeitung.
Mfg
Mel
ich möchte einige Datensätze aus meiner Datenbank auslesen und diese in mehrere .txt Datein speichern, sozusagen ein dump der Datenbank.
Das habe ich auch schon implementiert, dass sind die Funktionen dafür:
Java:
public static boolean saveDataForHandy(String path){
try{
EntityManager manager = Main.getEntityManager();
Query q = manager.createNamedQuery("User.findAll");
List<User> user = q.getResultList();
writeUserFile(user,path);
q = manager.createNamedQuery("Book.findAll");
List<Book> books = q.getResultList();
writeBookFile(books,path);
}
catch(Exception e){
e.printStackTrace();
return false;
}
return true;
}
private static void writeBookFile(List<Book> books, String path) throws Exception{
try{
BufferedWriter bWriter = new BufferedWriter(new FileWriter(path+"books.txt"));
String semi = ";";
for(Book book : books){
bWriter.write(book.getIsbn().concat(semi).concat(book.getTitle()).concat(semi).concat(book.getOwner()).concat(semi));
bWriter.newLine();
}
bWriter.flush();
bWriter.close();
}
catch(Exception e){
throw e;
}
}
private static void writeUserFile(List<User> users, String path) throws Exception{
try{
String semi = ";";
BufferedWriter bWriter = new BufferedWriter(new FileWriter(path+"user.txt"));
for(User user : users)
bWriter.write(user.getName().concat(semi));
bWriter.flush();
bWriter.close();
}
catch(Exception e){
throw e;
}
}
Hier stellt sich mir die Frage:
Lohnt es sich, dies in mehreren Threads erledigen zu lassen?
Also dass ich die Funktionen writeUserFile und writeBookFile in jeweils einem eigenen Thread ablaufen lasse?
Meine Intuition sagt mir, dass es nichts bringt, da die Festplatte der Flaschenhals dabei ist und auf Grund des seriellen Schreibvorganges nicht parallel schreiben kann, was ja durch mehrere Threads ermöglicht werden soll, nämlich parallele Abarbeitung.
Mfg
Mel