Porovnanie verzie s index-sekvenčnou a SQL databázou

27.10.2003
Nasledujúce poznámky sú určené tým užívateľom, ktorí používajú program vo väčšej sieti a pre ktorých je rýchlosť spracovania dôležitá.

Od roku 2004 sú všetky programy aj vo verzii s SQL databázou (Microsoft). Za účelom porovnania výkonnosti programov s doteraz používanou index-sekvenčnou databázou (ISAM) v sieti bol urobený test programu Sklad, v rámci ktorého sa vykonali niekoľkonásobne rôzne tlačové zostavy, import, export, vkladanie a zrušenie údajov. Použitá databáza bola vzhľadom na bežné pomery v praxi dosť veľká - 9 tisíc adries, 20 tisíc tovarových kariet, v príjemkách cca 26 tisíc riadkov, vo výdajkách 10x viac, t.j.260 tisíc riadkov.
Verzia programu 11.x (SKLAD,FIBU) je optimalizovaná pre použitie na počítače, ktoré sú v súčasnosti (október 2003) bežné, viac využíva pamäť a rýchlosť procesora, zaťaženie siete je znížené asi o 20%. To sa prejavilo v rýchlosti - niektoré zostavy sú skoro 2x rýchlejšie ako v predošlej verzii 10. Dá sa to samozrejme zbadať len zostavách, ktoré trvajú dlhšie ako 5-6 sekúnd.

V teste boli použité 3 rôzne počítače:
1. slabý - Pentium III 550MHz, 128MB RAM, disk IDE 7200ot., Windows98
2. priemerný - Athlon XP 2200+, 512MB RAM, disk Ultra ATA133 7200ot., Windows2k
3. silný - Pentium 4 3.3GHz, 1GB RAM, disk SATA-RAID 10000ot., WindowsXP
Sieť 100Mbit, ako server bol použitý najvýkonnejší počítač.

Z grafu vyplýva, že rýchlosť verzie s SQL databázou bola zhruba rovnaká ak bol ako klient použitý počítač č.2, alebo ak sa spustil test priamo na serveri (tzn. že sieť na čas nemala žiadny vplyv). Rýchlosť serveru je tu zrejme limitujúcim faktorom.

Slabý počítač ako klient (v tomto prípade počítač 1), má adekvátne horšie výsledky - rýchlosť procesora je rozhodujúca, čím výkonnejší počítač, tým rýchlejšie je aj schopný ťahať údaje zo siete.

Toto je z hľadiska použitia v sieti zaujímavejší graf - test simuloval bežnú prácu zhruba 15 staníc.

SQL databáza je podstatne priepustnejšia ako index-sekvenčná a čas vykonania testu bol len o málo slabší ako pri teste s jedným klientom. Blokovanie užívateľov pri čítaní a zápise je minimálne - viď. poznámku k priepustnosti databázy.

Zaťaženie siete a CPU
     

ISAM (indexsekvenčná) databáza

Zaťaženie siete je vyššie ako pri SQL, ale zaťaženie procesora serveru je minimálne. Tzn. že pri tomto type databázy nie sú na výkon procesora kladené veľké nároky. Záleží skôr na rýchlom disku.

SQL databáza

Zaťaženie siete je menšie ako pri indexsekvenčnej databáze (prenos potrebných údajov je viac optimalizovaný), ale zaťaženie procesora je značné. Procesor serveru by mal byť aspoň 2x výkonnejší ako pri klientskych staniciach.
Pri slabšom počítači ide výkon rapídne dole.

Priepustnosť databázy

Microsoft SQL databáza je schopná robiť uzamykanie údajov na úrovni vety a tým sa líši od bežnej databázy, ktorá to robí na úrovni celého súboru, resp. celej tabuľky údajov.
Najnepriaznivejšiu situáciu v praxi pre index-sekvenčnú databázu ukazuje nasledovný obrázok. Ak sa v jednom počítači spustí vytváranie tlačovej zostavy, je časť databázy obsahujúca údaje zablokovaná až dovtedy, kým sa zostava nedokončí. Na obrázku to je vyznačený úsek A - červená čiara. Ak sa vzápätí dá na druhom počítači pokyn na zápis údajov, program automaticky čaká až kým predošlý počítač nedokončí tlačovú zostavu a až potom sa zápis vykoná - žltá čiara na konci úseku A. Čas čakania môže byť až niekoľko sekúnd. Obrázok ukazuje situáciu, keď zostavu robí pomalý počítač, ktorý nie je schopný využiť sieť ani na 10% - úsek A. Čas blokovania sa výrazne skráti, ak tú istú zostavu robí rýchlejší počítač - viď. úsek B (využitie siete dosahuje asi 30%). Ak by bol počítač ešte výkonnejší, čas zdržania by sa mohol skrátiť na 1 sek, čo užívateľ ani nepostrehne. Časy blokovania pre menšie databázy sú samozrejme oveľa kratšie (1-2 sek).

