Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [inne][PHP][MySQL]Cachowanie - kilka pytań praktycznych
Userr
post
Post #1





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 27.10.2015

Ostrzeżenie: (0%)
-----


1. Powiedzmy, że chciałbym zcachować informacje, które pojawiają się w profilach użytkowników (przykładowo tych profili będzie 10 000). W każdym profilu będą 3 tabelki, a w każdej z nich po 5 wierszy. Czy wydajniej będzie trzymać informacje z tych tabelek w trzech różnych plikach cache, czy w jednym (i np. rozdzieliłbym informacje z tych tabelek pustą linią (znak ENTER'a) lub jakimś ciągiem znaków np. ##################### i później w PHP już w prosty sposób byłoby rozdzielić to za pomocą explode())?

2. Jeżeli mam w pliku cache informacje składającą się z 100 000 wierszy i chciałbym dodać nowy wiersz, to nadpisuję zawartość całego pliku cache, czy jakoś tylko dodaje na sam koniec nowy wiersz?

3. Dlaczego wczytanie z cache jest szybsze niż zapytanie z relacyjnej bazy danych (nie mówię tu o jakimś bardziej złożonym zapytaniu, które wymaga dodatkowych obliczeń - np. sortowaniu, tylko o najprostszym select - wczytaniu zawartości tabeli)? Relacyjna baza danych jest przechowywana na HDD serwera, a gdzie jest przechowywany plik cache? W jakiejś specjalnej szybkiej (skoro wczytywanie z cache jest szybsze niż z relacyjnej bazy danych) pamięci cache - jakby nazwa wskazywała (IMG:style_emoticons/default/smile.gif) ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


AD1 nie twórz swoich formatów, serializuj dane i je deserializuj. Im mniej odwołań do dysku tym lepiej.
AD2 100k wierszy w pliku? Słabo.
AD3 plik ma tylko jedno odwołanie, relacje są ogólnie "ciężkie". Mówiąc cache, zazwyczaj myśli się o pamięci ram, np redis/memcache. Działają one szybciej niż relacyjne bazy bo: mają płaską strukturę, oraz wszystko trzymają w pamięci ram, do której dostęp jest kilka rzędów szybszy niż do dysku twardego.

Jeżeli zapytanie jest wolne, to albo masz brak indeksów, albo sama struktura bazy jest kiepska. Odczytując dane z pamięci ram będzie szybsze, ale nie w każdym przypadku. Po prostu redis/memcache poradzą sobie w tym przypadku zdecydowanie lepiej niż relacyjna baza danych, bo podchodzą do tematu zupełnie inaczej. Co nie znaczy że powinieneś się w całości przesiąść na redisa/memcache.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 13:18