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

MySQLの「更新用に選択」の動作

    あなたのケースを見て、これらのロックがどのように機能するかを説明しましょう:

    1件

    T1は、テストテーブルのいくつかの行を更新しようとしています。このトランザクションにより、すべてのテーブルにIXロックが設定され、最初の5行にXロックが設定されます。

    T2は、テストテーブルのいくつかの行を更新しようとしています。このトランザクションは、すべてのテーブルにIX(IXはIXと互換性があるため)ロックをかけ、最初の5行を試行しますが、XはXと互換性がないため、実行できません。

    だから私たちは元気です。

    2.1ケース

    T1は、テストテーブルのいくつかの行を更新しようとしています。このトランザクションにより、すべてのテーブルにIXロックが設定され、最初の5行にXロックが設定されます。

    T2は、テストテーブルからいくつかの行を選択したいと考えています。また、ロックは設定されません(InnoDBは非ロック読み取りを提供するため)

    2.1ケース

    T1は、テストテーブルのいくつかの行を更新しようとしています。このトランザクションにより、すべてのテーブルにIXロックが設定され、最初の5行にXロックが設定されます。

    T2は、テストテーブルの一部の行を更新(更新用に選択)したいと考えています。テーブル全体にISを配置し、行でSロックを取得しようとしますが、XとSに互換性がないため、失敗します。

    また、常に分離レベルに注意してください。レベルが異なると、ロックを解放/取得するメカニズムも異なります

    お役に立てば幸いです




    1. Dockerコンテナのmysqlデータベースへのアクセス

    2. Symfony 2でデータベースビューのエンティティ(doctrine)を設定する方法

    3. ojdbc14.jarとojdbc6.jar

    4. NOT NULL DEFAULT''のポイントは何ですか?