Benvenuti all'ennesima sega mentale di skidx![]()
Dunque, il Mysql ha questa cosa meravigliosa che è la cache.
Da quel che ho capito la cache viene invalidata ogni volta che la tabella viene modificata, correggetemi se sbaglio.
Ora, io ho la seguente situazione:
relazione post:commenti, 1 a N, normalizzata come al solito.
Siccome è frequente che assieme un certo numero di post, mi vengano richiesti anche il numero di commenti per ogni post, avevo pensato di introdurre una piccola ridondanza, tenendo presente il fatto che le scritture sono sempre molto inferiori alle letture.
Quindi utilizzerei un altro campo "numCommenti" per ogni post, incrementandolo ad ogni insert di un nuovo commento. In questo mondo prelevando i post potrei subito prendere anche il numero di commenti corrispondente, senza fare query aggiuntive.
Però:
le scritture dei commenti avvengono molto più frequentemente di quelle dei post, facendo in questo modo finirei per invalidare la cache della tabella post all'aggiunta di ogni commento, perdendo quindi il vantaggio in prestazioni che volevo ottenere con la mia ridondanza.
Quindi la mia ipotesi:
se aggiungessi una terza tabella, in relazione 1:1 con quella dei post, e andassi a scrivere lì il numero dei commenti, risolverei il problema oppure no?
In altre parole, se ho due tabelle in una join, in una ho scritto da poco e nell'altra no, la cache della seconda viene comunque utilizzata nella mia query o viene ingnorata perché quella della prima tabella è stata invalidata?
Spero di essermi spiegato.![]()
Grazie.