Indexsekvenčná databáza - jeden pomalý počítač v sieti môže znižovať celkovú priepustnosť databázy.
Výrazne slabé počítače by sa nemali používať na pozícii, kde je potreba vytvárania dlhých zostáv a pod.

V SQL verzii je možné súčasne čítať aj zapisovať. Program však musí riešiť otázku tzv. deadlocku, vzájomného zablokovania užívateľov, k čomu môže občas prísť. V takom prípade si však systém vyberie jedného z užívateľov, ktorý bude pokračovať a druhému sa oznámi chyba. Program takéto prípady rieši tak, že prerušenú práve prebiehajúcu operáciu automaticky zopakuje, takže užívateľ to ani nezbadá.

Zaťaženie siete

SQL databáza umožňuje znížiť zaťaženie siete (predovšetkým objem čítaných údajov). Nižšie zaťaženie siete nie je však pre program rozhodujúce. Dôležitá je rýchlosť počítača - program je stavaný tak, že spracovanie robí v maximálnej miere lokálne v pamäti a nie na serveri. Dôvod je jasný - pre objemy údajov rádovo niekoľko MB a počty viet rádovo sto tisíc je spracovanie oveľa rýchlejšie. Táto stratégia je jednoznačne výhodnejšia aj kvôli tomu, že rýchlosť počítačov (procesory, pamäť) sa zvyšuje oveľa výraznejšie výkon siete a diskov.

Výhody a nevýhody SQL databázy

VÝHODY

SQL databáza je priepustnejšia.

Prejaví sa to v aplikáciách akou je napr. Sklad, menej v účtovníctve. Nasadenie takéhoto typu databázy má zmysel len pre veľké množstvá údajov (100 tisíc a viac riadkov) a intenzívnu prácu s údajmi. Pozrite si predošlú poznámku k priepustnosti databázy.
Nižšie zaťaženie siete. Podľa výsledkov z testu je to asi o 15%. Treba si však uvedomiť, že pri 100Mb a rýchlejšej sieti je hlavným omedzujúcim faktorom skôr výkonnosť počítačov v sieti ako sieť samotná. Podľa mojich skúseností treba na plnšie využitie 100Mb siete počítač s procesorom aspoň 2GHz a diskom ATA133 7200rpm.
Údaje sú priamo prístupné inému softwaru. Zmysel to má len pre užívateľov, ktorí si chcú urobiť nadstavbu pre spracovanie údajov a nestačí im export / import, ktorý program poskytuje. K SQL databázam je možné sa pripojiť cez MS Access a pod.
Stabilnejšia databáza. Porucha (vypadnutie) klientského počítača prakticky nenaruší integritu databázy. K trvalému zablokovaniu užívateľov kvôli poruche na jednom počítači v sieti by nemalo nikdy prísť.>
NEVÝHODY - dodatočné investície

SQL databáza vyžaduje rýchly server.

V praxi to znamená (v súčasnosti) minimálne 1.5GHz procesor s 256MB pamäti a s rýchlejším diskom. Pri pomalšom počítači sa výkon SQL databázy rapídne zhoršuje. Doporučuje sa však aspoň dvojnásobne výkonnejší procesor s 512MB, disk SCSI (prípadne aj RAID).
Nový software - SQL server. Do 5 staníc síce stačí použiť zjednodušenú verziu SQL, tzv. MSDE, ktorá je zadarmo a dá sa nainštalovať napr. do systému Windows2000 (nižší systém sa nedoporučuje), ale ak má niekto dôvod nasadiť SQL databázu, tak má určite viac ako 5 počítačov v sieti.
Kvalifikovaná obsluha - správca siete To je skôr samozrejmosť - každá väčšia sieť vyžaduje určitú starostlivosť a údržbu.

Martin Vanek, Bratislava, 27.10.03