![]() |
![]() |
![]()
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 ;) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 04:34 |