Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Budowy bazy danych oraz jej wydajność.
Forum PHP.pl > Forum > Bazy danych > MySQL
Norkachio
Witam! Na wstępie zaznaczam, że dopiero uczę się korzystania z baz danych, więc jak możecie to wspominajcie o nawet najbardziej oczywistych sprawach.

Ostatnio zainteresowałem się wydajnością i optymalizacją mysql, ale zanim zacznę coś kombinować w tym temacie muszę stworzyć na localhoscie jakąś dużą bazę do testów. Niestety już w momencie planowania natrafiłem na problem związany z jej budową. Za cel obrałem sobie prostą bazę: kategorie-artykuły-komentarze. Po kilku naprawdę dziwnych próbach złożenia tego w całość wpadłem na (wtedy wydawało mi się genialny) pomysł aby stworzyć trzy osobne tabele i trzymać w nich id przypisujące rekordy do "elementu nadrzędnego" i tak powstały:

Tabela z kategoriami: id, tytuł, opis.
Tabela z artykułami: id, id kategorii do jakiej należy, tytuł, treść, data.
Tabela z komentarzami: id, id artykułu pod którym zamieszczony jest komentarz i tu też jakiś tytuł, treść, autor oraz data.
Ogólnie nic skomplikowanego, ale mam wątpliwości, czy taka budowa jest poprawna?

Przeraziła mnie ilość rekordów, założyłem sobie, że wprowadzę 10.000 kategorii, w każdej po 50 artykułów, a pod każdym artykułem 20 komentarzy, przez co w tabelach znajdować się będzie kolejno 10.000, 500.000 oraz 10.000.000 rekordów. Czy tworzenie takiej bazy ma sens? Da się to rozplanować w inny, bardziej wydajny sposób? Zakładam, że w przyszłości zadbam o to, żeby zapytania były zoptymalizowane, stworzę indeksy może nawet pomyśle o cachowaniu. No ale póki co muszę mieć na czym uczyć się tego wszystkiego. Wszystkie porady będą przydatne więc z góry za nie dziękuję.
bpskiba
może tak być. Jednak 10 milionów rekordów wymagać może lepszej maszyny. Do Testów nie potrzeba aż tyle. Przy 10 tysiącach rekordów różnice w wydajności zależne od indeksowania są widoczne gołym okiem
wiiir
Na nowej tabeli jak wstawisz 10000 rekordow nie zrobisz testow i roznica nie bedzie widzialna golym okiem jak to kolega napisał.
Optymalizacja to nie tylko indexy a umiejetnosc pisania zapytan sql, a takze uruchamiania zapytania, chodzi mi o bindowanie zmiennych, etc etc mozna nie jednka ksiazke przeczytac...

Opowiadajac na twoje pytanie:
Tak, takie budowanie bazy jest poprawne.

Chociaz 10.000 kategori?? smile.gif
Ale oczywiscie tyle danych mozesz miec

Jezeli masz taki system artukułow to mozna zastosować tabele archium z grantami aplikacji na select i co jakiś czas sukcesywnie odchudzać nasze aktualne artykuły.
Gwarantuje ci to mniej danych w tabeli która cały czas bedą usery odpytwać, jeżeli dodasz jeszcze cache to w sumie mozesz miec i 20.000.000 artykułow a odczyt bedzie działać bardzo szybko.


To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.