Vespaforum.de... das Vespa Forum GT GTS LX S ET PX

Das Forum für die moderne Vespa! ... Granturismo, GT, GTS, GTV, LX, LXS, LXV, ET, PX und mehr ...
Aktuelle Zeit: Di 17. Okt 2017, 02:04

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 44 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: Mysql Profis on Board?
BeitragVerfasst: Fr 16. Nov 2012, 16:15 
Offline
Administrator
Benutzeravatar

Registriert: Di 9. Jun 2009, 10:44
Beiträge: 1382
Wohnort: München
Vespa: ET4+2*GT125+GT125ie
Land: Deutschland/Bayern
Gibts hier den ein oder anderen Mysql Profi? :)

Diese Abfrage scheint extrem langsam abzulaufen (>3s)
Code:
SELECT f.*, t.topic_title, t.topic_id, t.topic_moved_id,
t.topic_last_post_id FROM (phpbb3_forums f) LEFT JOIN phpbb3_topics t ON
(f.forum_last_post_id = t.topic_last_post_id) ORDER BY f.left_id;


gehört nach googelei wohl zu dem Mod "NV advanced last topic titles"
(also die Überschriften der letzten Beiträge in der Forumsübersicht)
Gestern hab ich ansich die letzte Version eingespielt, aber die Verbesserung ist eher gering.

Jemand eine Idee, wie man das weiter optimieren kann?
Schubbi?

Gruß Flo

_________________
http://www.vespaforum.de


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Mysql Profis on Board?
BeitragVerfasst: Fr 16. Nov 2012, 16:39 
Offline
Benutzeravatar

Registriert: Mi 24. Jun 2009, 17:53
Beiträge: 759
Vespa: Vespa GTS 125
Land: Österreich
Hi,

sind die spalten forum_last_post_id, topic_last_post_id und left_id indiziert?

Zylinderkopf

_________________
Vespa GTS | Vespa LX | Vespa ET | Vespa 946 | Vespa PX | Vespa PK | Vespa Primavera | Piaggio Leader | Piaggio Quasar | Piaggio Lem | Piaggio Skipper | Piaggio Hexagon | Piaggio Carnaby | Piaggio Beverly | Piaggio MP3 | Piaggio X7 | Piaggio X8 | Piaggio X9 | Piaggio X10 | Vespa 98 | Vespa 50 | Vespa 125 Nuova


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Mysql Profis on Board?
BeitragVerfasst: Fr 16. Nov 2012, 17:01 
Offline
Administrator
Benutzeravatar

Registriert: Di 9. Jun 2009, 10:44
Beiträge: 1382
Wohnort: München
Vespa: ET4+2*GT125+GT125ie
Land: Deutschland/Bayern
Was heißt denn das und wie stell ich das fest?

_________________
http://www.vespaforum.de


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Mysql Profis on Board?
BeitragVerfasst: Fr 16. Nov 2012, 17:07 
Offline
Benutzeravatar

Registriert: Fr 19. Jun 2009, 17:51
Beiträge: 2307
Wohnort: Klein Hollywood
Vespa: GTSPXV 550
Land: Deutschland
Kannst Du die Abfrage bearbeiten?

Dann mach mal das SELECT mit "LIMIT 20".
Da kannst Du die Ergebnismenge auf die ersten 20 Treffer reduzieren.

Code:
SELECT f.*, t.topic_title, t.topic_id, t.topic_moved_id, t.topic_last_post_id

FROM (phpbb3_forums f) LEFT JOIN phpbb3_topics t ON (f.forum_last_post_id = t.topic_last_post_id) ORDER BY f.left_id

LIMIT 20;



gmu

_________________
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Mysql Profis on Board?
BeitragVerfasst: Fr 16. Nov 2012, 17:10 
Offline
Benutzeravatar

Registriert: Fr 19. Jun 2009, 17:51
Beiträge: 2307
Wohnort: Klein Hollywood
Vespa: GTSPXV 550
Land: Deutschland
Flori hat geschrieben:
Was heißt denn das und wie stell ich das fest?



