Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
設計上、すべての読み取りはスレーブから行い、マスターで更新する必要があります。
ただし、次の状況を考慮してください。
table_a に列 water_mark があり、
列 time_mark が列 water_mark より大きい table_b から読み取る必要があります
table_a、
スレーブから読み取る場合は、マスターで water_mark 列を「now()」に更新し、
スレーブとマスターの間に大きな遅延がある場合はどうなりますか?
あなたが示すように、それは安全ではありません。SELECT ... FOR UPDATEそして、他の「書き込みのために読み取る」トランザクションは、同じサーバー上で読み取りと書き込みを行う必要があります (もちろん、InnoDB テーブルでも;-)。
SELECT ... FOR UPDATE