Utilizzo di MYSQL, con EF 5.xe MVC3. Ho un tavolo con circa 3,2 milioni di file che ha una combinazione di città, paese. Ho una casella di testo a completamento automatico sul lato client che accetta il termine di ricerca della città e invia i suggerimenti utilizzando jQuery/ajax.Tabelle statiche cache Mysql
La sfida che sto affrontando è che io Cache questo tavolo nella mia memoria quando il suo usato per la prima volta utilizzando:
CityData = DataContext.Citys.OrderBy(v => v.Country).ToList();
if (CityData.Any())
{
// Put this data into the cache for 30 minutes
Cache.Set("Citys", CityData, 30);
}
Questo timeout, anche quando ho impostato il mio timeout db-context per 5 minuti. Quando eseguo questo SQL contro il DB utilizzando il client MySQL ci vogliono circa 3 minuti per tirare tutte le righe.
Qual è il modo migliore per leggere questi dati nella cache o devo fare qualcosa di diverso? Posso memorizzare la tabella nella cache direttamente nella memoria cache di MySQL se sì, come? O dovrei inviare il termine search direttamente a DB invece di farlo usando i dati nella cache.
Se è per il completamento automatico, non avresti una query che utilizza il termine di ricerca e recupera solo risultati rilevanti? O è che vuoi che la query di ricerca scappi dai dati memorizzati nella cache? – MikeSmithDev
@MikeSmithDev fa un buon punto, probabilmente state meglio mettere in cache le singole query sul database. È possibile memorizzare la query nella cache per un lungo periodo di tempo, quindi dopo un po 'una grande percentuale delle ricerche non andrà al database. Hai anche la possibilità di memorizzare nella cache il json risultante come un file, in questo modo devi solo restituire il file json non appena ricevi una tale richiesta. – cowls
sì, il termine di ricerca va contro i dati memorizzati nella cache –