ubuntuusers.de

MySql ist zu langsam

Status: Gelöst | Ubuntu-Version: Ubuntu 8.04 (Hardy Heron)
Antworten |

sanitaeter

Anmeldungsdatum:
29. August 2008

Beiträge: 264

Hallo, ich habe ein Problem mit meinem MySql Server. Ich greife mit Windows Client´s über ODBC auf die MySql Datenbanken zu. Leider ist die Geschwindikeit zu langsam (ca. 30 Sekunden bis sich eine simple Tabelle aufbaut) Bei dem alten Server funktionierte das rasend schnell, obwohl der eine schlechtere Hardware hatte. Meine Hardware:

  • 2 GHz CPU

  • 4 GB RAM

  • LAN mit cat. 5e TP Kabeln

  • 100 Mbits NIC´s

  • Switche (fast Ethernet)

  • 170 GB freier Speicher auf HDD

Also an der Hardware liegt das bestimmt nicht. Den Versuch in der my.cnf "skip-name-resolve" einzutragen habe ich bereits erfolglos unternommen. Ich weiß dafür kann es ´zig Ursachen geben. Wer hilft mir?

bodensee

Anmeldungsdatum:
4. November 2006

Beiträge: 1971

sanitaeter schrieb:

Also an der Hardware liegt das bestimmt nicht. Den Versuch in der my.cnf "skip-name-resolve" einzutragen habe ich bereits erfolglos unternommen. Ich weiß dafür kann es ´zig Ursachen geben. Wer hilft mir?

Woher willst Du das denn wissen?

Performance Probleme an einer Datenbank können unterschiedliche Ursachen haben. Angefangen vom Client der abfrägt über das Netzwerk auf dem zuviel los ist bis hin zu schlechten Datenbankabfragen oder miserablen Indexen auf der DB selbst. Ich würde folgendermaßen vorgehen: Als erstes mal das Problem eingrenzen. Liegt es wirklich am DB Server und nicht an einem Client oder am Netzwerk? Logs auswerten. Was meldet denn der Datenbankserver bzw. die Datenbank, wenn eine Abfrage läuft? Wie groß ist denn die Datenbank? Werden denn regelmässig Reorg Jobs auf der DB laufen gelassen? Passen die Indexe? Und dann mal noch zu den Abfragen selbst. mache die Sinn? Wird bei der Abfrage die komplette DB durchforstet oder geladen oder wirklich nur das benötigte ( select * from usw )?

So in der Art würde ich das mal angehen.

ps: warum zwei Postings??

sanitaeter

(Themenstarter)

Anmeldungsdatum:
29. August 2008

Beiträge: 264

O.K. das muss ich abarbeiten. Die /var/log/mysl.log ist leer. Was noch auffällig ist, wenn ich mich mit dem Befehl "mysql" auf der Konsole einlogge und "show databases" abfrage bekomme ich lediglich die "informations_Schema" zu sehen. Die anderen DB (ca. 14) sehe ich, wenn ich mich in phpmyadmin einlogge. Das root PW von phpmyadmin funktioniert aber nicht, um mich als root an der mysql Konsole eizuloggen. Ich denke der Client ist O.K, weil der mit dem anderen Server funktioniert. Soweit ich weiß sind die DB´s nicht indiziert. Später mehr dazu.

bodensee

Anmeldungsdatum:
4. November 2006

Beiträge: 1971

sanitaeter schrieb:

O.K. das muss ich abarbeiten.

Viel Erfolg 😉

Soweit ich weiß sind die DB´s nicht indiziert. Später mehr dazu.

Wie gesagt, wenn die DB groß ist bzw. einzelne Tabellen und die bei jeder Anfrage jedesmal von Anfang bis Ende eingelesen werden müssen, könnte es ratsam sein Indexe anzulegen.

sanitaeter

(Themenstarter)

Anmeldungsdatum:
29. August 2008

Beiträge: 264

Woran erkenne ich, ob die DB´s indiziert sind? Weiß nicht wer da was gemacht hat.

sanitaeter

(Themenstarter)

Anmeldungsdatum:
29. August 2008

Beiträge: 264

Woran erkenne ich, ob die DB´s indiziert sind? Weiß nicht wer da was gemacht hat.

bodensee

Anmeldungsdatum:
4. November 2006

Beiträge: 1971

sanitaeter schrieb:

Woran erkenne ich, ob die DB´s indiziert sind? Weiß nicht wer da was gemacht hat.

Also mal vorneweg, das Thema Datenbank und Datenbanktuning bzw. erkennen und beheben von Performanceproblemen ist ziemlich komplex. Wenn man keinen Plan von Datenbanken hat, sollte man daran nicht herumpfuschen! Ich würde mal generell einen Kurs und Bücher zum Thema MySQL Datenbank empfehlen.

Um die Abfragen zu prüfen, bzw. die SQL-Anweisungen auszuwerten, gibt es ein Tool - Abfrageoptimierung bzw. query optimizer. Damit kann man die DB Abfragen bzw. SQL Statements testen ob man sie in irgend einer Form optimieren kann bzw. ob sie zu optimieren sind. Was man auch prüfen könnte, ob ggf. verschiedene Tabellen Sperren haben, die sich in irgend einer Weise gegenseitig blockieren.

Wer ist denn der DB Admin bei Euch?

sanitaeter

(Themenstarter)

Anmeldungsdatum:
29. August 2008

Beiträge: 264

Der Admin ist nicht da, ich soll das übernehmen. Ich erkläre mal wie ich das System aufgesetzt habe.

1. Installation von BS Ubuntu 8.04