Code:
SHOW KEYS FROM <Tabellenname>


Bsp:

Code:
SHOW KEYS FROM phpbb3_forums;
SHOW KEYS FROM phpbb3_topics;

_________________
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Mysql Profis on Board?
BeitragVerfasst: Fr 16. Nov 2012, 17:17 
Offline
Benutzeravatar

Registriert: Mi 24. Jun 2009, 17:53
Beiträge: 759
Vespa: Vespa GTS 125
Land: Österreich
Ein Index ist eine "Vor-Sortierung" und beschleunigt das Abfragen:
http://dev.mysql.com/doc/refman/5.1/de/ ... dexes.html
Einfach erklärt: Man muss nicht jedesmal beim Abfragen sortieren/indizieren, sondern die Sortierung wird einem beim Abspeichern erstellt und bleibt dann erhalten. Manchmal hilft es, den Index neu anzulegen, hier aber eher nicht, tippe ich.
Wenn du das standardmäßige phpbb-Datenbankdesign verwendest, dann ist das aber sicher richtig eingestellt.

Ist deine Abfrage nicht überhaupt etwas umständlich formuliert, wie wäre es etwa so:
Code:
SELECT f.*, t.topic_title, t.topic_id, t.topic_moved_id,
t.topic_last_post_id FROM f, t WHERE f.forum_last_post_id = t.topic_last_post_id ORDER BY f.left_id;


gmu's "LIMIT 20" ist auch ein heißer Tipp, denn deine Abfrage liefert eine riesige Ergebnismenge.

Zylinderkopf

_________________
Vespa GTS | Vespa LX | Vespa ET | Vespa 946 | Vespa PX | Vespa PK | Vespa Primavera | Piaggio Leader | Piaggio Quasar | Piaggio Lem | Piaggio Skipper | Piaggio Hexagon | Piaggio Carnaby | Piaggio Beverly | Piaggio MP3 | Piaggio X7 | Piaggio X8 | Piaggio X9 | Piaggio X10 | Vespa 98 | Vespa 50 | Vespa 125 Nuova


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Mysql Profis on Board?
BeitragVerfasst: Fr 16. Nov 2012, 19:07 
Offline
Administrator
Benutzeravatar

Registriert: Di 9. Jun 2009, 10:44
Beiträge: 1382
Wohnort: München
Vespa: ET4+2*GT125+GT125ie
Land: Deutschland/Bayern
Ich hab den Mod eigentlich einfach so übernommen,
wie es in der Anleitung steht.
Der obige Skriptauszug ist mir vom Provider mitgeteilt worden, dass
dieser überarbeitet werden sollte.
Ich muss den erstmal finden. :)
Das mit dem Limit hört sich gut an.

Abfragen kann ich bearbeiten, müsste doch in irgendeinem php file stehen, oder?

Die obigen Befehle kann ich z. B. bei mysqldumper ausführen, oder?

_________________
http://www.vespaforum.de


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Mysql Profis on Board?
BeitragVerfasst: Fr 16. Nov 2012, 19:23 
Offline
Benutzeravatar

Registriert: Mo 16. Mai 2011, 07:01
Beiträge: 8337
Wohnort: HE / WOB
Vespa: GTS300 / GT125L
Land: DE
Einen Index zu erstellen bringt aber nur etwas für Spalten, wo auch Dubletten drin sind, ansonsten wird es eher sogar noch langsamer.

Weiterhin kannst Du mit EXPLAIN SELECT .... die Abfrage auf VORHER -NACHER durchtesten ob das Indexieren etwas gebracht hat.
siehe hier : http://dev.mysql.com/doc/refman/5.1/de/explain.html


Dann habe ich im dem Error Stack des "General Error" etwas von MYSQL 4 gelesen.
Daher würde ich DRINGEND anraten auf MYSQL 5 zu wechseln.
Sollte die Datenbank noch MyISAM-Storages besitzen (denke ich mal) umsetzen auf InnoDB.
siehr z.B. hier: http://www.golem.de/1009/78067.html

