Przy okazji uruchamiania lmsa z bazą SQLite przeprowadziłem małe testy wydajności wszystkich trzech baz obsługiwanych przez lms'a. Testy bardzo proste - sprawdziłem szybkość działania funkcji GetUserList(), GetNodesList() i GetBalanceList() - uruchamianych z domyślnymi parametrami, czy po wejściu na listę userów, listę komputerów i do bilansu sieci. Wydaje mi się, że taki test daje lepszy pogląd na to jaki wpływ ma zastosowanie różnych motorów baz danych, niż porównanie szybkości samych zapytań na tych bazach.
|--------------------|----------|---------|---------| | Funkcja | postgres | mysql | sqlite | | | 7.4.1 | 4.0.17 | 2.8.11 | |--------------------|----------|---------|---------| | GetUserList() | 0,105 | 0,597 | 0,200 | | GetNodeList() | 0,019 | 0,012 | 0,011 | | GetBalanceList() | 0,096 | 0,091 | 0,089 | |--------------------|----------|---------|---------| |userlista dla jednej| 0,180 | 1,706 | 1,750 | | sieci sortowana po | | | | | nazwie usera | | | | |--------------------|----------|---------|---------|
Baza: cash - 2000 rek., users - 150 rek., nodes - 300 rek. Serwer: P4 2.6GHz HT, RAM 256 MB, Slackware 8.1 (2.4.24) Optymalizacja: wszystkie bazy na domyślnej konfiguracji instalowane ze źródeł.
Oczywiście dla szybkości działania lms'a większe znaczenie ma szybkość sieci i przeglądarki, gdyż np. wyświetlenie listy 300 komputerów trwa o wiele dłużej niż samo wyciągnięcie wyników z bazy. Widać jednak, że na przykład postgres najlepiej radzi sobie ze złączeniami tabel i tu już różnice są zauważalne.