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

Barbara Streisand
リリース: 2024-10-31 11:25:29
オリジナル
689 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!