Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Cache de dados em PHP SESSION ou consulta do db cada vez?


Se seus dados são usados ​​em todas as páginas e são os mesmos para todos os usuários, eu não os armazenaria em $_SESSION (o que significa ter uma cópia diferente desses dados para cada usuário), mas com outro mecanismo, como:
  • arquivo
  • Na memória, com APC por exemplo (se apenas 1 servidor)
  • Na memória, com memcached, por exemplo (se você tiver vários servidores)
  • Se seus dados exigirem cálculos longos ou várias consultas de banco de dados a serem obtidas, armazená-los em cache no banco de dados pode ser outra possibilidade (significaria apenas 1 consulta para recuperar e menos cálculos)


Se seus dados não forem os mesmos para cada usuário (o que parece ser o caso na sua situação, pois você está armazenando em cache nomes, datas de nascimento, ...) :
  • Eu me certificaria de armazenar em cache apenas o necessário
  • Uma vez que você tenha apenas alguns dados para armazenar em cache, colocá-los em sessão deve ser muito bom
  • Se você realmente tiver tantos usuários, provavelmente terá outros problemas de escalabilidade e provavelmente usará algo como o memcached de qualquer maneira; o que significa que você terá outra maneira de armazenar em cache;-)

Como uma nota lateral:se você estiver fazendo a mesma consulta repetidamente, seu servidor de banco de dados deve armazená-lo em cache sozinho (para MySQL, ele entraria no "cache de consulta "); então, não seria tão ruim quanto você pensa, suponho - mesmo que não seja tão otimizado ^^