optymalizacja pracy bazy mysql
RT - 26-11-2005 22:29
optymalizacja pracy bazy mysql
Witam
Od dłuższego czasu kombinuję jak zoptymalizować pracę bazy danych mysql. Mam na serwerze na slacku postawionego apacha 1.3.34 oraz mysqla 4.1.14. Sprzęt to P4 z jądrem skompilowanym pod P4 HT (linux widzi 2 procesory) do tego 2G ramu oraz dyski SATA.
Korzystam z galerii 4images w której jest 25,000 plików+ phpadsnew
dziennie jest około 250,000-300,000 odsłon.
Serwer praktycznie cały czas jest obciążony (load 1) wieczorami jeszcze bardziej. Procesor obciąża głównie baza mysql, pamięć również baza mysql. Jako konfiga mysqla mam my-large.cnf (config file for large systems)
W jaki sposób mogę zoptymalizować bazę danych? żeby jednak trochę mniej męczyła serwer.
Pozdrawiam Radek
-- www.rotfl.ltd.pl - Humor w sieci
Wojtek pBT (lapt) - 26-11-2005 22:29
Dnia 2005-11-25 12:10, Użytkownik RT napisał: > Witam > > Od dłuższego czasu kombinuję jak zoptymalizować pracę bazy danych mysql. > Mam na serwerze na slacku postawionego apacha 1.3.34 oraz mysqla 4.1.14. > Sprzęt to P4 z jądrem skompilowanym pod P4 HT (linux widzi 2 procesory) > do tego 2G ramu oraz dyski SATA.
ile ten proc ma keszu?
> > Korzystam z galerii 4images w której jest 25,000 plików+ phpadsnew
nie wiem do końca co to za cuda, złaszcza "phpadsnew".
> > dziennie jest około 250,000-300,000 odsłon.
przelicz to na zapytania, zobacz w jaki sposób wykonywane jest połączenie z BD. Przy tej ilości zapytań, to pconnect powinno zachowywać się przewidywalnie
> W jaki sposób mogę zoptymalizować bazę danych? żeby jednak trochę mniej > męczyła serwer.
Pobierać z bazy mniej miniaturek, a poza tym to:
1) właściwe indeksy. Ale nie wiem, jaki masz schemat bazy danych. Zwłaszcza na primary key tabeli
2) Wypadało by, aby miniaturki były keszowane i pobierane bezpośrednio z dysku, bez pośrednictwa z BD. No ew. baza pyta się czy to jest właściwa niniaturka:
SELECT data_modyfikacji, ext FROM tab WHERE id=$id;
header(własciwy nagłówek dla własciwego rozszerzenia);
if(file_exists(md5($id.$data_modyfikacji).".".$ext )) readfile(md5($id.$data_modyfikacji).".".$ext); else zapisz_plik_na_dysku_i_wyslij_userowi($id);
ew. Jeżeli uda Ci się przekonać Apacza i mod_rewrite, aby jeżli plik istnieje to nic by nie robił, a jeżeli nie, to wywołal PHP z własciwymi parametrami.
pBT
kropka - 26-11-2005 22:29
Użytkownik "Wojtek pBT (lapt)" <bato3@WirtualanPolskap.pl> napisał w wiadomości news:dm7kug$4gc$1@news.dialog.net.pl... > Dnia 2005-11-25 12:10, Użytkownik RT napisał: >> Witam >> >> Od dłuższego czasu kombinuję jak zoptymalizować pracę bazy danych mysql. >> Mam na serwerze na slacku postawionego apacha 1.3.34 oraz mysqla 4.1.14. >> Sprzęt to P4 z jądrem skompilowanym pod P4 HT (linux widzi 2 procesory) >> do tego 2G ramu oraz dyski SATA. > > ile ten proc ma keszu? >
oto dane proca: root@quino:/# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 15 model : 4 model name : Intel(R) Pentium(R) 4 CPU 3.00GHz stepping : 1 cpu MHz : 3006.943 cache size : 1024 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 5 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe pni monitor ds_cpl cid bogomips : 6003.09
processor : 1 vendor_id : GenuineIntel cpu family : 15 model : 4 model name : Intel(R) Pentium(R) 4 CPU 3.00GHz stepping : 1 cpu MHz : 3006.943 cache size : 1024 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 5 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe pni monitor ds_cpl cid bogomips : 6003.09
>> >> Korzystam z galerii 4images w której jest 25,000 plików+ phpadsnew > > nie wiem do końca co to za cuda, złaszcza "phpadsnew". >
phpadsnew jest to system wymiany banerów i reklam na stronie http://phpadsnew.com/two/
4images: http://www.4images.net/
>> dziennie jest około 250,000-300,000 odsłon. > > przelicz to na zapytania, zobacz w jaki sposób wykonywane jest połączenie > z BD. Przy tej ilości zapytań, to pconnect powinno zachowywać się > przewidywalnie > Zapytań jest dużo - kilka na 1 odsłonę strony
- stałe połączenie w phpadsnew faktycznie pomogło
będę musiał przerobić 4images :(
>> W jaki sposób mogę zoptymalizować bazę danych? żeby jednak trochę mniej >> męczyła serwer. > > Pobierać z bazy mniej miniaturek, a poza tym to: > > 1) właściwe indeksy. Ale nie wiem, jaki masz schemat bazy danych. > Zwłaszcza na primary key tabeli > > 2) Wypadało by, aby miniaturki były keszowane i pobierane bezpośrednio z > dysku, bez pośrednictwa z BD. No ew. baza pyta się czy to jest właściwa > niniaturka: > > > SELECT data_modyfikacji, ext FROM tab WHERE id=$id; > > header(własciwy nagłówek dla własciwego rozszerzenia); > > if(file_exists(md5($id.$data_modyfikacji).".".$ext )) > readfile(md5($id.$data_modyfikacji).".".$ext); > else > zapisz_plik_na_dysku_i_wyslij_userowi($id); > > > ew. Jeżeli uda Ci się przekonać Apacza i mod_rewrite, aby jeżli plik > istnieje to nic by nie robił, a jeżeli nie, to wywołal PHP z własciwymi > parametrami. > 4images ma własny system cache - muszę go dokładniej potestować bo narazie nie zauważyłem zeby jakoś mniej obciążał serwer
Tak czy inaczej wielkie dzięki za wskazówki, będę walczył dalej i tak już wydaje się być lepiej
Radek
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?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?=
MySQL - jak =?ISO-8859-2?Q?wyeksportowa=E6_zawarto=B6=E6_wie?==?ISO-8859-2?Q?lkiej_tabeli?=
zanotowane.pldoc.pisz.plpdf.pisz.ploefg.opx.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 |
|