Karena saya tidak mendapatkan jawaban, saya mulai melakukan benchmarking. Kriteria saya adalah sebagai berikut:
- 20.000 kode yang dibuat sebelumnya
- Penggunaan Apache
ab
perintah dengan 20.000 permintaan, 100 konkurensi:ab -n 20000 -c 100
- Servlet -> EJB (JPA 2.0 EclipseLink, JTA) untuk melakukan pembaruan dalam DB (karena akan melalui tindakan JSF dalam situasi nyata)
- 2 versi Servlet, satu dengan opsi 1 (PILIH ... UNTUK UPDATE ), dan satu lagi dengan opsi 2 (PERBARUI ... BATAS 1)
- Hentikan Glassfish, tekan Servlet yang diuji secara manual 5 kali untuk menghangatkannya, setel ulang semua ke NULL ke user_id
- Tes dijalankan masing-masing 3 kali dan diberikan rata-rata
Hasil:
PILIH ... UNTUK PEMBARUAN; PERBARUI ... :
Concurrency Level: 100
Time taken for tests: 758.116 seconds
Complete requests: 20000
Failed requests: 0
Write errors: 0
Row updated: 20000
PERBARUI.... BATAS 1:
Concurrency Level: 100
Time taken for tests: 773.659 seconds
Complete requests: 20000
Failed requests: 0
Write errors: 0
Row updated: 20000
Jadi setidaknya di sistem saya, opsi dengan 2 kueri tampaknya lebih efisien daripada satu kueri. Saya tidak mengharapkan itu :)