Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

MySQL - tabela sa više milijardi rekorda

[es] :: MySQL :: MySQL - tabela sa više milijardi rekorda

[ Pregleda: 1692 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dejankr
Dejan Krsmanovic
JavaEE programer
Beograd

Član broj: 7842
Poruke: 384
*.static.sbb.rs.



+1 Profil

icon MySQL - tabela sa više milijardi rekorda15.08.2011. u 08:20 - pre 154 meseci
Na projektu na kojem trenutno radim imaću potrebu da čuvam više milijardi rekorda u tabeli pa se pitam da li je MySQL pravo rešenje za to. Nisam nikada radio sa tolikim tabelama pa nisam siguran šta mogu da očekujem od MySQL-a u tom slučaju. Imao sam prilike da radim sa tabelama sa stotinak miliona rekorda ali priroda podataka je bila takva da su se koristili uglavnom rekordi insertovani poslednjih nekoliko dana, a i mogle su lako da se particionišu što ovde nije slučaj.
Tabela sadrži par BIGINT polja i par datumskih polja (možda ću i njih da konvertujem u INT, pošto mi je bitno vreme samo do nivoa sata). Nad njom će uglavnom da se rade selectovi i updatovi po PK, ali imaću potrebu i da radim neke selectove po jedom od ovih datumskih polja. Neću raditi joinove sa ovom tabelom, sortiranje ili tako nešto...

Da li vredi pokušavati u ovom slučaju sa MySQL ili da se okrenem NoSQL varijantama? Možda mogu i da napravim dve tabele pa da zavisno od upita koristim jednu od njih jer bi u tom slučaju moglo da se lepo isparticioniše, ali me za početak zanima da li je toliki broj rekorda problem za mysql pošto nigde nisam uspeo da nađem da li postoji takvo ograničenje...
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: MySQL - tabela sa više milijardi rekorda15.08.2011. u 08:36 - pre 154 meseci
1. nosql ti radi posao samo ako ti je tabela u formatu "key:value" inace mozes da pevas borbene sa istim
2. nosql trazi da imas "puno servera" da bi ishendlovao tu kolicinu podataka, ako imas dovoljno servera onda ti je najbolje resenje mysql cluster - ima sve kvalitetne osobine nosql servera + je relacioni (ako odlucis da ga tako koristis)
3. mysql moze da hendluje koliko oces slogova u tabeli, to nije problem, problem je sta ti hoces da radis sa tim slogovima? da radis update? da radis select? nad "celom" tabelom, nad "skupom" iz tabele?

dakle pitanje je koristenja ... jedan full table scan nad tom tabelom ce ti zabosti server na neko vreme ma kako jak bio taj server .. ako to hoces da radis - mysql nije za tebe ... ako imas upite koji vracaju realnu kolicinu podataka iz te tabele i upit se izvrsava nad indexiranim delom tabele onda nemas problem...

sad, ne ocekuj da ces tabelu od terabajt lepo da pretrazujes na kucnom serveru, ocekuje se brz io i dosta rama no u svakom slucaju tu dolazi do razlicitih "fora i fazona" koje mozes da iskoristis ... za pocetak
* budi siguran da koristis najnoviji mysql; ako tek krece razvoj projekta odma kreni sa 5.6, ako je projekat "ziv" onda 5.5
* za toliku tabelu je myisam brzi i uzima manje mesta na disku, ako imas konkurentne inserte i update onda je innodb nesto brzi, na zalost myisam nije crash safe niti je transakcion pa ti u tom slucaju opet bolje radi innodb. Ja bi to gurno u innodb ali ti treba da razmislis sta ti je bolje
* pre nego krenes da radis bilo sta, procitaj dobro sve sto mozes o mysql partitioningu, te isprojektuj tu tabelu tako da mozes da je particionises kako valja


 
Odgovor na temu

dejankr
Dejan Krsmanovic
JavaEE programer
Beograd

Član broj: 7842
Poruke: 384
*.static.sbb.rs.



+1 Profil

icon Re: MySQL - tabela sa više milijardi rekorda10.01.2012. u 09:10 - pre 149 meseci
Mali update vezano za ovu temu pošto je ovih dana postalo aktuelno. Pomenutu tabelu sam napravio u MySQL. Još uvek popunjavam tabelu ali čini mi se da ne bi trebalo da imam problem. Pretraživanja po primarnom ključu radi brzo, kao i po drugoj indeksiranoj koloni. Trenutno imam oko 1.5 milijardi rekorda u njoj.

E sad, tokom populisanja tabele sam shvatio da bih jednu kolonu trebalo drugačije da definišem i popunim :(. Sad me zanima da li je bolje da dropnem samo tabelu ili celu bazu? Storage je Innodb i data fajl je trenutno oko 100 GB. Ako sam dobro shvatio, taj fajl se nikad ne smanjuje, ali MySQL ume da koristi prazan prostor u njemu. Ako dropnem celu tabelu pretpostavljam da taj prostor neće biti fragmetiran, ili se varam? Napominjem da tokom importa nije bilo drugih operacija nad bazom, dakle samo je radio ovaj proces za importovanje. Dakle, interesuje me ako obrišem tabelu i ponovo je importujem, da li će data fajl narasti za još 100 GB ili će iskoristiti prazan prostor u postojećem fajlu? Da li je u ovom slučaju bolje koristiti innodb-file-per-table=ON pošto pretpostavljam da u tom slučaju ne bih imao ovaj problem ako uradim drop tabele?
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
95.180.61.*

Sajt: mysql.rs


+2377 Profil

icon Re: MySQL - tabela sa više milijardi rekorda10.01.2012. u 12:04 - pre 149 meseci
ako uradis ALTER - narasce, ako dropnes tabelu i importujes je nece narasti
 
Odgovor na temu

dejankr
Dejan Krsmanovic
JavaEE programer
Beograd

Član broj: 7842
Poruke: 384
*.static.sbb.rs.



+1 Profil

icon Re: MySQL - tabela sa više milijardi rekorda10.01.2012. u 14:15 - pre 149 meseci
Znači samo drop tabele? Ne moram ponovo da importujem celu bazu?
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
95.180.61.*

Sajt: mysql.rs


+2377 Profil

icon Re: MySQL - tabela sa više milijardi rekorda11.01.2012. u 07:49 - pre 149 meseci
kada dropnes tabelu, to postaje slobodan prostor, sledeca kreirana ide tu ...
ako uradis alter, pravi se nova tabela (stara se ne dira) pa se dropne stara na kraju, zato se poveca ibdata fajl

inace obzirom da ti je to neaktivan server, ja ti predlazem da dropnes SVE i reinportujes, trajace ali ces imati defragmentiranu datu .. zgodno ako spremas server za produkciju, bar da starta sa defragmentisanom datom....
 
Odgovor na temu

[es] :: MySQL :: MySQL - tabela sa više milijardi rekorda

[ Pregleda: 1692 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.