2.SYSTEM EKSPERYMENTOWANIA
W dalszej części artykułu używane będą następujące wielkości: Nominalna częstość zapytań klienta - częstość, mierzona w zapytaniach na sekundę, z jaką dany klient chce być obsługiwany.
Rzeczywista częstość zapytań klienta - szybkość obsługi danego klienta przez serwer mierzona w zapytaniach na sekundę. Może być równa lub mniejsza (jeśli serwer nie nadąża) od efektywności nominalnej Efektywność - stosunek częstości efektywnej do nominalnej, mierzony osobno dla każdego klienta, wyrażony w procentach. Jeśli np. Nominalna częstotliwość zapytań klienta wynosi 100 zapytań na sekundę a rzeczywista 50 to efektywność obsługi tego klienta wyniesie 50%. Efektywność jest wskaźnikiem jakości danego rozwiązania (zastosowanych środków implementacji). Efektywność w niniejszym opracowaniu może być rozumiana jako powyżej zdefiniowana wielkość procentowa lub jako rzeczywista bezwzględna szybkość przetwarzania zapytań przez serwer. Zależy to od rodzaju eksperymentu, czasem operowanie na wartościach bezwzględnych jest bardziej naturalne niż operowanie na procentach.
Jako system, proponowany system eksperymentowania zawiera następujące części :
Wejście : rozróżnia się dwa rodzaje wielkości wejściowych:
I1. Wejścia zależne od klienta: liczba klientów, zbiór zapytań testowych oraz schemat ich zadawania zdefiniowany dla każdego klienta.
I2. Wejścia zależne od serwera: ustawienia serwera oraz środki użyte do implementacji testowanej bazy danych.
Środowisko : środowisko systemu eksperymentowania stanowią wszystkie niezmienne cechy systemu MySQL, algorytmy przetwarzania itp.
Wyjście: Szybkość realizacji zapytań danego klienta mierzona w kolejnych ostępach czasu.
Rys.1 Schemat blokowy proponowanego systemu eksperymentowania
Fizyczna realizacja opisywanego systemu eksperymentowania opiera się na lokalnej sieci komputerowej wykorzystującej protokół TCP/IP. W sieci tej działa serwer MySQL (w opisywanych eksperymentach w wersji 4.0.18). Oprócz serwera w sieci znajdują się komputery-klienci z uruchomioną aplikacją „Klient MySQL” napisaną przez autora niniejszego opracowania w środowisku DELPHI 7.0.
Aplikacja umożliwia zdefiniowanie dla każdego klienta zestawu dowolnych zapytań w języku SQL oraz schematu ich zadawania tj. nominalnej częstości generowania (w zapytaniach na sekundę) oraz rozkładu prawdopodobieństwa generowania określonego zapytania. Aplikacja generuje zapytania nie częściej niż wynika to z nominalnej częstości dla danego klienta, następne zapytanie generowane jest dopiero gdy poprzednie zapytanie tego klienta zostało przetworzone., toteż gdy serwer jest obciążony rzeczywista szybkość obsługi zapytań danego klienta może być mniejsza od nominalnej. Aplikacja pozwala na zdefiniowanie całego zestawu zapytań (coś na wzór procedury) i wykonywanie ich po kolei. W takim przypadku wszystkie polecenia wchodzące w skład zestawu traktuje się jak jedno przy zliczaniu. Ponadto aplikacja umożliwia wstawianie losowych wartości o zdefiniowanych przez użytkownika parametrach w treść wyrażenia SQL. Do sprzężenia aplikacji z serwerem MySQL wykorzystane zostały komponenty dBExpress [5]. W trakcie eksperymentu wyniki mogą być wyświetlane w oknie wizualizacyjnym, które wyświetla wykres efektywność z ostatnich 100 pomiarów. Każdy klient zapisuje wyniki pomiarów w postaci pliku tekstowego, co umożliwia późniejszą obróbkę wyników za pomocą arkusza kalkulacyjnego. W przypadku gdy w eksperymencie uczestniczy wielu klientów użytkownik może skorzystać ze specjalnego dodatku : aplikacji „Centrum Sterowania”, która uruchomiona na jednym komputerze umożliwia przejęcie kontroli nad wszystkimi aplikacjami Klient MySQL w sieci. Dzięki temu możliwe jest zdefiniowanie zapytań wszystkich klientów i sterowanie eksperymentem z jednego stanowiska, co znacząco ułatwia przeprowadzanie eksperymentów.

Rys 2. Schemat fizycznej i programowej realizacji systemu eksperymentowania
Typowy eksperyment przeprowadzany przy użyciu opisanego systemu ma następujący przebieg:
1) Łączenie z serwerem – użytkownik w specjalnym oknie dialogowym podaje adres IP lub nazwę serwera, nazwę bazy danych oraz konta (w bazie danych) na którym program będzie działał.
2) Definicja zestawu zapytań – dla każdego klienta definiowany jest zestaw zapytań SQL jakie ten klient będzie zadawał
3) Definicja schematu zapytań – określenie częstości generowania oraz rozkładu wszystkich zmiennych losowych występujących w eksperymencie.
4) Start – rozpoczęcie generowania zapytań i przeprowadzania pomiarów
5) Koniec – gdy oczekiwane rezultaty zostaną zapisane eksperyment jest przerywany
6) Obróbka wyników – wizualizacja wyników w postaci wykresów, formułowanie wniosków.