2. Installation von Xampp

3. Kopieren des Verzeichnisses /var/lib/mysql mit den DB´s des alten Systems

Es sind ca 14 DB´s mit jeweils ca. 10-40 Tabellen. Eine Datanbank die ich nicht zuordnen kann hat ca. 200 und egroupware hat nochmal 122. Das sind dann etwa 322 Tabellen mehr, als auf dem alten Server gelaufen sind. Könnte das relevant sein, für die langsamere Performance? Nächste Frage: Wo finde ich den query optimizer? ☺ Danke

bodensee

Anmeldungsdatum:
4. November 2006

Beiträge: 1971

sanitaeter schrieb:

Der Admin ist nicht da, ich soll das übernehmen.

Weigere Dich! Das macht so absolut keinen Sinn!

Ich erkläre mal wie ich das System aufgesetzt habe. 1. Installation von BS Ubuntu 8.04 2. Installation von Xampp 3. Kopieren des Verzeichnisses /var/lib/mysql mit den DB´s des alten Systems

Warum kein backup der alten DBs und ein recovery im neuen System? Oder Import und Export?

Es sind ca 14 DB´s mit jeweils ca. 10-40 Tabellen. Eine Datanbank die ich nicht zuordnen kann hat ca. 200 und egroupware hat nochmal 122. Das sind dann etwa 322 Tabellen mehr, als auf dem alten Server gelaufen sind. Könnte das relevant sein, für die langsamere Performance?

Das kommt auf die Größe bzw. die menge der Einträge in den Tabellen an. Eine Tabelle mit 1000 Einträgen ist schneller eingelesen als eine Tabelle mit 100000000000 Einträgen 😉

Nächste Frage: Wo finde ich den query optimizer?

Handbuch?

sanitaeter

(Themenstarter)

Anmeldungsdatum:
29. August 2008

Beiträge: 264

Ich nochmal, habe gerade gelesen, dass man den mysql Daemon immer anständig herunterfahren soll und nicht einfach beim Neustart "killen" soll. Das habe ich aber schon des öfteren getan. Gibt es ergendeine Möglichkeit zu testen ob die Datenbank noch intakt ist, außer der darauf zuzugreifen? Und ich muss nochmal die Frage stellen, warum ich in der mysql Konsole nicht meine Databases angezeigt bekomme. Liegt das möglicherwqeise an den Berechtigungen?

sanitaeter

(Themenstarter)

Anmeldungsdatum:
29. August 2008

Beiträge: 264

Ich habe die vorerst nicht benötigten Datenbanken verschoben, aber trotzdem habe ich dieselbe schlechte Performance. Es dauert 30 sek. bis sich eine simple Tabelle öffnet. Ein Ping auf den Server hat die normale Geschwindigkeit (nur mal so am Rande). Wenn ich die ODBC Treiber mit den Datenbanken verknüpfe und den Test mache dauert es auch ungewöhnlich lange bis das Ergebnis erscheint (success: connection was made). Ich weiß das ist nicht viel Information, vielleicht hilft´s trotzdem. Warum ist meine /var/log/mysql.log eigentlich leer?

bodensee

Anmeldungsdatum:
4. November 2006

Beiträge: 1971

sanitaeter schrieb:

Ich habe die vorerst nicht benötigten Datenbanken verschoben, aber trotzdem habe ich dieselbe schlechte Performance.

Das problem wird nicht die Menge der einzelnen datenbanken sein.

Es dauert 30 sek. bis sich eine simple Tabelle öffnet.

Auf jeder der Datenbanken oder nur bei einer bestimmten?

Ein Ping auf den Server hat die normale Geschwindigkeit (nur mal so am Rande).

Das hat weniger mit dem netzwerk zu tun 😉

Wenn ich die ODBC Treiber mit den Datenbanken verknüpfe und den Test mache dauert es auch ungewöhnlich lange bis das Ergebnis erscheint (success: connection was made).

Schonmal aktuelle ODBC Treiber versucht?

Warum ist meine /var/log/mysql.log eigentlich leer?

Weil in der Konfiguration vom DB Server nichts angegeben ist was er loggen soll bzw. das Log Level zu hoch eingestellt ist?

sanitaeter

(Themenstarter)

Anmeldungsdatum:
29. August 2008

Beiträge: 264

Hallo Bodensee, der neue ODBC Treiber läßt sich zwar installieren, allerdings bekomme ich folgende Fehlermeldung wenn ich den benutzen möchte: "Die Setup Routinen für den MySql 5.1. Driver- ODBC Treiber konnten nicht geladen werden". Vielleicht doch nicht kompatibel mit Windows 98SE?

bodensee

Anmeldungsdatum:
4. November 2006

Beiträge: 1971

sanitaeter schrieb:

Hallo Bodensee, der neue ODBC Treiber läßt sich zwar installieren, allerdings bekomme ich folgende Fehlermeldung wenn ich den benutzen möchte: "Die Setup Routinen für den MySql 5.1. Driver- ODBC Treiber konnten nicht geladen werden". Vielleicht doch nicht kompatibel mit Windows 98SE?

Ja um Gottes Willen, wer nutzt denn noch so ein Scheisssystem?

eXcessive

Avatar von eXcessive

Anmeldungsdatum:
10. August 2008

Beiträge: 267

Wohnort: Wuppertal

sanitaeter schrieb:

Das root PW von phpmyadmin funktioniert aber nicht, um mich als root an der mysql Konsole eizuloggen.

Der Nutzer root für die mySQL Datenbank hat nichts mit dem Nutzer root auf Deinem System zu tun.

Antworten |