Skip to content

Blog-Nachbrenner dank Isotopp

Dieses Blog hat inzwischen wieder eine akzeptable Geschwindigkeit. Vielen Dank an Isotopp für die Hilfe bei der Fehlersuche.

Ursache war ein fehlender Index auf der Spalte sessID der Tabelle s9y_visitors, was bei jedem Zugriff zu einem Full Table Scan geführt hat - und das auf der mit Abstand größten Tabelle dieses Blogs.

Bei der Suche nach dem Fehler war log-slow-queries = /var/log/mysql/mysql-slow.log sehr hilfreich, und ein alter table mh_s9y_visitors add key (sessID); hat das Problem aus der Welt geschafft.

Bleibt zu klären, warum dieser Index nicht automatisch von s9y gesetzt wird.

Trackbacks

ksis cinema blog on : Trackback Angriff auf mein Blog

Show preview
Nun hat es mich genauso wie Kris auch erwischt. Also ich gestern nach Hause kam, war meine Webseite nicht mehr erreichbar. Ein Blick in die access-logs der Domain und der Aufruf von "top" zeigten mir mehrere httpd Prozesse, die meine CPU gut auzslasteten.

Informatik aus Versehen on : Schon seltsam...

Show preview
...daß ich hier über ein Problem stolpere, welches Marc Habe so schon vor einer Ewigkeit gehabt hat. Von wegen daß der Index jetzt im Code drin ist...

Comments

Display comments as Linear | Threaded

Waszszaf on :

Ich habe hier eine Software, die ein MySQL-Backend verwendet und bekanntermaßen bei größeren Datenmengen recht zäh wird.

Viele schoben das bisher auf Java als Implementierungssprache, warum auch immer.

Nun stellte sich durch ein Posting eines Users in einem Webforum raus, daß sich die Software deutlich beschleunigen läßt.

Indem man bestimmte Spalten der Tabelle indexiert.

Er schrieb auch den Entwicklern, die wohl völlig überrascht waren und sinngemäß erklärten, mit Datenbanken würden sie sich nicht so recht auskennen, das würde nun aber geprüft.

Auf die Idee muß man erstmal kommen. Die verwenden MySQL in einem kommerziellen Produkt mit bekannten Leistungsschwächen, sind bereits bei Version 2 des Produkts (mit vielen Updates auf dem Weg dorthin) und merken jetzt erst, daß Datenbanken so etwas wie Indexe anbieten...

Marc 'Zugschlus' Haber on :

Das ist wohl eine Geschichte live aus dem Leben mit dem Untertitel "Einmal nur mit Profis arbeiten"

ista on :

Keine Sorge, s9y ist damit in guter Gesellschaft - zu Dutzendfach anderer von SQL-Anfaengern geschriebener Software.

Sei froh, dass es bei einem "add index" geblieben ist. Andere Systeme muessen tatsaechlich die Datenbankstruktur umbauen ... Oscommerce (als Shopsystem) macht z.B. auch erst in den ganz frischen Versionen Queries, die nicht mehr Tablescans ueber mindestens 4 Tabellen parallel machen.

Marc 'Zugschlus' Haber on :

Einmal nur mit Profis arbeiten.

In s9y ist inzwischen die Generierung der Indizes im Code eingepflegt worden.

Ich habe lieber Software, die anfänglich Fehler hat, die schnell behoben sind als Software, bei der man jahrelang auf triviale Fixes warten muss.

ista on :

Dummerweise verbreiten sich derartig defekte Anwendungen ueber Jahre hinweg so fleissig, dass man ihr noch auf alle Ewigkeit hinterherlaufen darf.

Frage einen beliebigen Webhoster nach Matt Wright's Formmail, den fehlenden Indizes auf alten phpbb-Session-Tabellen oder oscommerce mit Alter > 6 Monate.

Updates spielt man als normaler Hosting-Kunde naemlich nie ein - und zum Problem werden diese Applikationen erst, wenn sie von irgendwelchen Spammern oder Crackern entdeckt werden bzw. sich mit Leben fuellen.

Gerade die Dumm-SQL-Anwendungen, die ein Kunde mal vor drei Jahren installiert hat und deren Datenmenge erst innerhalb des letzten Jahres langsam angewachsen ist, faehrt gerne gegen die Wand. Ueblicherweise stellt man das in dem Moment fest, in dem "modernen" Suchmaschinen-Crawler wie der googlebot herauskommt, um in einem Geronimo-Stil die Skripte anzusprechen, welche wiederum die Datenbank mit schlechten Queries plattmachen.

Standardantwort des Kunden darauf: "aber daran habe ich doch nie etwas geaendert, warum soll das nun ein Problem sein" ... ? :-/

kju on :

Ehrlich gesagt dachte ich bis gerade auch noch, daß die Index-Option in MySQL keine Wirkung hat. War das nicht auch früher mal so?

-thh on :

Jetzt stellen wir uns mal ganz dumm ... und dabei fest, daß ich gar keine Tabelle "visitors" habe. grübel Warum nicht?

Ich würde mein s9y doch auch gerne schneller machen ... :-)

bed on :

Das Statistik Modul ist mir im Mai ebenfalls aufgefallen... ;-)

Andreas 'ads' Scherbaum on :

S9y läuft (mit kleinen Hürden) auch auf anderen Datenbanken.

Wenn man sich den "Datenbanklayer" in S9y anschaut, läuft es einem kalt den Rücken herunter. Da werden Mysql-spezifische Anfragen mal eben mittels String ersetzen fit für Standard SQL umgebaut ... Dazu kommt dann das konsequente Ignorieren von Fehlermeldungen, so dass z.B. fehlgeschlagene Updates einer Tabelle (weil falsche Syntax) unbemerkt bleiben.

Add Comment

Markdown format allowed
Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.
Form options