Visa ett inlägg
Oläst 2009-02-20, 08:12 #14
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Citat:
Originally posted by radioaktivitet@Feb 19 2009, 15:59
Grejen är att jag redan kör alla uppdateringar mot en temporär kopia.

Ca 10 miljoner rader är orginaltabellen. Det som uppdateras flyttas över till orginaltabellen via update. Ca 3000 rader uppdateras via denna update som är en join mellan den temporära tabellen och orginaltabellen.

Frågan ser ut så här:
UPDATE LOW_PRIORITY ORGTABLE O, TEMPTABLE T SET O.NAME = T.NAME WHERE O.ID = T.ID AND T.UPDATED = CURRENT_DATE
Det spelar nog ingen roll att du kör updates mot en temporär kopia om din query ser ut på det sättet, originaltabellen kommer ändå låsas.

Testa att ta bort joinen från tabellen och istället göra en insert select till en temp-tabell eller en select till applikationen med vad som ska uppdateras först, för att sedan använda denna data vid updaten (stega igenom det om du hämtar det till applikationen, så du slipper monstruöst långa queries). På så sätt bör inte originaltabellen låsas under skrivprocessen mot kopian.
Clarence är inte uppkopplad   Svara med citatSvara med citat