- PHP


Mierzenie wydajności zapytań MySQL


Konfigurując MySQL lub pisząc skomplikowane zapytanie często przydaje się wiedzieć ile zajmuje to czasu. Wywoływanie  funkcji wewnętrznych mysql (takich jak count, sum) może być czasochłonne na bardzo dużych tablicach.

Mierzenie w PHP


Jak zatem możemy zmierzyć? Co możemy zmierzyć? Oczywiście pomysłów jest kilka można napisać porsty skrypt php, który będzie mierzył czas. Istnieje tutaj pewien narzut związany z uruchomieniem połączenia, transferem danych i przetwarzaniem przez PHP jednak takie dane mogą być przydatne. Poniższy kod demonstruje taki pomysł.

<?php
$link = mysql_connect('localhost','user','password');
mysql_select_db('contacts',$link);
 
$loop_count=10000; // Wartość ta może wymagać zmiany w zależności
// od stopnia skomplikowania zapytania
 
$sql = 'Select * from contacts;'; //zapytanie do wykonania
$start = microtime(true); // czas start!
 
//pętla wywołująca zapytania
while(--$loop_count){
mysql_query($sql,$link);
}
 
$stop = microtime(true); // zatrzymaj stoper
 
//Wyświetl wynik
echo 'Wykonanie trwało: '.(round(($stop-$start),3)).' sek.
'
;
?>

Wyjaśnienia w powyższym kodzie może wymagać jedynie funkcja microtime. Zwraca ona czas w mikrosekundach od tzw. ery uniksa. Dzięki przekazaniu parametru true, wartość zwracana jest liczbą zmiennoprzecinkową (a nie parą wartości milisekund i sekund odzielonych spacją).

Mierzenie w MySQL?


Jednak ten pomysł ma pewne wady, o których wspomniałem wcześniej. Istnieje jednak inna metoda. Możemy użyć wbudowanej w mysql funkcji benchmark. Wykonuje ona podaną liczbę iteracji wykonując zapytanie. Funkcja benchmark przyjmuje jako pierwszy argument właśnie liczbę iteracji (liczbę wykonań), a jako drugi parametr funkcję którą ma sprawdzić. Prosty przykład możemy zobaczyć poniżej.

SELECT benchmark(10000000, count(*)) FROM items;
SELECT benchmark(10000000, password('super_tajne_haslo'));

Wykorzystanie funkcji benchmark może być róznorakie. Zapraszam to testowania różnych możliwości. Zmierzenie wydajności może zaowocować znalezieniem wąskiego gardła aplikacji i lepszą konfiguracją serwera.


InformacjeRaportuj | Drukuj

Data dodania: 02-10-2017 08:27Autor:admin
Ilość wyświetleń:556Komentarzy: 0
Komentarze
Brak komentarzy.
Dodaj komentarz
Zaloguj się, żeby móc dodawać komentarze.