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

MySQL専用ロック

    はい、user_idのようなインデックス付けされていない列に条件がある場合、テーブル内のすべての行をロックしています。 。

    ロックは、すべての「検査済み」行に適用されます。あなたの条件WHERE user_id = <user_id> すべてを調べる必要があります テーブル内の行を1つずつテストして、<user_id>の値と一致するかどうかを確認します。 。

    どちらのクエリも、<user_id>の特定の値を検索しているにもかかわらず、行のセット全体を調べています。 、したがって、競合します。

    user_idにインデックスがある場合 列の場合、MySQLはそのインデックスを使用して最初に一致する行を検索し、次に一致する行のみが検査対象の行になるため、ロックされます。

    これは、トランザクション分離レベルとは何の関係もありません。これらのタイプのロックは、すべてのトランザクション分離レベルで発生します。




    1. ArrayList<String>を別のアクティビティに渡してdoubleに変換する方法

    2. AccessとExcelを一緒に使用するトップ10の理由

    3. SQLServerで自動インクリメント主キーを定義する方法

    4. 予約システムで空きスロットを見つける