MySQL Auslesung Datenbank sehr langsam

sada

Mitglied
Hallo

Habe eine MYSQL datenbank erstellt. Sie besteht aus 6 spalten und darin sind 10 Infos (60 elemente).
Ich habe nun einen Code geschrieben, welches mir auf einer JTextarea alle elemente anzeigt. Es funktioniert schon, aber es braucht sehr viel zeit bis alles geladen ist. Das Ziel wäre eine Kundendatebank eines Geschäfts mit Ca 300 kunden (1800elemente).

Ist es normal, dass es soo langsam ist? (10Mbps ist die internetleitung).
Es dauert momentan 55s bis alle elemte geladen sind.

Wie machen die Profis solche Kundendatenbanken? Soll ich während dem Starten des Programms die Datenbank auf ein lokales file speichern (z.B .txt) kann damit schneller hantiert werden?

vielen dank für die Rückmeldungen.

code: daten der datenbank werden in eine ArrayList geschrieben
Java:
public static ArrayList<String> DBauslisten(){
		ArrayList<String> inhalt = new ArrayList<String>();
		try {
			rs = stmt.executeQuery("SELECT * FROM " + tableName);
			while (rs.next()) {
				//System.out.println(rs.getString("name"));
				inhalt.add(rs.getString("kunde"));
				inhalt.add(rs.getString("adresse"));
				inhalt.add(rs.getString("plz"));
				inhalt.add(rs.getString("ort"));
				inhalt.add(rs.getString("tel"));
				inhalt.add(rs.getString("kundenNr"));
				}
			//}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return inhalt;
	}

Code: ArrayList wird in der JTextarea angezeigt.
Java:
]list.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent ae)
            {
            	ausgabe.setText(null);
            	for(int i =0 ; 0<=SQLHelper.DBauslisten().size(); i++){
            	if((((i+1)%6) !=0)){
            		if(SQLHelper.DBauslisten().get(i).length()>=15){
            		ausgabe.append((SQLHelper.DBauslisten().get(i)) + "\t");	
            		}else{
            			ausgabe.append((SQLHelper.DBauslisten().get(i)) + "\t\t");	
            		}
            		}else{
            		ausgabe.append(SQLHelper.DBauslisten().get(i) + "\n");
            		}
            	}	
            }
        });
 
Einerseits ist eine ArrayList (genau betrachtet) immer langsamer, als ein Array.
Da du ja die Spalten und Zeilenzahlen kennst, solltest du besser ein Array verwenden

Das sollte aber nicht das Problem sein

Sind es immer 55s oder variiert das großartig
Es kann ja sein, dass dein DBServer (Frage: wie machst du das eigentlich mit dem Server?) gerade belastet war

Im Code an sich kann ich keinen "Fehler" erkennen...

3. Frage: Wie bestimmst du die Zeit, die verstreicht?

Gruß eMmiE
 
Ah oke. Ja ich versuche es mal mit einem array. Wusste nicht, dass die liste langsamer ist.

Habe es 2mal mit einer stoppuhr die zeit gestoppt, vom moment ich den butten drücke, bis die inhalte in textarea angezeigt werde.
.ich habe eine datenbank bei db4free.org erstellt. Extra für tests mit datenbanken und man kann direkt mit java drsuf zugreiffen. Weiss nicht eie "proffesionell" das ist.
 
Hast du mal mit System.currentTimeMillis() nachgemessen ob wirklich das Laden von der DB das Problem ist?
 
Zuletzt bearbeitet:
Installiere Dir XAMP ioder MAMP und mach eine lokale mySQL Datenbank. Wenn die immer noch langsam ist, dann kannst du anfangen den Fehler zu suchen. Wie sagte meine Oma schon immer "Was nix kost ist auch nix" und meistens hatte sie damit recht.

Gruß

Claus
 
Hallo also ich habe es heute morgen nochmals probiert nun bin ich auf 5s gekommen. (damit kann ich leben)

Vielleicht hat es damit zusammengehangen, das viele leute im netzwerk warn. die die .jar datei wird auf einem notebook mit wlan ausgeführt. Beim entgültigen Ort wird sie dann auf einem Tower-PC, welcher mit ethernetkabel direkt am router/Switch angeschlossen wird.

Wie erwähnt bin ich bei db4free.org. Viele hoster lassen meiner "erfahrung" nicht zu, dass direkt auf die datenbank zugegriffen werden kann. Kennt ihr hoster die das erlauben (darf auch etwas kosten).
Wie machen das programme von grossunternehmen? greifen die auch direkt per Mysql-connector oder wie wird das gehandhabt.

Ich füll mal die Datenbank mit 400Kunden und lasse sie dann mal auslisten.
 
DB gehören zu den wichtigsten Resourcen in einem Unternehmen.

Daher beschäftigen sich ganze Abteilungen mit der Installation und dem Betrieb (24/7) davon. Hier sind häufig mehrere DBA's am Werk, die wissen wie eine DB optimiert werden kann, um einen Betrieb zu garantieren.

Folglich verlassen sich derartige Unternehmen nicht darauf, das ein x-beliebiger Hoster eine DB betreibt, zumal die Daten viel zu wichtig sind, das ein Externer die in die Finger kriegt.

In Unternehmen mit denen ich zu tun hatte, sind für DB auch die ganz grossen "Eisen" in Betrieb. Und hier reden wir von Oracle oder IBM auf Maschinen mit TB-RAM. Alleine eine Sicherung von solchen Dingen zu machen, ist schon eine Herausforderung.

Deshalb spielt mySQL echt in einer anderen Liga😀

Aber für Entwickler muss es ja nicht eine grosse Produktionsdatenbank sein. Da reicht oft eine kleine mySQL oder andere (vielleicht sogar) embedded DB. Man muss sich nur klar sein, dass später bei Produktionsaufnahme alles mit einer "grossen" DB funzen muss.
 
nö eher das gegenteil, er sollte es tunlichst unterlassen die ganze Tabelle auszulesen und dann auch noch mit einem
SQL:
"select * from "+tablename
wenn ich sowas sehe läuft es mir immer kalt den Rücken runter
 
nö eher das gegenteil, er sollte es tunlichst unterlassen die ganze Tabelle auszulesen und dann auch noch mit einem
SQL:
"select * from "+tablename
wenn ich sowas sehe läuft es mir immer kalt den Rücken runter

Das hab ich mir abgewöhnt. Ich musste dann immer mit Heizdecke vorm Rechner sitzen wenn ich in irgendein PHP Forum geschaut habe 😀

Gruß

Claus
 

Neue Themen


Zurück
Oben