Eftersom jag inte fick något svar började jag göra benchmarking. Mina kriterier är följande:
- 20 000 förgenererade koder
- Användning av Apache
ab
kommando med 20 000 förfrågningar, 100 samtidighet:ab -n 20000 -c 100
- Servlet -> EJB (JPA 2.0 EclipseLink, JTA) för att utföra uppdateringen i DB (som det kommer att vara genom en JSF-åtgärd i verklig situation)
- 2 versioner av Servlet, en med alternativ 1 (VÄLJ ... FÖR UPPDATERING ), och en med alternativ 2 (UPPDATERING ... GRÄNS 1)
- Stoppade Glassfish, tryck på den testade Servlet manuellt 5 gånger för att värma upp den, återställ allt till NULL till user_id
- Tester körs 3 gånger vardera och ett genomsnitt anges
Resultat:
VÄLJ ... FÖR UPPDATERING; UPPDATERING ... :
Concurrency Level: 100
Time taken for tests: 758.116 seconds
Complete requests: 20000
Failed requests: 0
Write errors: 0
Row updated: 20000
UPPDATERING.... GRÄNS 1:
Concurrency Level: 100
Time taken for tests: 773.659 seconds
Complete requests: 20000
Failed requests: 0
Write errors: 0
Row updated: 20000
Så åtminstone på mitt system verkar alternativet med 2 frågor mer effektivt än en fråga. Det hade jag inte förväntat mig :)