Sau frica de tabele mari în bazele de date
Am tot auzit de separarea în sute sau mii de tabele a informatiilor dintr-o bază de date, în special pe mysql.
Am facut un mic experiment pe o bază de date (de producţie) pentru că am fost curios cât de reală este frica asta
Tabela are 20 de milioane de înregistrări şi ocupa 2Gb. Serverul este o maşină virtuală amărâtă cu 1 Gb de memorie alocată, 2 procesoare cu 650MHz alocat, load mediu de 0.6 la momentul testului.
Am făcut două queryuri pe un câmp cu cardinalitate 290 de mii (aproximativ 1.5%) iar rezultatele au fost aşa:
Pentru primul query, cu 6 rezultate, timpul a fost de 62ms.
Pentru al doilea, care a avut 38 de rezultate, timpul a fost de 52ms.
E departe de a fi super rapid, dar ţinând cont de maşina amărâtă, şi utilizarea foarte rară, e de bun simţ. Poate satisface 15-20 de cereri pe secundă.
Pentru un câmp cu cardinalitate 6 milioane, am obţinut timpi mai buni, pe undeva pe la 10-15 ms.
Pe tabelul respectiv, din păcate nu am primary key, deci nu am putut să fac un test pe o cheie unică.
Pe alt tabel, de 200 de mii de inregistrări, deci de 100 de ori mai mic, timpii pentru selecţia pe primary key a fost de la 10ms pana la 30 ms, deci tot pe acolo. O fi mare diferenţa daca tabela ar fi de 1000 de ori mai mare?
Dacă interesează pe cineva chestia asta, am să fac mai multe teste































