Mysql Optymalizacja zapytań

Odpowiedz Nowy wątek
2011-08-10 12:46
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 ????

edytowany 1x, ostatnio: madmike, 2011-08-10 22:28

Pozostało 580 znaków

2011-08-10 14:58
MiL
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.

Pozostało 580 znaków

2011-08-10 15:36
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ść :)

Pozostało 580 znaków

2011-08-10 22:23
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.

edytowany 1x, ostatnio: AdamPL, 2011-08-10 22:24

Pozostało 580 znaków

2011-08-11 10:06
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...

A kto robił testy? Ludzie z Javy? - Marcin.Miga 2011-08-11 11:42
mozesz sobie sam zrobić testy i porównać :P - lukasw44 2011-08-11 12:46
Jakoś do mnie java nie przemawia... - Marcin.Miga 2011-08-11 14:23

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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