FAQ |
Kalender |
![]() |
#11 | ||
|
|||
Flitig postare
|
Både Replace och Update fungerade. Update var aningen snabbare (endast en operation, jämfört med replace som är två operationer).
Men varje gång jag kör min fråga (som trots att jag använder update tar ca 5 minuter att exekvera) så får jag "too many connections" när jag försöker ansluta för att exekvera andra frågor. Förmodligen beror det på att tabellen låses när jag kör min Update. Jag kör med myisam tabeller. Jag försökte sätta UPDATE LOW_PRIORITY, men det hjälpte inte. Samma fel. Några tips på lösning? |
||
![]() |
![]() |
![]() |
#12 | ||
|
|||
Klarade millennium-buggen
|
Är det en produktionsserver där besökare ansluter?
Vad säger show processlist? Det finns alltid en extra anslutning för root möjlig för att kunna köra t ex show processlist. |
||
![]() |
![]() |
![]() |
#13 | ||
|
|||
Flitig postare
|
Ja.
Alla processer står "Locked". |
||
![]() |
![]() |
![]() |
#14 | ||
|
|||
Administratör
|
Enkel fix på problemet, om jag inte missat något, är nog att skapa en kopia av strukturen på tabell a, en insert select från tabell a till denna kopia, rensa tabell a och sen köra din update från denna kopia. Alternativt rename på tabell a och sen skapa en ny tabell a om även insert select tar tid.
__________________
eldefors.com - Personlig (teknik)-blogg |
||
![]() |
![]() |
![]() |
#15 | ||
|
|||
Flitig postare
|
Clarence: jag förstår inte riktigt vad du menar. Jag vill få datan från tabell A till tabell B. Hur kan en ny temporär tabell hjälpa mig?
|
||
![]() |
![]() |
![]() |
#16 | ||
|
|||
Klarade millennium-buggen
|
Utan att veta i detalj gissar jag på att någon annan fråga villl skriva till dessa tabeller som är låsta i 5 minuter, vilket inte går. Antar att du jobbar på en produktionsserver där andra användare (besökare) jobbar mot dina tabeller.
Clarences lösning bygger på att lyfta ut uppdatering till tabeller som ingen annan ställer frågor emot under tiden. De får vara i fred och hindrar inte annan användning genom att hålla tabellen låst. När uppdateringen är klar efter 5 minuter kopierar du hela tabellen in i produktionsmiljön genom att trunkera befintlig tabell, och lägga in alla rader från den temporära uppdaterade tabellen. En sådan operation är mycken snabbare och de hinner inte bildas en massa köer. |
||
![]() |
![]() |
Svara |
|
|