Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Budowy bazy danych oraz jej wydajność., Kilka pytań teoretycznych.
Norkachio
post 7.06.2013, 18:48:23
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 7.06.2013

Ostrzeżenie: (0%)
-----


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ę.
Go to the top of the page
+Quote Post
bpskiba
post 7.06.2013, 20:52:15
Post #2





Grupa: Zarejestrowani
Postów: 340
Pomógł: 49
Dołączył: 3.07.2009
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


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

Ten post edytował bpskiba 7.06.2013, 21:00:14
Go to the top of the page
+Quote Post
wiiir
post 7.06.2013, 21:17:57
Post #3





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

Ostrzeżenie: (0%)
-----


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.


Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.07.2025 - 01:27