ADMIN-Tipp: MySQL-Queries taggen

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Manchmal ist es nützlich, eine Datenbankabfrage in einer Applikation so zu markieren, dass man sie später im Log unter vielen anderen wieder herausfinden kann. Das hilft etwa, wenn unklar ist, woher eine bestimmte Query stammt, oder wie die Anwendung sie endgültig modifiziert. Früher konnte man für diesen Zweck MySQL-Kommentare nutzen, heute braucht man einen Trick.

Vor langer Zeit konnte man die folgende Methode verwenden um MySQL-Queries in der Applikation zu taggen:

SELECT /* My Application Tag */ * FROM test;

Im Slow Query Log und im General Query Log erschien die Abfrage dann so:

# Time: 111020 22:03:33
# User@Host: root[root] @ localhost []  Id:  1335
# Query_time: 17.873938  Lock_time: 0.007952 Rows_sent: 12048576  Rows_examined: 12048576
use test;
SET timestamp=1319141013;
SELECT /* My Application Tag */ * FROM test;

und

111020 22:03:15  1335 Query     SELECT /* My Application Tag */ * FROM test

Leider wurde dieses Feature irgendwann einmal von MySQL abgeschafft. Heute unterdrückt die Datenbank die Kommentare im obigen Beispiel, sie tauchen im Log nicht mehr auf. Helfen kann man sich aber mit einer ansonsten wirkungslosen und immer wahren WHERE-Klausel:

SELECT * FROM test WHERE 'My Application Tag' = 'My Application Tag';

oder noch kürzer:

SELECT * from test  WHERE "1 Application Tag";

(Hier erzwingt die vorangestellte 1 den Wahrheitswert true.)
Die Tags erscheinen nun genauso in den beiden Logs und erlauben es, die Query eindeutig zu identifizieren:

# Time: 111020 22:24:59
# User@Host: root[root] @ localhost []  Id:  2077
# Query_time: 12.270074  Lock_time: 0.000124 Rows_sent: 12048576  Rows_examined: 12048576
use test;
SET timestamp=1319142299;
SELECT * FROM test WHERE 'My Application Tag' = 'My Application Tag';

und

2077 Query     SELECT * FROM test WHERE 'My Application Tag' = 'My Application Tag'
30.10.2012

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019