Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL InnoDB SELECT...LIMIT 1 ЗА АКТУАЛИЗАЦИЯ срещу UPDATE...LIMIT 1

Тъй като не получих отговор, започнах да правя бенчмаркинг. Моите критерии са следните:

  • 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 заявки изглежда по-ефективна от едната заявка. Не го очаквах :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django на Google App Engine с Cloud SQL в среда за разработка

  2. Laravel 5.1 - Homestead MySQL връзка. „Връзката е отказана“ и „Няма такъв файл или директория“.

  3. Позволете на потребителите да оценят коментар веднъж PHP MySQL

  4. Вземете друга поръчка след лимит

  5. Получаване на грешка Незаконен микс от съпоставяне (utf8mb4_unicode_ci,IMPLICIT) и (utf8mb4_general_ci,IMPLICIT) за операция '='