Nudge am 28.07.2009

phpmyadmin – Indizes verwalten

in MySQL | Tags: Indizes, MySQL, phpmyadmin, UNIQUE

Was mich am meisten in den letzten phpmyadmin-Versionen stört, ist die Verwaltung von Indizes. Das war früher irgendwie einfacher.

Allein die Tatsache, dass man explizit Tabellen-Details anklicken muss, um die Indizes zu sehen, nervt einen zeitarmen DB-Admin schon nach kurzer Zeit. Desweiteren die Macke, standardmäßig “UNIQUE” auszuwählen. Man sagt “Erstelle einen neuen Index aus zwei Feldern” und schwupps, beschwert sich MySQL, dass die Contraints verletzt wurden. Das ist aber noch der bessere Fall, denn man kann es gleich verbessern. Läuft die Index-Anlage leise durch, hat man auf einmal einen UNIQUE drin, der dort nix zu suchen hat. Später wundert man sich, dass die DB-App nicht wirklich das tut, was sie soll. Das ist noch ärgerlicher.

Ich hoffe, dass die Autoren von phpmyadmin ihr Tool intensiv selbst benutzen und diese Verschlimmbesserungen ihren wohlverdienten Weg ins Klo finden werden. Natürlich könnt ihr jetzt mit einem stilechten “Das ist Open Source – mach es selbst!” kontern, aber ich kann mich wirklich nicht um alles kümmern! 😉

Nudge am 23.03.2009

phpmyadmin-Update und alte Features

in MySQL, PHP, Tipp | Tags: Editor, Konfiguration, MySQL, PHP, phpmyadmin, Problem, Query, Update

Nach einem Update von phpmyadmin von 2.11.6 auf die neue 3.1.3 waren mir vertraute Features plötzlich nicht mehr sichtbar. Falls es einigen von Euch genauso ging, hier ein kleiner Tipp, wie man die alte Ansicht wiederbekommt.

Man öffne die Datei config.inc.php und füge nach der Server-Konfiguration die folgenden Zeilen ein:

1
2
3
$cfg['DefaultTabTable'] = 'tbl_structure.php';
$cfg['LeftDefaultTabTable'] = 'tbl_structure.php';
$cfg['SQLQuery']['Edit'] = TRUE;
$cfg['DefaultTabTable'] = 'tbl_structure.php';
$cfg['LeftDefaultTabTable'] = 'tbl_structure.php';
$cfg['SQLQuery']['Edit'] = TRUE;

Zur Erklärung: Klickt man links in die Spaltenansicht aller Tabellen, so öffnete die alte Version standardmäßig die Tabellenstruktur, nun sind es die ersten 30 Einträge. Diese Umstellung wird durch die erste und zweite Zeile rückgängig gemacht. Sicherlich werden viele die Einträge auch gern sehen wollen. In meinem Falle benutze ich phpmyadmin nicht unbedingt zur Datenrecherche, sondern ganz oft für Arbeiten an der MySQL-Tabellenstruktur. Dafür finde ich die alte Einstiegsseite besser geeignet.

Die letzte Zeile korrigiert den fehlenden “Bearbeiten”-Link, nachdem ein Query an MySQL abgesetzt wurde. Denn häufig starte ich damit, einen ersten Query-Entwurf abzusetzen, dann mittels “Bearbeiten” ein Popup-Fenster zu öffnen, um dort mein Query weiter feiner zu granulieren, ohne dass ein Klick im Browserfenster mein Query verwirft.

Ansonsten kann ich das Update schon aus Sicherheitsgründen nur wärmstens empfehlen!

Nudge am 23.01.2009

MySQL Performance Quiz

in MySQL, Witziges | Tags: Index, MySQL, Performance, phpmyadmin

Also Leute, ich habe gerade über folgende Frage nachgedacht:

Ist MySQL schneller, wenn der Index lückenlos ist?

Anderherum gefragt: Ist es langsamger, Abfragen über eine zB mit 1 Million Datensätzen gefüllten Tabelle zu machen, wenn der Index durch viele Löschoperationen “fragmentiert” ist und man ausschließlich den Index für die Suchanfrage benutzt?

Ich werde diese Frage in den nächsten Tagen mal untersuchen. Bis dahin seid ihr aufgefordert, eure Tipps aus dem Bauch heraus abzugeben, gern auch mit ausschmückenden Erläuterungen. 🙂 Natürlich ist es wegen Fairness striktestestestens verboten, das Ergebnis vor der Abgabe eines Tipps zu recherchieren!

Also, ich halte die Voraussetzungen noch einmal fest:

  • Beide Tabellen sind gleich aufgebaut.
  • Beide Tabellen haben die gleiche Anzahl an Einträgen.
  • Beide Tabellen benutzen als Schlüssel  id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT.
  • Beide Tabellen werden vor dem Test über phpmyadmin optimiert.
  • Es werden nur Anfragen auf den Index verwendet.

Aber:

  • Bei einer der Tabellen sind durch vorige Löschoperationen “Lücken” im Index.
  • In der anderen sind die Indizes durchgängig nummeriert.

Ich freu mich schon auf das Ergebnis! 🙂