Gruß

Nachtrag: LIMIT <Zahl> bringts natürlich in jedem Fall... ob 20 oder 100 oder was auch immer.
Auf jeden Fall ist das LIMIT schon mal ein echter Speichersparer, da das volle Pfund ansonsten von jedermann den Server vollpumpt um es danach vom PHP doch nur auf diese Anzahl zu begrenzen.

Also alles was die Datenbank schon selbst begrenzen kann, sollte sie auch schon tun. Das ich in jedem Falle wirksam.

_________________
Ich löse die Probleme anderer Leute,
welche sie ohne mich gar nicht hätten.

BildBild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Mysql Profis on Board?
BeitragVerfasst: Fr 16. Nov 2012, 19:30 
Offline
Administrator
Benutzeravatar

Registriert: Di 9. Jun 2009, 10:44
Beiträge: 1382
Wohnort: München
Vespa: ET4+2*GT125+GT125ie
Land: Deutschland/Bayern
Die Datenbank sitzt auf mysql5
nur taucht immer bei Infos (auch updates) mysql4 auf.
Keine Ahnung, wo diese Info steht und ausgegeben wird.
Früher war es mal eine mysql4 Datenbank.

Wie stell ich das auf InnoDB um?
Hat das nicht nachwirkungen, wenn ich mal wieder ein Update machen möchte?

Sorry, wenn ich doof frage, aber ist für mich vieles immer noch Neuland.

_________________
http://www.vespaforum.de


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Mysql Profis on Board?
BeitragVerfasst: Fr 16. Nov 2012, 19:42 
Offline
Benutzeravatar

Registriert: Mo 16. Mai 2011, 07:01
Beiträge: 8337
Wohnort: HE / WOB
Vespa: GTS300 / GT125L
Land: DE
Erst nochmal das hier:

Code:
 mysqlcheck --optimize --all-databases

Dieser Kommandozeilenbefehl optimiert (und repariert) alle InnoDB Tabellen aller laufenden Datenbanken.
Ist ungefähr vergleichbar mit der Defragmentierung von Festplatten.

Am besten regelmäßig (z.B. morgens um 03:33 Uhr) per crontab starten, dann sind die Tabellen immer "fit" für den nächsten Tag.
Ich weiß ja nicht, ob du auf deinem Server dort an diesen Befehl rankommst.
Falls nicht, such ich dir das mal in Form eines PHP-Scripts raus, diese Codeschnipsel liegen überall im Web rum.

Ach so: Im "phpmyadmin" kannst Du da sehen, welche Storage-Typ die Tabellen haben.

Bild

_________________
Ich löse die Probleme anderer Leute,
welche sie ohne mich gar nicht hätten.

BildBild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Mysql Profis on Board?
BeitragVerfasst: Fr 16. Nov 2012, 19:48 
Offline
Administrator
Benutzeravatar

Registriert: Di 9. Jun 2009, 10:44
Beiträge: 1382
Wohnort: München
Vespa: ET4+2*GT125+GT125ie
Land: Deutschland/Bayern
optimiert oder repariert hab ich über phpadmin schon.
Befehle kann ich damit denke ich auch problemlos ausführen.
Hab noch die MyISAM Tabs.

Gruss Flo

P.S. Draf ich im Betrieb optimieren?

_________________
http://www.vespaforum.de


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Mysql Profis on Board?
BeitragVerfasst: Fr 16. Nov 2012, 19:56 
Offline
Benutzeravatar

Registriert: Mo 16. Mai 2011, 07:01
Beiträge: 8337
Wohnort: HE / WOB
Vespa: GTS300 / GT125L
Land: DE
Flori hat geschrieben:
Hab noch die MyISAM Tabs.
Na dann.... ist doch da noch zu erwartendes Potenzial drin.

Howto: http://dev.mysql.com/doc/refman/5.1/de/ ... nnodb.html

