Kom ihåg mig?
Home Menu

Menu


Låsa upp en tabell i mysql så länge jag håller på att putta in data.

 
 
Ämnesverktyg Visningsalternativ
Oläst 2015-09-03, 08:02 #1
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
Kollade databasen nu och den är redan InnoDB

Ja jag kör ASP Klassiskt för det är det enda jag kan Och har inte direkt tid att lära mig nått nått även om jag vill

Förstår inte din pseudo-kod kod riktigt.
Snackar vi mysql eller VB/ASP

Och vilket av förslagen jag gav bör jag använda en enda insert med massa olika rader i eller en insert per rad.


Om jag förstår det hela rätt nu så bör min mysql se ut något i stil med detta?
Rätta mig om jag har fel.
Kod:
begin;
INSERT INTO Table ( Col1, Col2, Col3 ) VALUES ( Value1, Value2, Value3 ), ( Value4, value5, Value6 ), ( Value7, Value8, Value9 );
Commit;
Och jag lägger alla mina rader i en och samma insert för det låter som det är effektivast istället för att göra massa inserts?
spyvingen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2015-09-03, 10:10 #2
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:
Ursprungligen postat av spyvingen Visa inlägg
Kollade databasen nu och den är redan InnoDB

Ja jag kör ASP Klassiskt för det är det enda jag kan Och har inte direkt tid att lära mig nått nått även om jag vill

Förstår inte din pseudo-kod kod riktigt.
Snackar vi mysql eller VB/ASP

Och vilket av förslagen jag gav bör jag använda en enda insert med massa olika rader i eller en insert per rad.


Om jag förstår det hela rätt nu så bör min mysql se ut något i stil med detta?
Rätta mig om jag har fel.
Kod:
begin;
INSERT INTO Table ( Col1, Col2, Col3 ) VALUES ( Value1, Value2, Value3 ), ( Value4, value5, Value6 ), ( Value7, Value8, Value9 );
Commit;
Och jag lägger alla mina rader i en och samma insert för det låter som det är effektivast istället för att göra massa inserts?
Din SQL ser ok ut. Normalt sett använder man funktioner i programmeringsspråket (och jag var inte ens säker på vilket språk du använde, hence pseudo-kod) för transaktionsbiten vilket t ex gör att man programmatiskt kan rollbacka/committa beroende på resultat av frågor.

Att lägga till många rader i ett statement är snabbare, upp till någon punkt mellan 100 och 10 000 rader beroende på omständigheterna. Det har heller ingen nämnvärd risk att ställa till jobbiga problem så länge du inte använder MyISAM.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Oläst 2015-09-03, 11:12 #3
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
Ok då är jag med på pseudo visste inte riktigt bar aom det var sql du prattade om eller om det var programmatiskt men det jag skrivit ovan kommer läsa in allt i db:n och när allt väl är där så trycker den igenom förändringen på direkten.

Antar att min delete även ska ligga mellan begin och commit kom jag på i efterhand men då kunde jag inte redigera.

antalet rader är minimalt men från 0 upp till 50-60 så själva sql delen är väl minimal i tid och det som faktiskt tar tid är mina sidhämtningar.
spyvingen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2015-09-03, 22:01 #4
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:
Ursprungligen postat av spyvingen Visa inlägg
Ok då är jag med på pseudo visste inte riktigt bar aom det var sql du prattade om eller om det var programmatiskt men det jag skrivit ovan kommer läsa in allt i db:n och när allt väl är där så trycker den igenom förändringen på direkten.

Antar att min delete även ska ligga mellan begin och commit kom jag på i efterhand men då kunde jag inte redigera.

antalet rader är minimalt men från 0 upp till 50-60 så själva sql delen är väl minimal i tid och det som faktiskt tar tid är mina sidhämtningar.
Pseudo-kod skrivs för det mesta för att man ska kunna reproducera koden i sitt eget språk utan att själva instruktionen kräver att man kan något specifikt språk (även om viss funktionalitet ändå kräver att man kan något inom en grupp av språk).

Och ja, din delete ska absolut ligga mellan starten och commiten av transaktionen.

Menar du 50-60 sekunder? Isåfall föreslår jag att du låter scriptet hämta datan först och sen ansluter till databasen och lägger in datan i en endaste select. Utifall att scriptet hänger sig kan det annars vara så att du inte har en bra idle timeout mot databasen (för jag antar att du inte har kontroll över databasserverns inställningar?) vilket kan orsaka problem. Är det ingen viktig/populär sajt kan du förvisso skippa det och hoppas att det funkar och ändra det först om det faktiskt blir ett problem.

Annars är code for failure en bra praktik. Allt som kan lägga av kommer förr eller senare göra det, spelar det då någon roll? Vad händer om 3e part du hämtar data från går ner? Vad händer om din databasserver går ner? Vad händer när du får deadlocks på db transaktionerna? Vad händer när du har en bugg i din datahämtning som gör att scriptet kör in i oändligheten? Men som sagt, detta kan vara överkurs i ditt fall.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Oläst 2015-09-04, 12:44 #5
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
50 - 60 då menar jag bara poster i databasen som ska läggas in.
Scriptet tar 1-4 sekunder att köra typ.

Det är inte många som ska använda den kanske 20-30 pers. I allra värsta fall upp emot 80 pers men det kommer mest troligt inte hända

Räkna in alla möjliga fel är inget jag orkar lägga tid på i detta projekt blir det ett fel så får nån rapportera det så får jag kika på det bara

Tror jag kommer göra som du skriver samla in allt från de olika sidorna och sedan kör jag in allt i db:n på slutet. Även om sidan inte tar så lång tid att ladda nu så kommer den sedan hämta från ytterligare källor så det kommer ju ta längre tid senare.
spyvingen ä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 09:04.

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