Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Cache na plikach, i jego wydajność przy dużym obciążeniu
osl
post
Post #1





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

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


Na wstępie, sorry za taki ogólny opis - nie za wiele mogę zdradzić - warunki umowy...
Do rzeczy. Podczas opracowywania nowego projektu zaświtała mi w głowie myśl, żeby cachować wyniki (niektórych) zapytań SQL.
Dla uproszczenia dalszych rozważań, przyjmuję, że wszystko (tj apache/mysql/pliki) jest na jednej fizycznej maszynie.
Raz dwa napisałem banalną klasę - przy zapytaniu o pobranie danych, sprawdź czy jest dla tego cache, jeśli nie - pobierz i wygeneruj cache.
Jeśli dane się zmieniają - po prostu usuń plik cache.
Przedmiotem tego cache są dane ściśle związane z użytkownikiem.
Pięknie, działa - ponad 20 razy szybciej niż pobieranie danych z MySQL, choć zapytanie to tak naprawdę złączenie dwóch tabel po id użytkownika.
Pięknie, fajnie - ale dla jednego użytkownika.

Wobec powyższego, pytanie moje brzmi - jak się może zachować taki banalny cache w momencie, kiedy z serwisu korzysta ok 15000 użytkowników, regenerowanie cache przy aktualizowaniu danych? 15k użytkowników = 15k plików ekstra, które trzeba "wyszukać", wczytać, usunąć - choć nie przewiduję plików większych niż 1KB.

Moje największe obawy są związane z dyskiem - czas dostępu, w pewnym sensie "szeregowość" odczytu tych plików... czy przypadkiem przy takim obciążeniu taki cache nie zacznie bardziej szkodzić niż pomagać?

Potraktujcie proszę powyższe jako problem "abstrakcyjny" - nawet przy dobrych rezultatach w obecnym projekcie czegoś takiego nie wdrożę, ale w przyszłości? kto wie...
I na koniec podkreślę - w tym konkretnym przypadku nie interesują mnie inne metody cache niż dump danych do pliku.

jest tu wiele osób o większej wiedzy niż moja - rozwiejcie moje wątpliwości ;)

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Uriziel01
post
Post #2





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

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


Taki mechanizm jest juz wbudowany w samego MySQL'a i nie sądze aby chciało ci sie pisać cos bardziej rozbudowanego. Musisz jedynie pamiętać aby nie używać cacheowania na zapytanuiach używających losowych wartości lub aktualnych timestamp'ów bo to zabije dysk twardy serwera i pochłonie ogrom czasu na wyszukiwanie/katalogowanie:)
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 - 12:42