sql >> データベース >  >> RDS >> Mysql

MySQLの同時実行性、それはどのように機能し、アプリケーションで処理する必要がありますか

    SQLステートメントはアトミックです。つまり、次のようなものを実行した場合:

    UPDATE Cars SET Sold = Sold + 1
    

    Soldは誰も変更できません このステートメント中の変数。他の誰かが同じステートメントを同時に実行している場合でも、常に1ずつ増加します。

    相互に依存するステートメントがある場合、問題が発生します:

    a = SELECT Sold FROM Cars;
    UPDATE Cars SET Sold = a + 1;
    

    これらのクエリの間に、別のユーザーがテーブルCarsを変更してSoldを更新できます。これを防ぐには、トランザクションでラップします:

    BEGIN;
    a = SELECT Sold FROM Cars;
    UPDATE Cars SET Sold = a + 1;
    COMMIT;
    

    トランザクションはInnoDBでサポートされていますが、MyISAMではサポートされていません。




    1. SQLServer2014インクリメンタル統計

    2. MySQLの列名の空白

    3. データベースの結果を配列に変換する

    4. PostgreSQLでの高可用性の管理–パートIII:Patroni