Hallöchen allerseits...
Ich habe folgendes Problem:
3 Tabellen werden in der Datenbak ausgelesen (Oracle). Alle 3 Selects sind PreparedStatements. Das Auslesen geschieht parallel in 3 Threads. Jeder Thread hat jeweils eine Connection und 1 PrepareStatement. Mein Ziel ist es: das Auslesen so schnell wie möglich zu machen, nur irgendwie klappt das nicht ganz. Die selects haben jeweils so um die 20 Spalten und zur zeit werden so um die 500 Zeilen Selected. Die Zeiten die ich erziele schwanken sehr stark von
100 ms bis 2 sek.
die 3 Threads stocken manchmal richtig an der Stelle, wo ich die ResultSets in die Container-Objekte überführe.
als Beispiel für eine Tabelle einwenig Quellcode:
im Thread:
Und der Konstruktor, der da aufgerufen wird:
hat denn jemand eine Idee, wie ich es schneller und konstanter bekomme. Ich habe die Vermutung, dass JVM an der Stelle, wo diese Konstruktoren je nach Tabelle in der Schleife bis zu 500 mal (Ist ja eigentlich gar nicht so viel) aufgerufen werden, mit der Verteilung der Ressourcen einfach nicht zurecht kommt oder so... Ich hatte schon versucht, den Threads unterschiedliche Prioritäten zuzuweisen, aber so richtig was hat es nicht gebracht.
Ich habe folgendes Problem:
3 Tabellen werden in der Datenbak ausgelesen (Oracle). Alle 3 Selects sind PreparedStatements. Das Auslesen geschieht parallel in 3 Threads. Jeder Thread hat jeweils eine Connection und 1 PrepareStatement. Mein Ziel ist es: das Auslesen so schnell wie möglich zu machen, nur irgendwie klappt das nicht ganz. Die selects haben jeweils so um die 20 Spalten und zur zeit werden so um die 500 Zeilen Selected. Die Zeiten die ich erziele schwanken sehr stark von
100 ms bis 2 sek.
die 3 Threads stocken manchmal richtig an der Stelle, wo ich die ResultSets in die Container-Objekte überführe.
als Beispiel für eine Tabelle einwenig Quellcode:
im Thread:
Code:
private void fillAccounts() {
try {
ResultSet rs_accounts = prep_selectAccounts.executeQuery();
while (rs_accounts.next()) {
[b]AccountContainer accCont = new AccountContainer(rs_accounts);[/b]
resultList.add(accCont);
}
rs_accounts.close();
} catch (Exception sqle) {
sqle.printStackTrace();
//this.log.error(....);
}
}
Und der Konstruktor, der da aufgerufen wird:
Code:
public AccountContainer(ResultSet rs_accounts) {
try{
this.setBla1(rs_accounts.getDouble("BLA1"));
this.setBla2(rs_accounts.getString("BLA2"));
this.setBla3(rs_accounts.getDouble("BLA3"));
..............
this.setBla21(rs_accounts.getBoolean("BLA21"));
this.setBla22(rs_accounts.getString("BLA22"));
this.setBla23(rs_accounts.getDouble("BLA23"));
}
catch(SQLException sqle){
sqle.printStackTrace();
//this.log.error(sqle);
}
}
hat denn jemand eine Idee, wie ich es schneller und konstanter bekomme. Ich habe die Vermutung, dass JVM an der Stelle, wo diese Konstruktoren je nach Tabelle in der Schleife bis zu 500 mal (Ist ja eigentlich gar nicht so viel) aufgerufen werden, mit der Verteilung der Ressourcen einfach nicht zurecht kommt oder so... Ich hatte schon versucht, den Threads unterschiedliche Prioritäten zuzuweisen, aber so richtig was hat es nicht gebracht.