sql >> Database >  >> RDS >> Mysql

Cachegegevens in PHP SESSION, of elke keer opvragen vanuit db?

Als uw gegevens op elke pagina worden gebruikt en voor alle gebruikers hetzelfde zijn, zou ik ze niet in de cache plaatsen in $_SESSION (wat betekent dat u voor elke gebruiker een andere kopie van die gegevens hebt), maar met een ander mechanisme, zoals:

  • bestand
  • In het geheugen, bijvoorbeeld met APC (als er maar 1 server is)
  • In het geheugen, bijvoorbeeld met geheugencache (als je meerdere servers hebt)
  • Als voor uw gegevens lange berekeningen of meerdere DB-query's nodig zijn, kan het cachen ervan in de database een andere mogelijkheid zijn (zou slechts 1 query kunnen terughalen en minder berekeningen)


Als uw gegevens niet voor elke gebruiker hetzelfde zijn (wat in uw situatie het geval lijkt te zijn, aangezien u namen, geboortedata, ...) opslaat :

  • Ik zou ervoor zorgen dat ik alleen cache wat nodig is
  • Als je maar een paar gegevens hebt om te cachen, zou het goed moeten zijn om deze in een sessie te plaatsen
  • Als je echt zoveel gebruikers hebt, zul je waarschijnlijk wat andere schaalbaarheidsproblemen hebben, en zal je waarschijnlijk toch iets als memcached gaan gebruiken; wat betekent dat je een andere manier van cachen hebt;-)

Als een kanttekening:als je dezelfde query steeds opnieuw doet, moet je DB-server het zelf in de cache plaatsen (voor MySQL zou het in de "querycache "); dus het zou niet zo erg zijn als je denkt, denk ik -- zelfs als het niet zo erg geoptimaliseerd is ^^



  1. utf8mb4_unicode_ci versus utf8mb4_bin

  2. TAAL MAKEN plpython3u – PostgreSQL 9.6

  3. Hoe REGEXP_INSTR() werkt in MariaDB

  4. MySQL LAG/LEAD-probleem