sql >> Database >  >> RDS >> Mysql

gelijktijdige toegang tot MySQL-database met behulp van opgeslagen procedure

Gebruik eerst, zoals vermeld in een ander bericht, InnoDB. Het is de standaard opslagengine vanaf MySQL 5.5 en is robuuster.

Ten tweede, kijk op deze pagina:http:// dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html

U moet een SELECT ... FOR UPDATE gebruiken om te voorkomen dat andere verbindingen de rij lezen die u gaat bijwerken totdat uw transactie is voltooid:

START TRANSACTION;

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

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

COMMIT;

Dit is beter dan de tafel te vergrendelen, omdat InnoDB vergrendelingen op rijniveau uitvoert. De bovenstaande transactie zou alleen de rijen vergrendelen waar id =5... dus een andere zoekopdracht die werkt met id =10 zou niet worden opgehouden door deze zoekopdracht.



  1. HTML/PHP-vervolgkeuzelijst invullen op basis van eerste vervolgkeuzelijst

  2. Staat Oracle de niet-vastgelegde leesoptie toe?

  3. Mysql_*-functies vervangen door PDO en voorbereide instructies

  4. Hoe krijg ik het huidige jaar met SQL op Oracle?