Avatar billede ducks Nybegynder
07. december 2010 - 23:00 Der er 6 kommentarer og
1 løsning

Concurrency control

Jeg skal lave noget test hvor jeg viser at jeg har implementeret concurrency control ift min MySQL database, JDBC. Men jeg kan ikke komme på en fornuftig måde at gøre dette på?

Jeg tænker jeg måske skal bruge nogle Threads og LOCK TABLE, hvor den første har en Thread.sleep(10) før den unlocker tabellerne, så den næste gerne skulle blive forhindret i at komme ind - vil dette virke? Og hvordan viser jeg at det virker?
Avatar billede ducks Nybegynder
08. december 2010 - 00:23 #1
Okay har vidst fået lavet en test af det nu, men har et problem med rollback

Savepoint sp = conn.setSavepoint();

[...]

conn.rollback(sp);


den virker ikke - måske fordi det er 2 andre connections ændringerne bliver lavet igennem?
Avatar billede arne_v Ekspert
08. december 2010 - 01:26 #2
Hvis du bruger MyISAM tabeller kan du have 2 tråde som begge bruger LOCK TABLE til at få eksklusiv adgang til en tabel og med en sleep vil den ene tråd komme til at vente på den anden.
Avatar billede arne_v Ekspert
08. december 2010 - 01:27 #3
Hvis du bruger InnoDB tabeller kan du bruge rigtige database transactions.

Sæt transaction isolation level til noget passende højt.

Slå auto commit fra på connections.

Udfør multiple SQL sætninger og brug commit / rollback.

(glem save point featuren)
Avatar billede ducks Nybegynder
08. december 2010 - 02:37 #4
Jeg bruger InnoDB, fik den til at vise den  venter på andre transactioner er færdige, men jeg fik desværre ikke ROLLBACK til at virke :(
Avatar billede arne_v Ekspert
08. december 2010 - 02:44 #5
Rollback skal virke hvis du gør som jeg beskriver ovenfor.

Altså får slået auto commit fra.
Avatar billede arne_v Ekspert
26. december 2010 - 23:40 #6
Tid at få afsluttet her.

Og et svar fra mig.
Avatar billede arne_v Ekspert
03. marts 2011 - 04:05 #7
??
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester