![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 22.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czy dobrze mi się wydaje czy gdzieś w kodzie może błąd popełniłem.
Zdaje się że duże bazy danych działają dużo, dużo wolniej. Mam kawałek skryptu php który pobiera jeden rekord z bazy mysql. Jeśli baza m jeden rekord wszystko idzie szybko (przykładowo jeden, może być że 100), kiedy ma natomiast 10 milionów idzie powolnie. Normalna sprawa, ma więcej rekordów do przejrzenia itp. Czy jest jakiś sposób żeby działało to tak samo szybko przy dużych bazach albo przynajmniej nie strasznie wolno. Cashowanie nie zadziała bo dan są cały czas zmieniane Nie wiem czy LIMIT 1, zadziała tak ze po znalezieniu przestanie dalej szukać, ale to zadziała tylko gdy rekordy będą z 'przodu' bazy danych. Czy są jakieś sposoby na to? Może zmiana bazy danych na jakiąś inną, ale z innymi nie mam doświadczenia więc proszę o rade która dobrze się sprawdza z dużymi bazami danych. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 61 Pomógł: 9 Dołączył: 22.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ja ze swojej strony polecam trochę bardziej rozbudowane koncepcje na duże bazy danych:
- cachowanie (nie jest to rozwiązanie na bazie danych, ale może znacznie przyspieszyć odczyt danych pobieranych z bazy, poprzez cachowanie odpowiedzi bazy) np:. memcache - replikacje (dublowanie baz danych w celu zrównoleglenia zapytań do poszczególnych duplikatów) W tym rozwiązaniu masz 1 serwer MASTER na którym robisz UPDATE i odpowiednią ilość SLAVE które służą do odczytu danych. Również pomaga w odczytywaniu, ale już na poziomie bazy. Przy dynamicznych danych i małym hit rate cache, może się przydać. - do INSERTów do baz danych jedynie klaster może Ci pomóc. Ale to rozwiązanie raczej nie będzie Ci potrzebne... Oczywiście wszystkie z moich propozycji należy rozważyć po tym jak zoptymalizujesz już strukture swojej bazy (indexy + tabele) i dalej będziesz miał problemy z wydajnością. Z tego co widzę w tym wątku dużo rzeczy można u Ciebie poprawić jeszcze na etapie 1 bazy. SELECTy i opisy "U mnie na bazie okolo 15milionow rekordow wyszzukiwanie z JOINAMI trwa okolo 0,05-0,2sek" sprawdzają się w 100% w momencie gdy nie masz około 100 zapytań / sekunde spowodowanych ogromną ilością użytkowników.\ Może moja propozycja jest na wyrost, a może komuś sie przyda... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 00:42 |