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

równoczesny dostęp do bazy danych MySQL za pomocą procedury składowanej

Po pierwsze, jak wspomniano w innym poście, użyj InnoDB. Jest to domyślny silnik pamięci masowej od MySQL 5.5 i jest bardziej niezawodny.

Po drugie, spójrz na tę stronę:http:// dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html

Powinieneś użyć opcji WYBIERZ ... DO AKTUALIZACJI, aby uniemożliwić innym połączeniom odczytanie wiersza, który zamierzasz zaktualizować, dopóki transakcja nie zostanie zakończona:

START TRANSACTION;

SELECT value INTO @value
FROM mytable
WHERE id = 5
FOR UPDATE;

UPDATE mytable
SET value = value + 1
WHERE id = 5;

COMMIT;

Jest to lepsze niż blokowanie tabeli, ponieważ InnoDB wykonuje blokady na poziomie wiersza. Powyższa transakcja zablokowałaby tylko wiersze, w których id =5... więc inne zapytanie działające z id =10 nie zostałoby wstrzymane przez to zapytanie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można połączyć się z serwerem MySQL na (IP lub nazwa domeny)

  2. CURTIME() Przykłady – MySQL

  3. Jak używać pythona mysqldb do wstawiania wielu wierszy jednocześnie?

  4. MySql:Pokaż kolumny, ale wyklucz wszystko oprócz nazw pól

  5. MySQL tworzy bazę danych, jeśli nie istnieje