• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Optymalizacja bazy danych -> plusy i minusy

VPS Starter Arubacloud
0 głosów
875 wizyt
pytanie zadane 20 września 2016 w SQL, bazy danych przez Trucik Obywatel (1,130 p.)

Hej,

 

Poszukuję informacji na temat normalizacji bazy danych. Zadam pytanie na klasycznym przykładzie biblioteki tj.

3tabele:

image

Weźmy na tapetę tabele czytelnik. Na ile sensownym jest wyciągnięcie jako osobnej tabeli i stworzeniem relacji miasta przy założeniu, że obsługuję całą Polskę i w mojej bazie będzie 10 milionów czytelników? 

Z tego co do tej pory czytałem. Zyskam trochę miejsca na dysku, ale za to stracę na prostocie pisania kwerend (przy założeniu, że zrobię taki z większością kolumn np. imię (też często będzie się powtarzać)).

Pytanie najważniejsze: jak ma się do tego prędkość odpowiedzi SQL'a? Który z wariantów jest szybszy.

Jeśli ktoś mógłby wskazać dobrą literaturę traktującą o projektowaniu baz danych będę bardzo wdzięczny :).

Oczywiście mój rzeczywisty przykład jest znacznie bardziej skomplikowany, ale pisanie wywodów na ten temat jest bez sensu :). 

 

1 odpowiedź

+1 głos
odpowiedź 20 września 2016 przez Surykat Stary wyjadacz (14,780 p.)
Z tego co wiem, silnik bazodanowy najbardziej angażuje operacja join- w teorii, najpierw on łączy każdy rekord tabeli A, z każdym rekordem tabeli B, a potem z wyniku wywala te, które nie spełniają warunku złączenia- w praktyce tak się nie dzieje, bo silnik bazy danych jest sprytny i robi to trochę inaczej, ale jednak łączenie tabel, to sporo wysiłku- zatem, im więcej masz tabel, tym więcej złączeń musisz robić, co nie zawsze musi, ale może kończyć się sporym czasem zwrócenia wyników.

Dłubałem przy sporym systemie automatyzującym wysyłki (niestety tylko w ramach szkolenia) i tam adresy były zawarte w tabeli Customers, czyli analogicznie jak w twoim przykładzie- nie rozbijano tego na osobną tabelę Addresses. Tabela ta miała chyba ze 20-30 atrybutów, bo była tam cała masa innych informacji (nie będących kluczami obcymi), więc albo system był do bani, albo coś jest na rzeczy. :)

Musisz też zadać sobie pytanie, których danych będziesz używać bardzo często, a których jedynie raz za czas- generalnie można chyba przyjąć, że poświęcając poziom spójności danych, zyskujesz na prędkości i odwrotnie- musisz zdecydować, co gdzie potrzebujesz.
komentarz 20 września 2016 przez Boshi VIP (100,240 p.)
po za samą strukturą są jeszcze metody optymalizacji, więc nie tylko sturktura tutaj ogrywa wazną rolę :)
komentarz 20 września 2016 przez Trucik Obywatel (1,130 p.)
CO to za czarodziejskie metody optymalizacji nie mające związku ze strukturą? Sorry za może i trywialne pytanie, ale nigdy sięz czymś takim nie zetknąłem.
komentarz 20 września 2016 przez Boshi VIP (100,240 p.)
ee, odpowiednie indexy, korzystanie z left joina zamiast inner, wybieranie tylko wymaganych pól itd

Podobne pytania

0 głosów
0 odpowiedzi 289 wizyt
pytanie zadane 5 stycznia 2017 w SQL, bazy danych przez thehespe Użytkownik (590 p.)
0 głosów
3 odpowiedzi 838 wizyt
pytanie zadane 30 lipca 2015 w PHP przez migacz100 Mądrala (5,410 p.)
0 głosów
2 odpowiedzi 773 wizyt

92,980 zapytań

141,943 odpowiedzi

321,189 komentarzy

62,307 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...