26. februar 2011 - 16:38Der er
9 kommentarer og 1 løsning
Samtidig import af kunder uden fejl
Hej,
mine brugere importerer løbende store kunder lister til en database, og hver kunde skal oprettes med det autoincrement nyoprettede id i en anden tabel umiddelbart efter. Jeg kunne forestille mig at nogen ville sige man skulle lave en LOCK på kundetabellen for at undgå rod hvis nogen importerer samtidigt.
Men det holder ikke. Jeg har en bedre løsning, tror jeg.
Opret istedet et helt unikt id til hver kunde ved indsættelsen, og hent dem ud igen med dette id. Aflæs så det id som databasen har oprettet og opret kunderne i den anden tabel med det korrekte id.
Hvis man kan lave et 100% unikt ID for hvert emne ved indsættelsen, mener jeg denne model holder. Korrekt ??
Man kunne også bruge udelukkende det unikke ID man selv opretter, men jeg tror at hvis tabellen bliver meget stor, så bør id erne være autoincrement oprettede for at holde søgetider nede.
Godt med lidt feedback. GUID ser fint ud til at lave unikke id'er.
LAST_INSERT_ID() har et par problemer: 1. Måske kan en anden bruger indsætte en record inden jeg får læst LAST_INSERT_ID() hvis mange importerer samtidig. 2. Import bliver langsom, fordi jeg ikke kan lave en kæmpe lang insert into table med alle værdierne. Jeg er nødt til at have en insert for hver række fordi det er skiftevis den ene og den anden tabel.
Tager det ikke længere tid at finde et id hvis det er på 50 cifre istedet for på 10 ?
Hvis ikke, er der så ikke nogen andre problemer i at bruge lange id'er i en db på flere millioner records?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.