読み取り(選択)クエリRがテーブルから約100レコードを読み取っていて、これまでに50レコードが読み取られたとすると、その間に書き込みクエリWは未読レコードの一部を変更できますか?
テーブル(またはレコードの読み取り)をロックしませんでした。
単一のレコードの読み取り(すべてのレコードの読み取り)がアトミック操作であることは明らかだと思いますが、いくつか(おそらく数百万)のレコードを読み取るかどうかはわかりません。アトミック操作ですか?その間に書き込みクエリが実行される可能性があり、読み取りクエリの開始時にすべてのレコードの一貫したスナップショットが必要な場合、(1つのクエリで)複数のレコードを読み取るときに読み取りロックを取得する必要がありますか?実行されましたか?
MySQLを使用しています。
はい、それは可能であり、これは望ましい場合と望ましくない場合があります。データベース理論には、他のプロセスに対するトランザクションの可視性に関する isolation の概念があります。 set transaction
に関するMySqlのドキュメントには、製品固有の構文に関する説明があります。