Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Połączenia do bazy MySQL
streetof
post 11.01.2006, 19:41:36
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 11.01.2006

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
ArturS
post 11.01.2006, 21:53:59
Post #2





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 8.01.2006
Skąd: Zabrze

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
streetof
post 11.01.2006, 22:15:13
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 11.01.2006

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
mike
post 11.01.2006, 22:24:32
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
-KaeRZet-
post 11.01.2006, 23:34:25
Post #5





Goście







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 ?
Go to the top of the page
+Quote Post
Dark Raven
post 11.01.2006, 23:56:42
Post #6





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 30.10.2005
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


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ć.
Go to the top of the page
+Quote Post
streetof
post 12.01.2006, 00:10:11
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 11.01.2006

Ostrzeżenie: (0%)
-----


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 :|
Go to the top of the page
+Quote Post
mike
post 12.01.2006, 00:15:21
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


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ć) ?
Go to the top of the page
+Quote Post
streetof
post 12.01.2006, 00:34:34
Post #9





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 11.01.2006

Ostrzeżenie: (0%)
-----


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 ;/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 09:31