Autor Zpráva
MaK
Profil
Velké množství procesů maže řádky z konce tabulky:

DELETE FROM t
WHERE time < (NOW() - INTERVAL 1 YEAR)
LIMIT 10

Ano, měl by to dělat nějaký service-time po větším počtu řádku, ale to nedokážu zajistit. Jediné co mohu, je minimalizovat deadlocky, které asi budou vznikat. Mohu si dovolit nasledující:

DELETE FROM t
USING
(
  SELECT id
  FROM t
  WHERE time < (NOW() - INTERVAL 1 YEAR)
  LIMIT 10
  FOR UPDATE SKIP LOCKED
) AS dt
JOIN t USING (id);

Přeskočí zamknuté řádky a vyhne se tak deadlockům?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0