Lock Database
Einklappen
X
-
natürlich hab ich Einsicht in den Codeblock. Der ruft bloß tausende Sachen aus tausenden Klassen (unwesentlich übertrieben) auf und führt dementsprechend viele verschiedene Queries aus.
Wie man auf die Idee kommt? Eigentlich kam man vorher auf die Idee, dass man das Locking ja später noch drumrum machen kann, da das ja schnell und einfach geht
Einen Kommentar schreiben:
-
Hast du keine Einsicht in den Codeblock? Wie kommt man auf die Idee, alle Tabellen vor einem "schwarzen Loch voller SQL-Queries" locken zu müssen?
Einen Kommentar schreiben:
-
Kommt leider aus Performancegründen nicht in Frage... hab mittlerweile das allermeiste gefunden, aber interessieren, ob es nicht einfacher ginge, täte es mich schon.
Einen Kommentar schreiben:
-
Lock Database
Hallo,
ich muss um einen umfangreichen Codeblock nachträgich ein Tablelocking WRITE machen.
Es kommt mir jetzt so vor, als wäre das fast ein Ding der Unmöglichkeit. Denn
- ich muss _alle_ Tabellen herausfinden, die innerhalb dieses Codeblocks angesprochen werden (sonst kommt Error: Table bla was not locked...)
- zusätzlich muss ich _alle_ verwendeten Tabellenaliase herausfinden, also meinetwegen BLA LEFT JOIN user AS u -> muss gelockt werden mit LOCK TABLE user AS u (sonst kommt Table u was not locked...)
- als ob das nicht genug wäre, scheint es einen Bug zu geben Subselects betreffend. Wenn ich 'tabelleA' und 'tabelleB' gelockt habe und so etwas abfrage wie SELECT bla FROM tabelleB LEFT JOIN tabelleA ON a_id = b_id WHERE a_id = (SELECT blub FROM tabelleC), dann behauptet er, tabelleA wäre nicht gelockt. Es funktioniert nur, wenn ich in dieser Query tabelleA wiederum einen Alias gebe, den ich dann extra locken kann mit LOCK TABLE tabelleA AS a. (MySQL-Version 5.0.27-community-nt)
Wenn das der einzige Weg ist, die Tabellen zu locken, ist das purer Horror und Fehleranfällig noch dazu, da ich jetzt gar nicht sicherstellen kann, alle möglichen Fälle nachstellen zu können um zu testen, ob ich nicht vielleicht doch irgendwas nicht gelockt habe.
Ein LOCK DATABASE würde mein Problem lösen ... ein SHOW TABLES mit Schleife, die alle einzeln lockt wiederum nicht, da SHOW TABLES logischerweise nur die Tabellennamen, nicht aber die Aliase anzeigt.
Jemand ne Idee ?Zuletzt geändert von ministry; 14.02.2008, 15:48.Stichworte: -
Einen Kommentar schreiben: