sql >> Databáze >  >> RDS >> Mysql

souběžný přístup k databázi MySQL pomocí uložené procedury

Nejprve, jak je uvedeno v jiném příspěvku, použijte InnoDB. Je to výchozí úložiště od MySQL 5.5 a je robustnější.

Za druhé, podívejte se na tuto stránku:http:// dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html

Měli byste použít SELECT ... FOR UPDATE, abyste zabránili ostatním připojením číst řádek, který se chystáte aktualizovat, dokud nebude vaše transakce dokončena:

START TRANSACTION;

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

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

COMMIT;

To je lepší než zamykání tabulky, protože InnoDB provádí zámky na úrovni řádků. Výše uvedená transakce by uzamkla pouze řádky, kde id =5... takže další dotaz pracující s id =10 by tento dotaz nezdržel.



  1. OracleException (0x80004005) při připojování k databázi Oracle

  2. PostgreSQL Connection Pooling:Část 4 – PgBouncer vs. Pgpool-II

  3. Jak UUID() funguje v MariaDB

  4. MySQL - Načítání nejnižší hodnoty