![]() |
![]() |
![]()
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 ;) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 41 Dołączył: 6.04.2009 Skąd: Gdańsk/okolice Ostrzeżenie: (0%) ![]() ![]() |
ależ ja wiem, że cache jest wymagany (IMG:style_emoticons/default/wink.gif)
dokładnie wiem jak działa itepe idede Cache poszczególnych stron jest, korzystam z opensourcowego CMSa, ale zastanawiam się jak mogę go przyspieszyć. Tutaj chodzi mi tylko o cache poszczególnych zapytań SQL. Wyniki zapytań serlializuję i wrzucam do pliku. Chodzi mi tylko i wyłącznie o przypadek dumpowania i regenerowania takiego cache w przypadku dużego obciążenia - specyfika projektu jest taka, że 15k użytkowników może logować się i edytować dane, które są w cache - w jednym momencie. Nie chciałbym zabić dysku (IMG:style_emoticons/default/wink.gif) W chwili obecnej testowo mam cache dla jednego zapytania, w przypadku kolejnych + moment krytyczny = regeneraja N x 15k plików. Plus - wszelki cache pochodzący od samego CMSa, sam silnik... nie za dużo operacji I/O na raz? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 02:20 |