Hi!
Ich hab das Problem, dass meine MySQL-Datenbank-Abfrage meinen Heap-Space sprengt..
...dabei habe ich Ihn schon auf 4096 MB gepusht..
Vielleicht hat einer ne Ahnung warum.. Wäre für nen Tipp sehr dankbar!! Hatte erst den Verdacht, dass die ResultSets im Speicher bleiben und da es sich ja um ne doppelte for-Schleife handelt und ich zuerst auch die ResultSets und Statements nicht geschlossen hatte. Nun schleiße ich Sie aber beide, wobei das RS ja automatisch mit dem Statement geschlossen werden müßte!?! ???:L
Gut, es ist ev nicht die schnellste Implementierung, aber so wie ich es gelöst habe ,arbeitet es zumindest korrekt..
Kurz zur Erklärung: Da ich mehrere Abfrage etc mit der DB mache wird die Verbindung einmal zum Programmstart hergestellt und bleibt dann geöffnet.
ICh habe meine DB-Spalten nummeriert, daher die SAchen mit 05,06,...
Ich pack den Code mal unten ran..
Vielen Dank schonmal!!
Gruß, Bazizilinho
Ich hab das Problem, dass meine MySQL-Datenbank-Abfrage meinen Heap-Space sprengt..
...dabei habe ich Ihn schon auf 4096 MB gepusht..
Vielleicht hat einer ne Ahnung warum.. Wäre für nen Tipp sehr dankbar!! Hatte erst den Verdacht, dass die ResultSets im Speicher bleiben und da es sich ja um ne doppelte for-Schleife handelt und ich zuerst auch die ResultSets und Statements nicht geschlossen hatte. Nun schleiße ich Sie aber beide, wobei das RS ja automatisch mit dem Statement geschlossen werden müßte!?! ???:L
Gut, es ist ev nicht die schnellste Implementierung, aber so wie ich es gelöst habe ,arbeitet es zumindest korrekt..
Kurz zur Erklärung: Da ich mehrere Abfrage etc mit der DB mache wird die Verbindung einmal zum Programmstart hergestellt und bleibt dann geöffnet.
ICh habe meine DB-Spalten nummeriert, daher die SAchen mit 05,06,...
Ich pack den Code mal unten ran..
Vielen Dank schonmal!!
Java:
try {
uhrzeit = sdd.format(new Date());
filo_g.log.insert(uhrzeit+" now computing colours for hit and prio on rank (without prepaid)! \n",0);
for (int rank_nr = 1; rank_nr <= 10; rank_nr++) {
String column_nr = "";
if (rank_nr == 1) column_nr = "05";
else if (rank_nr == 2) column_nr = "06";
else if (rank_nr == 3) column_nr = "07";
else if (rank_nr == 4) column_nr = "08";
else if (rank_nr == 5) column_nr = "09";
else if (rank_nr == 6) column_nr = "10";
else if (rank_nr == 7) column_nr = "11";
else if (rank_nr == 8) column_nr = "12";
else if (rank_nr == 9) column_nr = "13";
else if (rank_nr == 10) column_nr = "14";
for (int usages_count = 0; usages_count < usages.length; usages_count++) {
Statement stmt_h_p_green = null;
ResultSet rs_h_p_green;
String query_h_p_green;
stmt_h_p_green = conn_results.createStatement();
query_h_p_green = "SELECT vv_03_plz, vv_09_carrier_id FROM `powerdata`.`vv_data` where vv_00_date_of_import = '1111-11-11' AND vv_02_usage = '"+usages[usages_count]+"' AND vv_31_rank_postpaid = '"+rank_nr+"' group by vv_03_plz;";
rs_h_p_green = stmt_h_p_green.executeQuery(query_h_p_green);
ArrayList<Integer> h_p_green_zips = new ArrayList<Integer>();
rs_h_p_green.beforeFirst();
while(rs_h_p_green.next()) {
if (rs_h_p_green.getInt(2) == 6600 || rs_h_p_green.getInt(2) == 6653) {
h_p_green_zips.add(rs_h_p_green.getInt(1));
}
}
conn_results.setAutoCommit(false);
rs_h_p_green.close();
stmt_h_p_green.close();
PreparedStatement prest_hp = null;
Iterator iterate = h_p_green_zips.iterator();
while (iterate.hasNext()) {
String prep_sql = "UPDATE plz_result_"+usages[usages_count]+" SET result_"+usages[usages_count]+"_"+column_nr+"_rank"+rank_nr+" = ? WHERE result_"+usages[usages_count]+"_01_plz ='"+iterate.next().toString()+"'";
prest_hp = (PreparedStatement) conn_results.prepareStatement(prep_sql);
prest_hp.setString(1, "T_00_HIT_and_Prio");
prest_hp.addBatch();
int[] update_counts_colours = prest_hp.executeBatch();
}
h_p_green_zips.clear();
conn_results.commit();
conn_results.setAutoCommit(true);
prest_hp.clearBatch();
uhrzeit = sdd.format(new Date());
filo_g.log.insert(uhrzeit+" Colour for HIT and Prio were set for usage "+usages[usages_count]+" and rank "+rank_nr+"!! \n",0);
}
}
}
catch (Exception e) {
uhrzeit = sdd.format(new Date());
filo_g.log.insert(uhrzeit+" error when setting hit and prio top ranks to green! "+e.toString()+" \n",0);
System.out.println("Fehler beim Faerben der Top Positions von Hit und Prio "+e.toString());
}
Gruß, Bazizilinho