![]() |
![]() ![]() |
![]() |
![]()
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ę. |
|
|
![]()
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 |
|
|
![]()
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?? ![]() 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. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 16.07.2025 - 01:27 |