Omdat MySQL-replicatietijd een onbeheersbare variabele is (zelfs bij de juiste implementaties kunnen er problemen optreden die replicatie blokkeren of blokkeren), kunt u het beste niet vertrouwen op het repliceren van gegevens. U kunt het probleem onderverdelen in twee situaties:
1) Ik ben de gebruiker die een CUD-bewerking uitvoert, ik verwacht dat de R-bewerking achteraf de wijziging weerspiegelt die ik zojuist heb aangebracht. In dit geval moet je absoluut de gegevens van de master halen, omdat de gebruiker verwacht dat zijn wijziging effect heeft gehad.
2) Ik ben een externe gebruiker, ik weet niet dat er een CUD-opdracht is gebeurd en het kan me over het algemeen niet schelen, dus het retourneren van verouderde gegevens is acceptabel (in 99% van de implementaties, anders zou u waarschijnlijk geen PHP gebruiken* ).
Een alternatief voor #1 zou zijn om de gebruiker te informeren dat zijn wijziging zich verspreidt en in sommige situaties acceptabel is, b.v. veel websites zullen u vertellen dat het tot y minuten kan duren voordat x verschijnt, dit is deze situatie in actie.
- Als je onmiddellijke updates nodig hebt, kun je proberen te schrijven naar een cachelaag die samen met de (mogelijk onbetrouwbare) DB-gegevens wordt opgevraagd. Iets als memcached zou een uitstekende kandidaat zijn.