jeg har 2 tabeller der skrives til via et java program. mit problem omhandler concurrency.
Tabel 1 skal have skrevet 1 række og opdatet 1 række. Tabel 2 skal have skrevet 100000 rækker.
i tabel 1 må og skal der kun være én række der har status "AKTU" og det skal altid være den sidste række der er skrevet til tabellen.
rækkefølgen er sådan nu:
1. transaktion begynder
2. tabel 1 opdateres med at rækken (eller alle rækker) med AKTU ændres til HIST
3. der indsættes i tabel 1 en ny række med AKTU
4. der skrives 100000 rækker til tabel 2
5. transaktion 2 commites
mit problem at at der med det nuværende setup kan opstå flere rækker med AKTU, da trin 2 jo ikke ændrer AKTU til HIST for andre concurrent transationer der kører på samme tid.
Det er muligt at de andre transaktioner gør at transaction isolation level bør være repeatable read eller serializable, men det er svært at sige uden at vide hvad de gør.
hvis der nu er 2 brugere der hver især kører en transaktion som den beskrevet på samme tid. så opstår problemet. Da trin 2 jo kun berøre de transaktioner der er committed og da ingen af dem er committed når den anden kommer til trin 2 bliver de ikke ændret til HIST. og de begge i trin 3 indsætter så en række med AKTU.
hvis de 2 transaktioner først køres når den anden er færdig, ja så er den commited og så ændres AKTU til HIST og den nye række der indsættes har så AKTU som den eneste.
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.