You are here
MySQL Queries taggen
Früher, lange, lange ist's her, konnte man den folgenden Trick verwenden um MySQL Queries in der Applikation zu taggen:
SELECT /* My Application Tag */ * FROM test;
Im Slow Query Log und im General Query Log ist das SQL Query dann wie folgt erschienen:
# 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
Das ist recht nützlich, wenn man nicht genau weiss woher ein Query stammt oder wie es von der Applikation schlussendlich ausformuliert wird.
Leider wurde dieses Feature irgendwann einmal von MySQL abgeschafft. Wann das genau geschehen ist, konnte ich nicht mehr herausfinden. Heute sehen die entsprechenden Einträge wie folgt aus:
# 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 * FROM test;
und
111020 22:03:15 1335 Query SELECT * FROM test
Bei unserem heutigen Kunden hatten wir wieder mal genau dieses Problem. Zum Glück hatte er eine glorreiche Idee. Aus:
SELECT * FROM test WHERE 1 = 1;
machten wir kurzerhand:
SELECT * FROM test WHERE 'My Application Tag' = 'My Application Tag';
und siehe da:
# 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'
es funktioniert...
Ist zwar nicht ganz so sexy, aber recht nützlich...
- oli's blog
- Log in or register to post comments
Comments
Nachteil für den Query Cache
Query Cache Nachteil umgehen
kürzer