Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Połączenia do bazy MySQL
Forum PHP.pl > Forum > Przedszkole
streetof
Chciałbym sie dowiedzieć co dokładnie odpowiedzialne jest za samo wywołanie jakis danych z bazy? czy kod ktory tworzy zapytanie, tym samym wyciagajac juz na wstepie wszystkie dane? czy moze petla nastepujaca zaraz po nim?
Chodzi o to ze chce ograniczyć obciazenie SQL'a maxymalnie jak sie tylko da, ale nie wiem jak dokladnie to robic :|

Prosze o pomoc, pozdrawiam
ArturS
Nie do końca wiem co rozumiesz przez maksymalne odciążenie SQLa, bo wykorzystuje się go m.in. po to żeby wszystko chodziło dużo szybciej. Co do samego wyciągnięcia danych z bazy, to wygląda to w zasadzie tak jak z wiersza poleceń bazy, ubrane w kilka dodatkowych fubkcji php. I tak np chcąc wyświetlić wszystkie imiona z tabeli UżYTKOWNICY w SQL, po podłączeniu się do bazy, napisałbyś coś na podobieństwo:

  1. SELECT imie
  2. FROM uzytkownicy;


Podobnie wygląda to w php. Najpierw musisz się połączyć z bazą, podem wykonać zapytanie, którego wynik zostanie umieszczony w zmiennej i wyświetlić je na ekranie zwykłą funkcję echo. Np opierając się na bazie MySQL.

  1. <?php
  2.  
  3. require_once('../logowanie.php');  //logujesz się do bazy
  4. $wynik = mysql_query("SELECT imie FROM uzytkownicy")  //wykonujesz zapytanie
  5.  
  6. while ($row = mysql_fetch_array($wynik,MYSQL_NUM)) {
  7.  echo $row; //wyswietlenie wszystkich rekordow otrzymanych z zapytania
  8. }
  9.  
  10. ?>


Powyższe oczywiście w uproszczeniu, z ominięciem przystosowania na wypadek błędu w zapytaniu, braku wyniuku, itp. Jak więc widzisz nie ma tu wielkich kombinacji.
streetof
Hehe... troszkę sie nie zrozumielismy... nie jestem takim laikiem, tylko chodzi o to ze mój serwer (tj. A64 3400+, 2GB ramu) ma tyle zapytan do sql ze poprostu nie wyrabia juz przy 400os online na stronie! Pracuje nad optymalizacją, ale co nowszego wymysle to jeszcze gorzej wszystko chodzi :| tak jak podales w drugim przykładzie: mam w zwiazku z tym pytanie czy dane po wyciagnieciu przez "$wynik = mysql_query("SELECT imie FROM uzytkownicy") " moge wyswietlic na innej podstronie w postaci petli while i echa wyników? - czy to wogóle mozliwe bo ja kombinowałem ale niestety to nie zdaje ogzaminu.
mike
Szukasz możliwości ulżenia serwerowi w złym miejscu.

To nie wyświetlanie pobranych danych jest wina obciążenie serwera.
A poza tym nie da się inaczej niż w pętli.

Twoim problemem sa same zapytania, wykonujesz.
Wykonujesz ich za dużo? Za dużo czasu zabierają?
1. Zmniejsz ich ilość. Zarówno jak cache wyników jak i zrezygnowanie z kilku. Napewno się da. Może wybiarasz nadmiarowe dane gdzieś?
2. Popracuj nad optymalizxacją samych zapytań. Może da się napisać je inaczej?

Jak chcesz poprawić wydolność serwera baz danych to po stronie baz a nie po stronie php. W php to już po ptokach winksmiley.jpg
KaeRZet
no i ja mam takie jedno pytanko odnosnie tego tematu

jezeli przykladowo mam 7 pol w tabeli i wyswietlam na stronie np. tylko 5 z nch. To czy duzym problemem jest ze pobieram zawsze i tak wszystkie

  1. SELECT *
  2. FROM ....


zamiast
  1. SELECT id, imie, plec, itd, itd2...


czy to ma duży wpływ na szybkość, obciążenie bądź inne rzeczy ?
Dark Raven
Cytat
czy to ma duży wpływ na szybkość, obciążenie bądź inne rzeczy ?


Zależy od wielkości aplikacji. Dużego wpływu na pewno nie będzie. Jednak różnica może się pojawić.
streetof
wracajac do watku wlasciwego... nad optymalizacja pracuje juz od miesiaca, ale naprawde kiepsko to widze... co było tylko możliwe to juz chyba zrobiłem... łącznie ze wspomnianymi szczegółami wpisywania nazw zamiast "*"... dosłownie zrobilem juz chyba wszystko :|
mike
1. Sprawdź/policz ile zapytań jest wykonywanych podczas przeciętnego żadania strony;
2. Sprawdź/policz ile czasu zabierają zapytania. Możesz to policzyć przecież. Bedziesz miał miarodajny wskaźnik;
3. "(...) dosłownie zrobilem juz chyba wszystko :|" - czy stosujesz (o ile jest potrzeba, ale widzę, że jest) cache'owanie wyników zapytań (tych, z którymi miżna tak zrobić) ?
streetof
owszem stosuje... jednak to przydaje sie głównie tam gdzie wyniki nie zmieniaja sie zbyt czesto a w tym wlasnie najwiekszy problem bo wiekszosc musi zmieniac sie prawie za kazdym odswierzeniem strony ;/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.