mysql - indexy
daffca - 05-01-2006 08:05
mysql - indexy
Witajcie
Ostatnio mam za zadanie zooptymalizowac baze danych mysql, czyli kompromis pomiedzy zajetoscia miejsca na dysku a szybkoscia, W tej chwili baza smiga dosc szybko glownie dzieki duzej ilosci roznych indexow grupowych, ale przez to duzo danych jest zduplikowanych w roznych tabelach,
Chcialem zapytac gdzie znajde jakas dobra literature o indexach?, czy ktos juz robil testy wydajnosciowe na *duzych bazach, mianowicie czy indexy grupowe da sie zastapic pojedynczymi na kazdej z kolumn itp.
Z gory dzieki za jakies wskazowki, za dyskusje na ten temat rowniez.
pozdr. dfc
ps. *duze baza to w moim przypadku 25GB pojemnosci. co za tym idzie ~1mln recordow, i wiele duplikacji tych danych.
Wojtek pBT (prac) - 06-01-2006 09:02
daffca napisał(a): > Witajcie > > > Ostatnio mam za zadanie zooptymalizowac > baze danych mysql, czyli kompromis > pomiedzy zajetoscia miejsca na dysku a > szybkoscia,
teraz koszt 1GB jest bardzo niski. Więc uważam, że nie ma sensu robić optymalizacji pod kątem zajętości miejsca. Oszczędności szukałbym raczej w szukaniu dubli (jeżeli takowe nie są potrzebne), podziału tabel na mniejsze pod kątem częstości używania danej kolumny. Jeżeli to możliwe i nie wyjątkowo nieoptymalne, to bym raczej używał charów, zamiast varcharów. Można także podzelić tabele na tabele z danymi aktualnymi i archiwalnymi.
Jak dla mnie zakładanie indeksów to sztuka wyśrodkowania czasu odczytu do czasu zapisu/poprawy.
> W tej chwili baza smiga dosc szybko glownie > dzieki duzej ilosci roznych indexow grupowych, > ale przez to duzo danych jest zduplikowanych > w roznych tabelach,
Mozna zalożyć indeks na pojedynczą kolumnę. Ale sama optymalizacja bazy mało daje. Jezeli bedziesz zakladal indeksy na oddzielne kolumny, to znacznie wzrośnie czas wstawienia danych. Za tym musi jeszcze pójść optymalizacja zapytań. bo dajmy na to tabela:
uid, imie, nazwisko, plec, rokUr, dzienUr, miesUr -- abstrachujmy od sensowności czysto dizycznej, to przykład.
I teraz masz indeks: plec, rok, nies, dzien
to ladnie zadziala on dla zapytania:
SELECT foo FROM tab WHERE plec = x AND rokUr = x AND ...
Ale moze byc tak ze bazka nie da sobie rady z optymalizacja:
SELECT foo FROM tab WHERE dzienUR = x AND plec = x AND rokUr = x AND ...
Co z reszta nie ma sensu, bo na samym poczatku powinno byc najwieksze odsianie.
pBT
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?=
[mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?=
[MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?=
[mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?=
[MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?=
[MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?=
Gdzie MySQL 4.1, a gdzie 5.0?
[MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?=
[MS SQL] "set names" (mySQL) w MS SQL
[mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
zanotowane.pldoc.pisz.plpdf.pisz.pllubiatowo.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|