複数のコンピューターから実行されるアプリケーションを開発しています。mysql テーブルをロックしたいので、1 つのプロセスが書き込みを行い、他のプロセスが同時に読み取りを行っているなど、プロセスの同時実行の問題が発生しません。またはさらに悪いことに、両方のプロセスが同時に異なる値を書き込む (更新する) こともあります。MySQL はロックを提供しますが、ドキュメントによると、InnoDB でロックを使用することは避けるべきです。ここを読んでください。この場合どうすればよいかアドバイスをお願いします。みんな、ありがとう。
質問する
102 次
1 に答える
0
InnoDB は、ACID を完全にサポートするトランザクション ストレージ エンジンです。InnoDB の特性の 1 つは、同時更新を処理することです。正確な方法は分離レベルによって異なりますが、一般的に InnoDB では、行をロックすることにより、2 つのトランザクションが同じ行を変更することを許可しません。テーブル全体をロックしないため、他のトランザクションによって他のレコードを変更できます。
分離レベルをserializable
アプリケーションに設定すると、並行性がまったくないため、アプリケーションは機能しますが、ある程度の並行性は許可されます。
分離レベルが高いほど同時実行性は低くなりますが、テーブルをロックした場合よりも多くの同時実行性があります。
于 2013-07-07T07:51:26.317 に答える