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

Zámek na úrovni stolu v režimu spánku

"Vybrat... pro aktualizaci" je v režimu spánku podporováno prostřednictvím Režim uzamčení.UPGRADE který můžete nastavit například v NamedQuery .

Ale používání aplikačního/manuálního zamykání řádků tabulky má několik nevýhod (zejména když se připojení k databázi přeruší v polovině transakce) a vaše aktualizační procedura se bez něj obejde:

  • Zahájit transakci.
  • aktualizovat sadu tabulky state='PENDING', server_id=1, kde state='IN PROGRESS';
  • Potvrdit transakci
  • vyberte z tabulky, kde state='PENDING' a server_id=1;
  • [záznamy o zpracování]

Každý server musí mít jedinečné číslo, aby to fungovalo, ale bude méně náchylné k chybám a necháte DBMS dělat to, v čem má být dobrý:izolace (viz KYSELINA ).




  1. Najděte všechny celočíselné sloupce, které dosahují svých limitů, pomocí information_schema

  2. SQLSTATE[23000]:Porušení omezení integrity:1452 Nelze přidat nebo aktualizovat podřízený řádek:omezení cizího klíče se nezdaří

  3. MySQL JOIN pouze k nejnovějšímu řádku?

  4. Klasické ASP + Motobit Pure ASP Upload + UTF-8 znaková sada