Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Need for Speed, czyli rozważania dotyczące prędkości
W czym wolisz zapisywać dane?
W czym wolisz zapisywać dane?
Pliki Txt (mechanizmy PHP) [ 37 ] ** [11.08%]
Baza MySQL [ 297 ] ** [88.92%]
Suma głosów: 192
Goście nie mogą głosować 
DeyV
post
Post #1





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Od dawna stosowane są mechanizmy służące do zapisywania wyników z bazy danych w plikach tekstowych, w celu przyspieszenie pracy skryptów (cash). I jest to całkiem logiczne, szczególnie w przypadku bardziej złożonych zapytań.
Jednak ostatnio, chyba wraz z pojawieniem się najnowszej wersji xmb_forum (Partagium) zwróciłem uwagę na nową tendencję: zastępowanie plików tekstowych bazą danych. W forum tym wszystkie pliki szablonów (templates) zostały umieszczone w bazie. I przyznam się szczerze, że mocno mnie to zaskoczyło. Bo choć do zalet stosowania zapisu w bazie chyba nikogo nie trzeba przekonywać (łatwość w aktualizacji, katalogowaniu, brak problemów z nadawaniem CHMOD itp.) to jednak przekonany byłem, że rozwiązanie takie musi być o wiele wolniejsze.
Skłoniło mnie to do przeprowadzenia serii testów. Umieszczam tu kilka z wyników, które mam nadzieję skłonią Was do zastanowienie się nad tym tematem. Wszystkie zostały wykonane przy pomocy malutkiego skryptu zapisującego i przeliczającego wyniki, który można ściągnąć stąd:
www.mStudio.nQ.pl/download/scrypty/czas/czas.zip na Windows XP, z Apachem 1,3, php 4.3 oraz MySQL 3.23
A tu jest przykład kodu testów

A1. wyświetlamy zawartość małego pliku (1,4 KB) z pliku tekstowego (wyniki w sekundach):
Cytat
Ilość prób=20
średni czas = 0.00299039483070
max czas=0.0046200752;
min_czas= 0.0020439625
suma = 0.0598078966
A2. Ten sam tekst z bazy MySQL zawierającej tylko ten jeden rekord:
Cytat
Ilość prób=20
średni czas = 0.00293679833412 (mniej niż z pliku !)
max czas=0.0047850609;
min_czas= 0.0023930073
suma = 0.0587359667
A3. Taki sam tekst, lecz z tabeli zawierającej około 200 rekordów
Cytat
Ilość prób=20
średni czas = 0.00319704413414
max czas=0.0045739412
min_czas= 0.0025489330
suma = 0.0639408827

-----------------------------

B1. wyświetlamy zawartość pliku (61 KB) z pliku tekstowego (wyniki w sekundach):
Cytat
Ilość prób=20
średni czas = 0. 07095720171928
max czas=0. 1114130020;
min_czas= 0. 0573480129
suma = 1. 4191440344
B2. Ten sam tekst z bazy MySQL zawierającej tylko ten jeden rekord:
Cytat
Ilość prób=20
średni czas = 0. 09079620242119  
max czas=0. 1551539898;
min_czas= 0. 0670330524
suma = 1. 8159240484
B3. Taki sam tekst, lecz z tabeli zawierającej około 200 rekordów
Cytat
Ilość prób=20
średni czas = 0. 08866938948631
max czas=0. 1459870338
min_czas= 0. 0688790083
suma = 1. 7733877897
Podsumowanie:
Pliki rzeczywiście zazwyczaj są szybsze, ale nie tak bardzo, jak by się mogło wydawać. Zaskakujące efekty dało również porównanie wyników MySQL. Okazało się, że wielkość bazy (przynajmniej w porównaniu 1-200) nie ma wpływu na prędkość wykonywania zapytań. Czasami wręcz (sic!) większa baza jest szybsza...
Co o tym sądzicie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
halfik
post
Post #2





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 17.05.2003
Skąd: Nysa

Ostrzeżenie: (10%)
X----


Cytat
Z MySQLem jest tak, ze tak na prawde jest bardzo wydajny ale mam wrazenie ,ze czesto ludzie nie potrafia albo go odpowiednio skofigurowac albo dobrze zoptymalizowac tabel (szczegolnie odpowiednie indeksy ale tez dlugosc pol [mozna stosowac char zamiast varchar] stosowanie likeow z % z przodu [zabojcze ale tez da sie to zrobic] itp). Niejednokrotnie spotkalem sie z w ogole nieoptymalizowana baza gdzie zapytania wykonywaly sie kilka (sic!) a nawet nascie sekund.


A i owszem, znaczna część koderów PHPa bazy danych okjarzy tylko z SQL'em i nawet nie wie, że to tylko narzędzie, a cała zabawa polega na projektowaniu samej struktury bazy, na procesie normalizacji etc.

