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
A2. Ten sam tekst z bazy MySQL zawierającej tylko ten jeden rekord:średni czas = 0.00299039483070 max czas=0.0046200752; min_czas= 0.0020439625 suma = 0.0598078966 Cytat Ilość prób=20
A3. Taki sam tekst, lecz z tabeli zawierającej około 200 rekordów
średni czas = 0.00293679833412 (mniej niż z pliku !) max czas=0.0047850609; min_czas= 0.0023930073 suma = 0.0587359667 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
B2. Ten sam tekst z bazy MySQL zawierającej tylko ten jeden rekord:
średni czas = 0. 07095720171928 max czas=0. 1114130020; min_czas= 0. 0573480129 suma = 1. 4191440344 Cytat Ilość prób=20
B3. Taki sam tekst, lecz z tabeli zawierającej około 200 rekordów
średni czas = 0. 09079620242119 max czas=0. 1551539898; min_czas= 0. 0670330524 suma = 1. 8159240484 Cytat Ilość prób=20
Podsumowanie:
średni czas = 0. 08866938948631 max czas=0. 1459870338 min_czas= 0. 0688790083 suma = 1. 7733877897 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? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%)
|
Od biedy można spróbować posłużyć się XML'em jako zamiennikiem bazy danych ale musisz wtedy obsłużyć wszystkie operacje wyszukiwania, dodawania i zamiany na poziomie php, a takie technologie jak XMLQuery są jeszcze bardzo niedojrzałe. Natomiast świetnie sprawdza się XML przechowywany w bazie danych. Do pewnego poziomu abstrakcji przechowujesz dane w polach bazy danych, a poniżej tego poziomu w XMLu (w jednym z pól bazy). Np. przechowując artykuły możesz datę publikacji, tytuł i autora przechowywać w osobnych polach, a sam artykuł z podziałem na paragrafy, sekcje, cytaty, słowa kluczowe itd. trzymać w jednym z pól w XML-u. W Oracle'u możesz nawet wydawać zapytania do wnętrza tego XML'a ale jak wiadomo na komercyjną licencję Oracle'a mało kogo stać. Postgres jeszcze tego nie umie (o MySQL'u nawet nie wspominam, bo projektanci głośno się wypowiedzieli, że nawet nie mają planów się za coś takiego brać). Mimo wszystko jest to wygodne. Można sobie wyszukać co trzeba z bazy, a potem XML + parser z php zapewnią prawidłowe formatowanie itp.
|
|
|
|
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
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 ![]() ![]() |
|
Aktualny czas: 25.12.2025 - 23:47 |