Kom ihåg mig?
Home Menu

Menu


MySql: Uppdatera tabell A med rader från B

 
Ämnesverktyg Visningsalternativ
Oläst 2008-12-05, 13:07 #11
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
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?
radioaktivitet är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-12-05, 15:57 #12
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
Ä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.
Magnus_A är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-12-05, 16:01 #13
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.
Alla processer står "Locked".
radioaktivitet är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-12-05, 17:53 #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
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.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-12-07, 09:23 #15
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
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?
radioaktivitet är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-12-07, 12:36 #16
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
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.
Magnus_A ä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 00:21.

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