Skocz do zawartości

Wydajność bazy mysql i php


beha

Rekomendowane odpowiedzi

Nie mam doświadczenia z naprawde dużymi bazami.

mam niestety tylko zdawkowe założenia

baza 1000 000 rekordów (MYSQL).

wielkośc bazy około 5GB

Dość zaawansowany system wyszukiwania użyty na tejże bazie

około 300 000(odsłon strony/dziennie) (PHP + MYSQL).

[serwer dedykowany]

Czy są to wielkości którymi trzeba się martwić przy zastosowaniu php i mysql ?

...

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 30
  • Dodano
  • Ostatniej odpowiedzi

Odpowiedzi

1000 000 rekordów to nadal nie jest dużo, pod warunkiem, że selecty, joiny itp dotyczą przede wszystkich poindeksowanych pól wtedy problemów nie ma.

1000 000 rekordów bez indeksu - to już Źle

1000 000 indkesów przeszukiwanych np.: LIKE "%slowo_klucz%" to już MASAKRA (pomaga indeksowanie pełnetekstowe)

5 GB - BAZA - Jak dla mnie MASAKRA TOTALNA, chyba, że wyszukiwanie odbywa się po tableach kilku megowych a reszta służy jako zaawansowany system plików podający informacje spod zadanego ID.

Idalna dla prędkości wyszukiwania bazy to systuacja, kiedy cała mieści się w pamięci operacyjnej komputera (niektóre hostnigi mają ograniczenia do np.: 20 MB na bazę - strasznie mało ale .. bazy rzeczywiście hulają)

5 GB no cóż - to bardzo dużo - moja największa baza liczyła 2 GB, ale stała na własnym serwerku (2xXeon) ale jak zadałem "głupie pytanie" to się potrafiłą zamulić.

Przydało by się więcej szczegółów np.: zakładana struktura itp.

Dobrym rozwiązaniem jest jakiś system buforowania wyników, lub stron - nawet przy milionie rekordów pewnie 5% będzie sprawdzane najczęściej.

Metod buforowania jest dużo sam Mysql już wewnątrz siebie stosuje buforowanie wyników .. ale nie wiem jak ma wyglądać Twoja baza - żeby coś wymyślić

Odnośnik do komentarza
Udostępnij na innych stronach

mam bazę prawie 10.000.000 rekordów php (800MB) i pracuje normalnie - ksiązka telefoniczna osób prywatnych

dla Twoich okien najlepsze markizy - dla wszystkich adwokat - lub książka telefoniczna - oferty różnego typu, taniej nie będzie

Odnośnik do komentarza
Udostępnij na innych stronach

dodatkowo, warto zwrocic uwage na dwie rzeczy:

- zeby rekordy w pliku byly stalej dlugosci- czyli w czesto przeszukiwanych tabelach unikac pol BLOBowatych (text, varchar, blob...)

- przy skladaniu warunkow- sa one wykonywane od poczatku (AFAIR, choc lepiej sprawdz czy aby nie od konca- w manualu do mysqla jest duzo o optymalizacji), czyli pierwszy warunek po WHERE powinien jak najbardziej ograniczyc ilosc rekordow do przeszukania

Odnośnik do komentarza
Udostępnij na innych stronach

_ttp://www.devx.com/dbzone/Article/20743/1954?pf=true

MySQL and PostgreSQL are known to run well into the hundreds of gigabytes, but few companies use the databases above that range.

imho najwazniejszy jest projekt bazy (normalizacja), nastepnie indeksy, klucze itd itp. tabelki raczej InnoDB no i odpowiednie konstrukcja zapytan - tutaj skorzystasz z polecenia SQL - EXPLAIN i dalej zapytanie

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki za odpowiedzi, tylko potwierdziły się moje przypuszczenia, że raczej nie za bardzo mysql sprawdzi się, ale chyba nie mam zbytniego wyboru zobaczymy...

A korzystał ktoś z komercyjnych baz danych i ma pojęcie jak to się przekłada na wydajność w stosunku do mysql-a?

Właściwie głównymi zadaniami byłoby przeszukiwanie pól bazy o nieznanej z góry długości za pomocą wyrażeń typu LIKE %*%

...

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

Dołącze swoje 3 grosze w temacie baz.

Od wielu lat programuje z uzyciem baz danych (nie sql) i stwierdzam ponad wszelka watpliwosc, ze sql jest bardz, bardzo powolnym systemem baz danych (dla przykladu przetworzenie, dokonanie analizy na lokalnym SQL i zapisanie 500 rekordow zajęło około 80 sekund, zaś te same 500 rekordow i to na serwerze a nie lokalnie ale na bazie DBASE IV aż 3,5 sek. Jest wiele innych rozwiazan bazodanowych, niestety nie mam doswiadczen w obludze PHP+baza ale sadze, ze powinienies poszukac baz, ktore NIE zawierają systemu zapisu przy uzyciu 'transakcji'. Brak transakcji w bazie to oczywiscie pewne zagorozenie ale i temu mozna zapobiec stosujac 'sztuczki', ktore beda symulowaly taki system. byc moze wlasnie Firebird (uwolniony Interbase) pozwoli na szybsza obsluge Twojego problemu.

Swego czasu z duzym powodzenim stosowalem CGI + bazy w standardzie DBASE IV (choc to juz staruszek). By bylo zabawniej, to te same bazy byly dostepne po sieci LAN i 2 operatorow w firmie 'biegalo' po nich za pomocą programów .exe ... fajna to byla zabawka.

Pozdrawiam.

Odnośnik do komentarza
Udostępnij na innych stronach

Witaj Beha,

Z tego co ja się orientowałem to czy zastosujesz baze oracle czy mysql rezultat możesz osiągnąć podobny.

Tzn jeżeli jest to indywidualne rozwiązanie powinno się zaprojektować bazę danych pod funckję które ma wykonywać i takim o to sposobem nawet każdą komercyjną bazę można źle zaprojektować i będzie chodziła znaczniej wolniej niż mysql.

Więc wiele do zrobienia jest tutaj po stronie programisty.

Dowiadywałem się sporo o takie rozwiązania np. pod wyszukiwarkę.

Wielkość bazy którą wskazujesz - nie jest jakaś ogromna - obecna baza z której korzystam ma już około 7 GB i działa na Mysql a zakładam że będzie miała jakieś 100 GB bo dzienni przyrost będzie na poziomie 100 MB danych.

Myślałem o rozwiązaniach komercyjnych lecz większość programistów jaka złożyła mi ofertę sugerowała napisanie indywidualnych rozwiązań bazodanowych.

Wiem że samo wyliczenie minim na SPIDERA który miałby indeksować podstrony to łącze min 6-7 mb/s, z dalszych informacji które uzyskałem to powinien to być system rozproszony, a napisanie tego wszystkiego trwa około 6 msc przez 3 programistach ściśle współpracujących.

Jak znajdziesz Beha jakieś ciekawe rozwiązanie lub kogoś kto zna się dobrze na bazach podeślij mi także :-) jakiś namiarek.

Odnośnik do komentarza
Udostępnij na innych stronach

sql jest bardz, bardzo powolnym systemem baz danych
Masz na mysli sql, czy mySQL? Bo nie widze powodu, dla ktorego sql sam w sobie mialby byc powodem wolnego dzialania :?

Nie widzisz powodow bo nie znasz innych baz danych. Glownym powodem spowolnienia jets system 'transakcyjny' o czym juz wspominalem. Domniemam, ze jestes mlodym czlowiekiem wychowanym na SQL. Mam na mysli tak mySQL jak i SQL.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności