sql >> Database teknologi >  >> RDS >> Mysql

samtidig adgang til MySQL-database ved hjælp af lagret procedure

Først, som angivet i et andet indlæg, brug InnoDB. Det er standardlagringsmotoren fra MySQL 5.5 og er mere robust.

For det andet, se på denne side:http:// dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html

Du skal bruge en SELECT ... TIL OPDATERING for at forhindre andre forbindelser i at læse den række, du er ved at opdatere, indtil din transaktion er gennemført:

START TRANSACTION;

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

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

COMMIT;

Dette er bedre end at låse tabellen, fordi InnoDB laver rækkeniveaulåse. Transaktionen ovenfor ville kun låse rækkerne, hvor id =5... så en anden forespørgsel, der arbejder med id =10, ville ikke blive tilbageholdt af denne forespørgsel.



  1. Generering af rækkefølge i rækkefølge

  2. python pip installeringsfejl psycopg2

  3. Sideinddeling med OFFSET / FETCH:En bedre måde

  4. Sådan viser du de forældede funktioner i en SQL Server-instans ved hjælp af T-SQL