Benchmark: mySQL vs SQLite vs txtSQL
| mysql | txtsql | sqlite | |
| 1.000.000 insert operations: | 437.396926 sec | * | * |
| 1.000.000 update operations: | 419.479904 sec | * | * |
| 1.000.000 select operations: | 1590.487754 sec | * | * |
| 10.000 insert operations: | 4.140236 sec | 155.204844 sec | 64.271662 sec |
| 10.000 update operations: | 7.036401 sec | 203.391591 sec | 51.838954 sec |
| 10.000 select operations: | 3.716212 sec | 140.175988 sec | 40.162289 sec |
| 1.000 insert operations: | 0.492028 sec | 1.056060 sec | 4.376249 sec |
| 1.000 update operations: | 0.272016 sec | 1.384078 sec | 4.992284 sec |
| 1.000 select operations: | 0.404023 sec | 0.840047 sec | 2.056117 sec |
| * = I just don’t have the balls to try that | |||
Momentan lucrez la ideea unui flatfile(sau nu) DB ca varianta transparenta de backup intr-o aplicatie web, in cazul in care mySQL-ul moare.
Pana acum am reusit sa testez ce se vede mai sus, in conditii (zic eu) neutre. Fiecare test a fost facut de 3 ori, si cea mai mica valoare a fost pusa (si asta cred ca e o greseala, pentru ca mySQL face cache la select-uri dupa prima varianta). Serverul de mySQL folosit ruleaza singur pe server (no apache/other stuff), si este folosit si in productie. txtSQL si SQLite au functionat pe un VPS cu 512MB ram, procesor 4 core de 3.2ghz, stocare in RAID 6.
txtSQL mi se pare absolut genial conceput, cu o singura exceptie: stocheaza fiecare tabela intr-un singur fisier, care odata crescut maaare de tot, se misca infect. Din cate am vazut, nu cred ca tine nici un fel de index, lucru care omoara orice iluzie de performanta. Felul in care se construieste un query mi se pare foarte misto (*1). Faptul ca efectiv sunt cateva fisiere care trebuiesc puse alaturi de aplicatia pe care o scriu, e si mai bine.
SQLite este popular pentru development (l-am folosit cand ma jucam cu Ruby on Rails), si dupa cum se vede, destul de bine facut. Cel mai mult imi place ca suporta query-urile de baza exact ca in mySQL, deci intr-o aplicatie ar trebui sa se schimbe doar parametrii conexiunii. Ce nu imi place e ca trebuie instalat din repository/compilat…
*1 :
$sql->select(array(‘db’ => ‘testDB’,‘table’ => ‘testTable’,‘where’ => array(’strtolower(somecolumn) = value’),‘limit’ => array(10, 19),‘orderby’ => array(‘id’, ‘ASC’)));

Saptamanile trecute am discutat cu cineva, pentru o posibila colaborare in PHP. Adica eu sa ii fac respectivului niste aplicatii. Recomandarea a venit de la 

RSS