Z drugiej jednak strony, czasem nie można pozwolić sobie na 3 formę normalną, bo kończy się to robiciem tabeli na kilka i albo zapytaniami złożonymi albo kilkoma następującymi po sobie zapytaniami, w celu wyciągniecia konkretnej porcji danych... Na wszystko jest odp. miejsce i czas (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

Posty w temacie
- DeyV   Need for Speed, czyli rozważania dotyczące prędkości   27.01.2003, 15:54:08
- - It's_me   Jezeli chodzi o mnie to ja zawsze bylem bazodanowc...   27.01.2003, 16:21:36
- - scanner   Odkąd przerzucilem sie z plików na BD, to nie mam ...   29.01.2003, 12:03:36
- - DeyV   Jednak pojawia się pytanie: Jak daleko się posuwać...   29.01.2003, 12:21:59
- - kurtz   Re: Need for Speed, czyli rozważania dotyczące prędkości   29.01.2003, 12:32:32
- - dragossani   Prędkość liniowego odczytu danych z bazy jest zwyk...   29.01.2003, 13:29:53
- - Seth   A co sadzicie o XMLu jako pewnym zamienniku bazy d...   2.02.2003, 13:17:22
- - dragossani   Od biedy można spróbować posłużyć się XML'em jako ...   3.02.2003, 11:52:54
- - Seth   Czyli XML tylko jako wzorzec ?   3.02.2003, 12:56:08
- - dragossani   No, powiedzmy jako źródło informacji na poziomie s...   4.02.2003, 14:21:55
- - Seth   juz rozumiem   4.02.2003, 15:51:44
- - Mati   ...   14.02.2003, 01:48:37
- - Picia   Bazy pliki i inne...   17.07.2003, 17:51:34
- - Omega   W sumie pliki są bardziej powszechne... W necie o ...   17.07.2003, 17:59:34
- - e-Gandalf   Re: Bazy pliki i inne...   17.07.2003, 18:44:55
- - Omega   Z tego co wiem płatna licencja jest potrzebna gdy ...   17.07.2003, 19:16:56
- - Picia   Licencja i Widoki   17.07.2003, 19:17:14
- - borec   ja tam jestem za mysql po 1. 0.001 sek to dla mni...   19.07.2003, 12:33:01
- - e-Gandalf   Cytatpo 3. jak sie ma szybkiego serwa to tylko wyg...   19.07.2003, 12:41:43
- - squid   CytatJednak pojawia się pytanie: Jak daleko się po...   19.07.2003, 14:45:15
- - Omega   Pliki są wygodniejsze nie tylko dla mn iejszych st...   20.07.2003, 14:24:47
- - lewal   cale rozwazania tocza sie nad przewaga plikow nad ...   23.10.2003, 02:12:10
- - msulik   Jaką pamięć masz na myśli? Mówisz o shared memory ...   12.11.2003, 00:52:12
- - DaNTe   CytatZ tego co wiem płatna licencja jest potrzebna...   18.02.2004, 23:43:33
- - dooshek   Z MySQLem jest tak, ze tak na prawde jest bardzo w...   19.02.2004, 22:52:31
- - enceladus   Z doświadczenia polecam stosowanie squid-a w roli ...   20.02.2004, 00:14:10
- - halfik   CytatZ MySQLem jest tak, ze tak na prawde jest bar...   25.02.2004, 15:46:29
- - RoVeR   Ja używam plikuw *.php jako bazy i mam to co z txt...   26.02.2004, 07:27:32
- - halfik   CytatJa używam plikuw *.php jako bazy i mam to co ...   28.02.2004, 12:19:49
- - bamboos   Witam!! Ja na serverze nie mam dostępu do bazy dan...   28.02.2004, 13:05:01
- - enceladus   Tak wlasnie sobie to czytam i pomyslalem że cała d...   28.02.2004, 13:11:01
- - bigZbig   Powtorze za poprzednikiem, że nie ma sensu prowadz...   26.08.2004, 14:52:19
- - ActivePlayer   Pisalem ostatnio database_layer z automatyczną obs...   28.08.2004, 00:02:29
- - squid   Cytat(bigZbig @ 2004-08-26 15:52:19)Natomiast...   11.09.2004, 12:03:55
- - Vertical   W bazie po prostu piszesz zapytanie, a baza zwraca...   28.09.2004, 09:56:59
- - Krolik   CytatCytat Z MySQLem jest tak, ze tak na prawde je...   22.11.2004, 11:10:44
- - awides   mysql -> dane pliki cache -> buforowanie   22.11.2004, 23:02:01
- - ShaXbee   To mój pierwszy post na Forum php Pro. Oby wyszedł...   19.01.2005, 22:22:11
- - bela_666   Cytat[Error : Błąd] [404] File Not Found : Plik n...   20.01.2005, 00:43:12
- - hawk   Pomijając prostą kwestię istnienia lub nie istnien...   20.01.2005, 09:05:31
- - ShaXbee   I tu tkwi problem. Uzywam PHP5 i SimpleXML. Nieste...   20.01.2005, 13:12:52
- - hawk   Co do SimpleXML: to jest znany bug php. Workaround...   20.01.2005, 14:37:55
- - bela_666   Cytat(hawk @ 2005-01-20 14:37:55)Co do shm: a...   20.01.2005, 15:18:21
- - hawk   System plików siedzący w pamięci. Link: http://www...   20.01.2005, 17:35:11
- - Krolik   Linux automatycznie cache'uje pliki w pamieci....   21.01.2005, 13:46:16
- - squid   MySQL i pewnie inne bazy ma typ tabeli ktora przet...   21.01.2005, 23:19:45
- - NuLL   IMHO - dyskusja lekko pozbawiona sensu - trzebaby ...   22.01.2005, 17:29:25
- - awides   @squid chodzi ci pewnie o HEAP, jest jeden problem...   23.01.2005, 09:40:36
- - NuLL   Trochę odgrzeje jeśli można Co jest lepsze czyst...   8.06.2005, 22:52:45
- - bela_666   Hwao gdzieś benchmark zrobił, poszukaj   8.06.2005, 23:22:53
- - chmolu   W moich testach zapisywanie zawartości pliku ini j...   9.06.2005, 05:23:56
- - NuLL   Dzięki - u mnie też tak wynikło choć trochę nie ch...   9.06.2005, 17:08:10


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 Aktualny czas: 15.09.2025 - 07:09