1

多くのユーザーがデータベースにアクセスしている場合、データベースをロックする必要がありますか? YES の場合、テーブルまたはデータベースをロックする方法は? ロックを取得しない場合の問題は何ですか? 例: ユーザーがテーブルを更新し、誰かがこのテーブルからデータをフェッチする場合、このテーブルをロックする必要がありますか?

4

2 に答える 2

2

使用する必要がありますTransactions

ユーザーがテーブルを更新するとき、UPDATEステートメントはSTART TRANSACTION句内にある必要があります。UPDATE が成功した場合は、COMMITelse ROLLBACK.

でテーブルをロックできますLOCK TABLES。ただし、LOCK TABLES でテーブルをロックすると、整合性チェックが行われるまですべての更新が停止します。READ LOCALテーブルの最後で同時挿入を可能にするロック (書き込みロックではなく) を取得すると、他のクライアントによる挿入と同様に、読み取りが許可されます。

http://dev.mysql.com/doc/refman/5.5/en/commit.html

http://dev.mysql.com/doc/refman/5.0/en/ansi-diff-transactions.html

于 2012-05-24T10:01:11.237 に答える
1

トランザクション分離レベルに応じて、MySQL は自動的にロックを発行します。それらがどのように相互作用するかは、トランザクション分離レベルによって決まります。

非常に特殊な状況でのみ、テーブルまたはデータベース リソースのロックを手動で要求します。ほとんどの場合、これは MySQL によって行われます。上記の回答には、読んで理解することが非常に重要なリンクがあります。

于 2012-05-24T10:14:48.663 に答える