Mysql
 sql >> Baza danych >  >> RDS >> Mysql

WYBIERZ DO AKTUALIZACJI przechowując całą tabelę w MySQL, a nie wiersz po wierszu

Domyślny poziom izolacji dla tabel InnoDB to odczyt powtarzalny. Gdy ten poziom izolacji jest aktywny, otrzymujemy następujące zachowanie (cytat z:https://dev.mysql.com/doc/refman/5.5/en/set-transaction.html ):

Innymi słowy:czy możesz spróbować użyć klucza podstawowego w warunku WHERE polecenia SELECT? Na przykład zamiast:

START TRANSACTION;
SELECT * FROM productMacAddress WHERE status='free' limit 8 FOR UPDATE;

Wypróbuj:

START TRANSACTION;
SELECT * FROM productMacAddress WHERE id=10 FOR UPDATE;

w przypadku id jest kluczem podstawowym. Każda inna kolumna z unikalnym indeksem też by działała. Używając nieunikalnych kolumn w klauzuli WHERE, InnoDB zablokuje zakres wierszy.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. przepisz połączenie i zapytanie z mysql do PDO

  2. Mock bazy danych MySQL w Pythonie

  3. Jak wstawić, jeśli wiersz nie istnieje (UPSERT) w MySQL?

  4. Dodaj sortowanie stronicowania i wyszukiwanie za pomocą jquery datatable

  5. Co jest bardziej wydajne:wiele tabel MySQL czy jedna duża tabela?