Kom ihåg mig?
Home Menu

Menu


UPDATE LOW_PRIORITY låser tabellen

 
Ämnesverktyg Visningsalternativ
Oläst 2009-02-19, 08:52 #1
radioaktivitet radioaktivitet är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 336
radioaktivitet radioaktivitet är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 336
Varje dag kör jag en UPDATE LOW_PRIORITY TABLE där jag uppdaterar ca 3000 rader i en tabell. Denna fråga tar knappt tre minuter att köra.

Under tiden ställs det, precis som vanligt, en mängd SELECT-frågor mot tabellen.

MEN. Efter en liten stund går det inte längre att ställa frågor mot tabellen. Då får man bara "Too many connections".

Vad kan detta bero på? Låser UPDATE tabellen för läsningar? Tabellen är av typen myisam eftersom jag har ett fritextindex på den. Men det borde väl inte ha någon betydelse?

Edit: det är en mysql-databas
radioaktivitet är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-19, 11:00 #2
najks avatar
najk najk är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Oct 2005
Inlägg: 1 224
najk najk är inte uppkopplad
Har WN som tidsfördriv
najks avatar
 
Reg.datum: Oct 2005
Inlägg: 1 224
Som jag tolkat det: En update low_priority skriver inte ändringarna förens tabellen inte används, har den påbörjat att skriva ändringarna låser den tabellen tills det att den är klar med ändringarna, får du då många select samtidigt som skrivning sker köas dom upp och väntar på att den ska bli klar, det verkar som det är under denna tid du då får too many connections. Men när update är klar borde väl det flyta på som vanligt?
najk är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-19, 11:00 #3
hnn hnn är inte uppkopplad
Banned
 
Reg.datum: Mar 2004
Inlägg: 2 587
hnn hnn är inte uppkopplad
Banned
 
Reg.datum: Mar 2004
Inlägg: 2 587
Verkar mer som om att du inte stänger anslutningarna mot databasen eftersom "Too Many Connections" inte har med tabellerna att göra.

Om tabellerna skulle vara låsta för skrivning eller läsning, så skulle sidan hänga sig istället eftersom han väntar på svar ifrån MySQL.
hnn är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-19, 13:29 #4
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Låter långsamt med en uppdatering som tar tre minuter att köra för 3000 rader.

Men om sidan hänger sig i väntan på svar så stängs väl inte anslutningarna eftersom scriptet inte löper färdigt annat än vid max execution time eller liknande, och då termineras skriptet utan att anslutningen stängs.
Magnus_A är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-19, 15:39 #5
radioaktivitet radioaktivitet är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 336
radioaktivitet radioaktivitet är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 336
Ja. Sidorna hänger sig under denna tid.

Tittar jag i processkön så ser jag att det ligger en massa frågor som väntar på att få köras. Status är "blocked" om jag inte minns helt fel.

När update är klar så flyter det på som vanligt, ja.

Anledningen till att UPDATE tar lång tid är att tabellen är ganska stor och den är en join mellan två tabeller. Relevanta index finns, så där är det inte något problem. Join sker på primärnyckeln.

Menar ni alltså att detta är helt normalt?
radioaktivitet är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-19, 15:51 #6
najks avatar
najk najk är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Oct 2005
Inlägg: 1 224
najk najk är inte uppkopplad
Har WN som tidsfördriv
najks avatar
 
Reg.datum: Oct 2005
Inlägg: 1 224
Ja det är helt normalt, du kanske kan köra updatering mot en temporär kopia av tabellen? Kan du köra uppdatering nattetid då det inte spelar någon roll?
Hur stor är ganska stor?
najk är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-19, 15:59 #7
radioaktivitet radioaktivitet är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 336
radioaktivitet radioaktivitet är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 336
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
radioaktivitet är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-19, 16:03 #8
radioaktivitet radioaktivitet är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 336
radioaktivitet radioaktivitet är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 336
Eventuellt kanske det är bättre att köra den här frågan. Jag har inte riktigt förstått om den gör samma sak.

REPLACE DELAYED INTO ORGTABLE SELECT * FROM TEMPTABLE WHERE UPDATED = CURRENT_DATE

Nån som vet?
radioaktivitet är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-19, 16:58 #9
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Förutsatt att du har ett unikt index på ID i måltabellen och unika värden på ID i källtabellen så gör den ungefär samma sak.
Det som skiljer är om du har rader med ett ID i källtabell som ej finns i måltabellen så blir de tillagda till måltabellen i detta exempel men inte i förra, men det kanske du har täckt upp redan tidigare när du skapade din temporära tabell.
Magnus_A är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-19, 17:01 #10
radioaktivitet radioaktivitet är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 336
radioaktivitet radioaktivitet är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 336
Det stämmer bra. Alla rader med ID i källtabellen finns i måltabellen.

Så du menar att även REPLACE frågan låser tabellen för läsning?
radioaktivitet är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 02:09.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017