sql >> Databáze >  >> RDS >> Mysql

VYBERTE MySQL InnoDB...LIMIT 1 PRO AKTUALIZACI Vs. AKTUALIZACE...LIMIT 1

Protože jsem nedostal odpověď, začal jsem dělat benchmarking. Moje kritéria jsou následující:

  • 20 000 předem vygenerovaných kódů
  • Použití Apache ab příkaz s 20 000 požadavky, 100 souběžností:ab -n 20000 -c 100
  • Servlet -> EJB (JPA 2.0 EclipseLink, JTA) k provedení aktualizace v DB (jak to bude prostřednictvím akce JSF v reálné situaci)
  • 2 verze servletu, jedna s možností 1 (SELECT ... FOR UPDATE) a jedna s možností 2 (UPDATE ... LIMIT 1)
  • Zastaveno Glassfish, ručně 5x stisknout testovaný servlet, aby se zahřál, resetovat vše na NULL na user_id
  • Každý test probíhá třikrát a je uveden průměr

Výsledky:

VYBERTE ... PRO AKTUALIZACI; AKTUALIZACE ... :

Concurrency Level:      100
Time taken for tests:   758.116 seconds
Complete requests:      20000
Failed requests:        0
Write errors:           0
Row updated:            20000

AKTUALIZACE.... LIMIT 1:

Concurrency Level:      100
Time taken for tests:   773.659 seconds
Complete requests:      20000
Failed requests:        0
Write errors:           0
Row updated:            20000

Takže alespoň v mém systému se možnost se 2 dotazy zdá efektivnější než jeden dotaz. To jsem nečekal :)




  1. Schema Pattern Search to Data Class Association

  2. Mysql porovnává pole oddělené čárkami s jedním řetězcem

  3. Povolení TLS v Oracle Apps R12.2

  4. Přihlaste výstup DBMS_OUTPUT.Put_Line do tabulky v Oracle pomocí DBMS_OUTPUT.Get_Lines