ホームページ  >  記事  >  データベース  >  MySQL の MyISAM テーブルで行レベルのロックを実現するにはどうすればよいですか?

MySQL の MyISAM テーブルで行レベルのロックを実現するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-31 11:25:29690ブラウズ

How to Achieve Row-Level Locking in MySQL's MyISAM Tables?

MyISAM テーブルの単一行のロック

MySQL では、MyISAM テーブルは行レベルのロックをサポートしていません。ただし、行レベルのロック機能が必要な場合は、この機能を提供する InnoDB への切り替えを検討できます。

行レベルのロックのために InnoDB に切り替える

行レベルのロックを有効にするには、ユーザー テーブルを MyISAM から InnoDB に変換する必要があります。これは、次のコマンドを使用して実行できます。

ALTER TABLE <user_table> ENGINE=InnoDB;

InnoDB に変換したら、SELECT ... FOR UPDATE ステートメントを使用して、特定の行の排他ロックを取得できます。これにより、ロックが解放されるまで、他のセッションはロックされた行を変更したりアクセスしたりできなくなります。

次に例を示します:

SELECT * FROM <user_table> 
WHERE <condition> 
FOR UPDATE;

注: ロックを解放する必要があります。行に対する操作が完了したらすぐに。これは、COMMIT または ROLLBACK ステートメントを発行することで実行できます。

追加リソース:

  • [MySQL ドキュメント: InnoDB テーブルの SQL ステートメントによって設定されたロック]( http://dev.mysql.com/doc/refman/5.0/en/innodb-locks-set.html)

以上がMySQL の MyISAM テーブルで行レベルのロックを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。