Da jeg ikke fik svar, begyndte jeg at lave benchmarking. Mine kriterier er som følger:
- 20.000 prægenererede koder
- Brug af Apache
ab
kommando med 20.000 anmodninger, 100 samtidighed:ab -n 20000 -c 100
- Servlet -> EJB (JPA 2.0 EclipseLink, JTA) til at udføre opdateringen i DB (som det vil være gennem en JSF-handling i en virkelig situation)
- 2 versioner af Servlet, en med mulighed 1 (VÆLG ... TIL OPDATERING ), og en med mulighed 2 (OPDATERING ... GRÆNSE 1)
- Stoppet Glassfish, tryk på den testede Servlet manuelt 5 gange for at varme den op, nulstil alt til NULL til user_id
- Tester køres 3 gange hver, og der er angivet gennemsnit
Resultater:
VÆLG ... FOR OPDATERING; OPDATERING ... :
Concurrency Level: 100
Time taken for tests: 758.116 seconds
Complete requests: 20000
Failed requests: 0
Write errors: 0
Row updated: 20000
OPDATERING.... GRÆNSE 1:
Concurrency Level: 100
Time taken for tests: 773.659 seconds
Complete requests: 20000
Failed requests: 0
Write errors: 0
Row updated: 20000
Så i det mindste på mit system virker muligheden med 2 forespørgsler mere effektiv end den ene forespørgsel. Det havde jeg ikke forventet :)