![]() |
![]() |
![]()
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? -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 09:29 |