Mysql Optymalizacja zapytań

0

Witam

Nie mam za dużego doświadczenia w bazach danych.
Ale mam takie pytanie jak np robimy statystyki na stronie głównej i chcemy pokazać np ilość osób w servisie i/lub ilość ich postów.
To teraz zrobiłem sobie CREATE VIEW gdzie daje select count() from User itd itp

Ale zastanawiam się czy nie jest to czasochłonna operacja przecież jeśli założymy że użytkowników będzie np 10 000 to wtedy za każdym razem jak ktoś otwiera stronę główną to zapytanie musi się wykonać nie mówiąc już o innych rzeczach.

Tak się zastanawiam czy nie lepszym sposobem (może nie lepszym ale wydajniejszym) nie jest w takiej sytuacji utworzenie nie View ale pomocniczej tabeli przykładowo Statistic i tam np przechowywać globalne statystyczne np ilość userów ilość postów
Tylko wtedy za każdym razem jak dodaje lub usuwam usera musiałbym też robic merge na tej tabeli. Co nie jest raczej dobrym rozwiązaniem ....

Nie ma takiego mechanizmu nie wiem moze triggery gdzie gdy np będę coś dodawał czy usuwał to sie będzie automatycznie aktualizowała ????

0

Metoda z tabelą ze statystykami jest dobra. Można na tabeli z postami zrobić trigger który będzie ją uaktualniał na danego użytkownika przy każdym insercie.

0

Tylko się tak zastanawiam czy to będzie dobrze działać
rozpatrzmy np przypadek kiedy może dodawać się w tej samej chwili powiedzmy 10 userów i czy baza się nie wysypie.
Jak piszę w j2ee to tam entityManager ma automatycznie obsługę transakcji. Ale czy tutaj trigerry by poradziły sobie z takim czymś ??

Ciekawe jaka jest ogólna zasada optymalizacji takiego zadania ?
Chciałbym po prostu rozpatrzeć i założyć każdą ewentualność :)

0

Zastanów się po pierwsze czy musisz mieć te statystyki w czasie rzeczywistym. Zauważ, że Youtube.com nie pokazuje ilości obejrzeń w czasie rzeczywistym i jakoś nikt nie robi z tego wielkiego problemu.

/edit: j2ee to nie jest baza danych, MySQL a dokładnie silnik InnoDB obsługuje transakcje.

0

W sumie masz rację

Wiem ze j2ee to nie baza danych nie o to mnie chodziło.
W sumie jestem bardziej skłonny użyć bazy h2 + j2ee. Z tego co patrzyłem jest to dużo szybsza baza w porównaniu z mysql i napisana w javie...

1 użytkowników online, w tym zalogowanych: 0, gości: 1