Тъй като не получих отговор, започнах да правя бенчмаркинг. Моите критерии са следните:
- 20 000 предварително генерирани кода
- Използване на Apache
ab
команда с 20 000 заявки, 100 едновременност:ab -n 20000 -c 100
- Сервлет -> EJB (JPA 2.0 EclipseLink, JTA) за извършване на актуализацията в DB (както ще бъде чрез JSF действие в реална ситуация)
- 2 версии на сервлета, една с опция 1 (ИЗБЕРЕТЕ ... ЗА АКТУАЛИЗИРАНЕ) и една с опция 2 (АКТУАЛИЗИРАНЕ ... ОГРАНИЧЕНИЕ 1)
- Спрете Glassfish, натиснете ръчно тествания сервлет 5 пъти, за да го загреете, нулирайте всички на NULL до user_id
- Тестовете се провеждат 3 пъти всеки и се предоставя средна стойност
Резултати:
ИЗБЕРЕТЕ ... ЗА АКТУАЛИЗИРАНЕ; АКТУАЛИЗИРАНЕ... :
Concurrency Level: 100
Time taken for tests: 758.116 seconds
Complete requests: 20000
Failed requests: 0
Write errors: 0
Row updated: 20000
АКТУАЛИЗИРАНЕ.... ОГРАНИЧЕНИЕ 1:
Concurrency Level: 100
Time taken for tests: 773.659 seconds
Complete requests: 20000
Failed requests: 0
Write errors: 0
Row updated: 20000
Така че поне в моята система опцията с 2 заявки изглежда по-ефективна от едната заявка. Не го очаквах :)