Marcin Chyłek Blog

Cache danych w PHP - testy wydajności (MEMORY, MyISAM, Plik)

Przeprowadziłem kilka testów szybkości odczytu z pliku i tabel typu: MEMORY, MyISAM.

Jak był przeprowadzany test:

Test przeprowadzałem na Ubuntu Dapper (apache2, php5.1.x, MySQL 5.0.22) na laptopie, więc wiele rzeczy mogło wpłynąć na na nieprawidłowość testów.

Test podzieliłem na kilka etapów:

  • z włączonym cache zapytań
  • z wyłączonym cache zapytań
  • z pomiarem połączenia z bazą danych

Odnośnie ilości wywołań testu, to był wykonywany 1000 razy, liczone były pojedyńcze czasy testu, a następnie sumowane i liczona z tego średnia testu. Jako danych testowych użyłem wygenerowanego ciągu znaków o długości około 65 KB.

Wyniki:

Odczyt z pliku:

Do odczytu z pliku użyłem funkcji: file_get_contents()
Średni czas odczytu jaki uzyskałem to: 0.000357507705688 (szczegółowe informacje)

Odczyt z bazy danych:

Do odczytu z bazy użyłem funkcji mysql_* (połączenie, wybór bazy, wykonanie zapytanie i zwrócenie rekordu). Tabela zawierała 1 rekord z id i polem w którym był zapisany taki sam ciąg znaków jak w przypadku pliku. Dlaczego nie więcej? Chciałem wyeliminować czas jaki będzie potrzebny na przeliczenie jaki rekord ma zostać zwrócony.

Wyłączony zapis cache w MySQL i czas połączenia z bazą pominięty:

Tabela MyISAM - średni czas to: 0.00516110825539 (szczegółowe informacje)
Tabela MEMORY - średni czas to: 0.00368802952766 (szczegółowe informacje)

Widać, że odczyt z pliku ma przewagę nad odczytem z bazy danych, a czasy odczytu z tabel typu MyISAM i MEMORY są bardzo do siebie zbliżone.

Włączony zapis cache w MySQL i czas połączenia z bazą pominięty:

Tabela MyISAM - średni czas to: 0.00179107260704 (szczegółowe informacje)

Tabela MEMORY - średni czas to: 0.000719551563263 (szczegółowe informacje)

Z włączonym cache zapytań widać, że czasy są zbliżone do odczytu z pliku.

Włączony zapis cache w MySQL + czas połączenia z bazą danych:

Tabela MyISAM - średni czas to: 0.00202487516403 (szczegółowe informacje)
Tabela MEMORY - średni czas to: 0.00205611944199 (szczegół?owe informacje)

Kluczowym znaczeniem jest czas połączenia z bazą danych a porównanie tych 2 testów zapytań do bazy danych można powiedzieć, że są prawie identyczne.

Różnice w wydajności pomiędzy MyISAM i MEMORY?

Typ tabeli MEMORY będzie lepszy zawsze, kiedy operujemy na pewnym zestawie rekordþw i nie musimy jak w przypadku MyISAM odczytywac z dysku, który jak wiadomo ma fizyczne ograniczenia, które są nie do przeskoczenia.

Polecam zapoznanie się z art. http://dev.mysql.com/tech-resources/articles/mysql_5.0_psea2.html, w którym autor porównał różne typy tabel.

Kategoria: MySQL, PHP | Marcin Chyłek | Komentarze: 0

Ubuntu Dapper - Instalacja pgadmin3 1.4.x

Obecnie w repozytoriach Ubuntu Dapper najnowszą wersją pgadmin3 jest wersja 1.2.x. Nasuwa się więc pytanie jak zainstalować wersje 1.4.x. Jest kilka możliwości - najłatwiejszą z nich będzie wykorzystanie paczek z Debiana. Poniżej przedstawię w jaki sposób pobrać paczki z Debiana i przerobić tak aby pasowały do Ubuntu Dapper.

Pierwszą rzeczą jaką musimy zrobić jest usunięcie zainstalowanej wersji pgadmin3.

sudo apt-get remove pgadmin3 pgadmin3-data

Następnie musimy dodać nowe wpisy do repozytoriów (plik /etc/apt/sources.list)

Repozytorium PostgreSQL (obecnie najnowszą wersją jest 1.4)

deb ftp://ftp3.us.postgresql.org/pub/postgresql/pgadmin3/release/debian stable pgadmin

deb-src ftp://ftp3.us.postgresql.org/pub/postgresql/pgadmin3/release/debian stable pgadmin

Lub wpisy do repozytoriów Debiana (obecnie najnowszą wersją jest 1.4.3-1)
deb-src http://http.us.debian.org/debian unstable main

Kolejnym krokiem jest aktualizacja bazy danych pakietów

sudo apt-get update

Po zaktualizowaniu bazy pakietów instalujemy “dpkg-dev”, który zawiera narzędzie do budowania pakietów.

sudo apt-get install dpkg-dev

Przechodzimy do etapu budowania pakietu, w przypadku pgadmina wymagane są: pgadmin3 pgadmin3-data. Pobierane są źródła a następnie budowane są pakiety.

sudo apt-get build-dep pgadmin3 pgadmin3-data
sudo apt-get -b source pgadmin3 pgadmin3-data

Budowanie pakietów może chwile potrwać. Wynikiem będą 2 pliki o rozszerzeniu .deb w aktualnym katalogu. (pgadmin3_1.4.3-1_i386.deb, pgadmin3-data_1.4.3-1_all.deb)

Końcowym etapem jest instalacja:

dpkg -i pgadmin3_1.4.3-1_i386.deb pgadmin3-data_1.4.3-1_all.deb

Jeśli wszystko przebiegło poprawnie pozostaje nam tylko uruchomienie pgadmin3:

/usr/bin/pgadmin3

lub

pgadmin3
Kategoria: Bazy danych, Linux, PostgreSQL | Marcin Chyłek | Komentarze: 0