Mysql
 sql >> Database >  >> RDS >> Mysql

Cache i dati in PHP SESSION o interroga ogni volta da db?

Se i tuoi dati vengono utilizzati su tutte le pagine e sono gli stessi per tutti gli utenti, non li metterei nella cache in $_SESSION (il che significa avere una copia diversa di quei dati per ogni utente), ma con un altro meccanismo, come:

  • file
  • In memoria, ad esempio con APC (se solo 1 server)
  • In memoria, ad esempio con memcached (se hai più server)
  • Se i tuoi dati richiedono calcoli lunghi o più query DB da ottenere, la memorizzazione nella cache nel database potrebbe essere un'altra possibilità (significherebbe solo 1 query da recuperare e meno calcoli)


Se i tuoi dati non sono gli stessi per ogni utente (cosa che sembra essere il caso nella tua situazione, dato che stai memorizzando nella cache nomi, date di nascita, ...) :

  • Mi assicurerei di memorizzare nella cache solo ciò che è necessario
  • Una volta che hai solo pochi dati da memorizzare nella cache, metterli in sessione dovrebbe essere abbastanza OK
  • Se hai davvero così tanti utenti, probabilmente avrai altri problemi di scalabilità e molto probabilmente utilizzerai comunque qualcosa come memcached; il che significa che avrai un altro modo di memorizzare nella cache;-)

Come nota a margine:se si esegue la stessa query più e più volte, il server DB dovrebbe memorizzarlo nella cache da solo (per MySQL, andrebbe in "cache delle query "); quindi, non sarebbe così male come pensi, suppongo -- anche se non così ottimizzato ^^