sql >> Databáze >  >> RDS >> Mysql

Cache data v PHP SESSION, nebo dotaz z db pokaždé?

Pokud jsou vaše data používána na všech stránkách a jsou stejná pro všechny uživatele, neukládal bych je do mezipaměti v $_SESSION (což znamená mít pro každého uživatele jinou kopii těchto dat), ale pomocí jiného mechanismu, jako:

  • soubor
  • V paměti, například s APC (pokud je pouze 1 server)
  • V paměti, například s memcached (pokud máte několik serverů)
  • Pokud vaše data vyžadují dlouhé výpočty nebo získání několika DB dotazů, může být další možností jejich uložení do mezipaměti v databázi (znamenalo by to pouze jeden dotaz k načtení zpět a méně výpočtů)


Pokud vaše data nejsou pro každého uživatele stejná (což se zdá být případ vaší situace, protože do mezipaměti ukládáte jména, data narození, ...) :

  • Ujistil bych se, že ukládám do mezipaměti pouze to, co je nezbytné
  • Jakmile budete mít do mezipaměti jen několik dat, jejich uvedení do relace by mělo být v pořádku
  • Pokud máte opravdu tolik uživatelů, pravděpodobně budete mít nějaké další problémy se škálovatelností a stejně nejspíše začnete používat něco jako memcached; což znamená, že budete mít jiný způsob ukládání do mezipaměti;-)

Jako vedlejší poznámka:pokud děláte stejný dotaz znovu a znovu, váš DB server by jej měl sám uložit do mezipaměti (pro MySQL by to šlo do "mezipaměť dotazů "), takže by to nebylo tak špatné, jak si myslíte, předpokládám - i když ne tak moc optimalizované ^^



  1. rake db:create se vygeneruje, pokud znakovou sadu nastavíte ručně, ujistěte se, že máte chybu porovnávání

  2. pomocná funkce fetchAll pomocí PDO

  3. PHP krátké generování jedinečného ID pomocí auto_increment?

  4. Jak funguje GREATEST() v MariaDB