Hinweis:
Ich weiß ja nicht wie dein Ding da ausgestattet ist, aber InnoDB braucht etwas mehr RAM (ich glaube rund 100MB insgesamt).
Normalerweise sollte das aber heutzutage kein Thema sein.
Ohnehin erstmal an einer Demodatenbank testen und nicht auf dem heißen System, aber ich denke das ist ohnehin klar. ;)

Flori hat geschrieben:
P.S. Draf ich im Betrieb optimieren?
Ja

_________________
Ich löse die Probleme anderer Leute,
welche sie ohne mich gar nicht hätten.

BildBild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Mysql Profis on Board?
BeitragVerfasst: Fr 16. Nov 2012, 20:22 
Offline
Benutzeravatar

Registriert: Fr 19. Jun 2009, 17:51
Beiträge: 2307
Wohnort: Klein Hollywood
Vespa: GTSPXV 550
Land: Deutschland
Prüf doch mal das Plugin oder was das ist, dass die aktuellen Beiträge anzeigt.
Ggf. kann man da bei den Einstellungen ein Limit angeben, dann muß man nicht im PHP rumwursteln.
Aktuell werden hier 1960 Seiten mit jeweils 10 Einträgen angeboten.
Das bedeutet, der MySQL-Server liefert 19.600 Posts komplett (inkl. Postingtext) nur für den einen Block "Aktuelle Beiträge".

@Schubi: Ein Index ist nicht nur für Dubletten.
Den Index braucht man schon um beschleunigt Datensätze zu finden, oder wie in dem SELECT-Statement die zugehörigen verknüpften
Datensätze, die ja über Schlüsselfelder verknüpft (relational) sind.

gmu

_________________
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Mysql Profis on Board?
BeitragVerfasst: Fr 16. Nov 2012, 20:28 
Offline
Administrator
Benutzeravatar

Registriert: Di 9. Jun 2009, 10:44
Beiträge: 1382
Wohnort: München
Vespa: ET4+2*GT125+GT125ie
Land: Deutschland/Bayern
Hab ich mal deaktiviert.
Also nur noch 10 Beiträge auf einer Seite.

_________________
http://www.vespaforum.de


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Mysql Profis on Board?
BeitragVerfasst: Fr 16. Nov 2012, 20:40 
Offline
Benutzeravatar

Registriert: Mo 16. Mai 2011, 07:01
Beiträge: 8337
Wohnort: HE / WOB
Vespa: GTS300 / GT125L
Land: DE
gmu hat geschrieben:
@Schubi: Ein Index ist nicht nur für Dubletten.
Den Index braucht man schon um beschleunigt Datensätze zu finden, oder wie in dem SELECT-Statement die zugehörigen verknüpften
Datensätze, die ja über Schlüsselfelder verknüpft (relational) sind.
Schon klar.
"Dubletten" war ein Versuch das möglichst einfach auszudrücken.
Ich meine damit, dass es nur Sinn macht, wenn in Tabellen ohnehin eindeutige Daten stehen (also keine doppelten Einträge), dann muss das RDBMS so oder so voll sequeziell durch, da hilft auch kein Index. Ansonsten würde jedes Datenbank System von Haus aus alles durch"indexen", wenn viel immer viel helfen würde.
Weitere Indexe (außer Primary, Foreign und den Unique Keys) zu platzieren muss schon etwas geplant werden.
Ich höre viel zu oft: "Datenbank langsam, mach'n Index drauf"... so einfach ist das nicht, da schreiben mache sogar Doktorarbeiten drüber.
Aber in der Regel kommt man mit dem oben erwähnten EXPLAIN SELECT... sehr schnell dahinter, ob der gesetzte Index sinnvoll ist.
Falls nicht, wieder ab in die Tonne damit, ist ja kein Problem.

Siehe z.B auch http://phpperformance.de/indizes-richtig-einsetzen/#p8

_________________
Ich löse die Probleme anderer Leute,
welche sie ohne mich gar nicht hätten.

BildBild


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 44 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Gehe zu:  

- Vespaforum.de is sponsored by "Ingenieurbüro Kurz" -




Impressum


Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de