Moin Leute,
ich habe ein Query der Art:
In Verbindung mit den anderen Queries die im Betrieb auf diesen beiden Tabellen einhacken führt das zu merkwürdigen Deadlocks.
Ein SHOW ENGINE INNODB STATUS sagt mir da unter anderem:
Das bedeutet, dass sämtliche Zeilen der beiden Tabellen gelockt werden.
Kann ich das irgendwie feingranularer machen ? Ich möchte, dass immer nur eine Zeile gelockt wird, nämlich die, die gerade geupdated wird. Geht das ?
Danke.
ich habe ein Query der Art:
Code:
UPDATE users u SET u.technology_score = u.technology_score + ( SELECT SUM(p.technology_score_production * (#{now} - u.last_tick_tech) / 3600) FROM planets p WHERE p.user_id = u.id ), u.last_tick_tech = #{now}
Ein SHOW ENGINE INNODB STATUS sagt mir da unter anderem:
376 lock struct(s), heap size 27968, 4314 row lock(s), undo log entries 1062
Kann ich das irgendwie feingranularer machen ? Ich möchte, dass immer nur eine Zeile gelockt wird, nämlich die, die gerade geupdated wird. Geht das ?
Danke.
Kommentar