sql >> Database >  >> RDS >> Mysql

Waarom werkt dit voorbeeld van selecteren voor update?

Ik denk dat het verwachte gedrag een beetje afwijkt. Voordat db_slow zich commit, worden alle rijen in de tabel vergrendeld. Nadat het is gecommit, zijn er twee rijen. db_fast wordt gedeblokkeerd wanneer db_slow commit. Het gedrag is dus:

  1. db_slow:selecteer rij 1 en vergrendel deze
  2. db_slow:zie dat het maar 1 rij is en wacht
  3. db_fast:probeer rij 1 te selecteren, kijk of deze vergrendeld is, wacht
  4. db_slow:rij invoegen met '2'
  5. db_slow:commit
  6. db_fast:gedeblokkeerd en leest 2 rijen
  7. db_fast:doet niets
  8. Eindig met foo:1, 2



  1. Een restant krijgen met MOD() in PostgreSQL, MS SQL Server en MySQL

  2. Class.forName(com.mysql.jdbc.Driver) zoekt niet in jar-bestand voor de klasse

  3. Hoe combineer ik gegevens uit twee afzonderlijke tabellen in een enkele cursor?

  4. Mysql join-query voor meerdere tags (veel-op-veel-relatie) die overeenkomt met ALLE tags?