2

設計上、すべての読み取りはスレーブから行い、マスターで更新する必要があります。

ただし、次の状況を考慮してください。

table_a に列 water_mark があり、

列 time_mark が列 water_mark より大きい table_b から読み取る必要があります

table_a、

スレーブから読み取る場合は、マスターで water_mark 列を「now()」に更新し、

スレーブとマスターの間に大きな遅延がある場合はどうなりますか?

4

1 に答える 1

2

あなたが示すように、それは安全ではありません。SELECT ... FOR UPDATEそして、他の「書き込みのために読み取る」トランザクションは、同じサーバー上で読み取りと書き込みを行う必要があります (もちろん、InnoDB テーブルでも;-)。

于 2009-06-04T03:26:24.403 に答える