Problema DISTINCT MySQL intr-o bd mare

Întrebări legate de conectarea la baze de date MySQL prin intermediul PHP

Moderatori: Zamolxe, Moderatori

badtiger
Senior Member
Mesaje: 598
Membru din: Vin Noi 03, 2006 7:54 pm
Contact:

Problema DISTINCT MySQL intr-o bd mare

Mesajde badtiger » Mar Apr 30, 2013 10:41 am

Salut, iata ipoteza problemei

Este vorba despre o baza de date cu aproximativ 800 000 inregistrari ce bate pe la 1gb care are nevoie de update zilnic.

Navigarea prin aceasta baza de date se face in functie de:
val1[vc], val2[vc], val3[tinyint - an] in mod normal
val1 si val2 au fost adunate intr-un id numeric din motive usor de inteles

totul ca la carte pana aici, dar problema apare cand intra si val4[varchar(50)] in felul urmator
Dupa ce esti pe lista de inregistrari caracteristica val1,2,3 este un select din care iti poti alege val4
val4 nu este nimic predefinit ci o coloana din inregistrari care se poate repeta, astfel acest select se face in urma unei interogari:
SELECT DISTINCT `val4` FROM `tabel` WHERE `id`=[id] and `year`=[year]
+ trafic mare => crapa mysql-ul

Ma gandisem sa mai fac un tabel tampon cu coloanele id an val4, voi ce ziceti?



Avatar utilizator
socu
Senior Member
Mesaje: 470
Membru din: Mie Apr 22, 2009 11:05 pm
Localitate: Marghita

Re: Problema DISTINCT MySQL intr-o bd mare

Mesajde socu » Mar Apr 30, 2013 12:51 pm

Sa inteleg ca tabelul tau arata de genul:
id | year | val4 | ...

Care sunt indecsii?

badtiger
Senior Member
Mesaje: 598
Membru din: Vin Noi 03, 2006 7:54 pm
Contact:

Re: Problema DISTINCT MySQL intr-o bd mare

Mesajde badtiger » Mar Apr 30, 2013 1:56 pm

Multumesc ca incerci sa ma ajuti,

Tabelul are 15 campuri caracteristice produsului, ceva de genul
id_produs
id_producator_model
an
val4
descriere
.
.
.
val20

@de la descriere in jos sunt campuri cu caracteristici care vor fi doar selectate

Avatar utilizator
socu
Senior Member
Mesaje: 470
Membru din: Mie Apr 22, 2009 11:05 pm
Localitate: Marghita

Re: Problema DISTINCT MySQL intr-o bd mare

Mesajde socu » Mar Apr 30, 2013 2:00 pm

Ai uitat sa pui indecsii ...

badtiger
Senior Member
Mesaje: 598
Membru din: Vin Noi 03, 2006 7:54 pm
Contact:

Re: Problema DISTINCT MySQL intr-o bd mare

Mesajde badtiger » Mar Apr 30, 2013 2:26 pm

am uitat sa scriu...
primesc rezultatele in 0.05 to 0.009 secunde
problema e cand e trafic: la 30 de astfel de query simultane sare load la 160% pe cpu iar memoria ramane 10-15% used

Avatar utilizator
socu
Senior Member
Mesaje: 470
Membru din: Mie Apr 22, 2009 11:05 pm
Localitate: Marghita

Re: Problema DISTINCT MySQL intr-o bd mare

Mesajde socu » Mar Apr 30, 2013 2:30 pm

Glumesti, nu?
Problema ta e de la indecsi, acuma daca nu stii ce vorbesc poti sa pornesti de aici: http://dev.mysql.com/doc/refman/5.5/en/ ... dexes.html

badtiger
Senior Member
Mesaje: 598
Membru din: Vin Noi 03, 2006 7:54 pm
Contact:

Re: Problema DISTINCT MySQL intr-o bd mare

Mesajde badtiger » Mar Apr 30, 2013 2:41 pm

scrisesem ca am uitat sa scriu, nu sa-i adaug, indecsii exista si au existat, dupa cum urmeaza

id+year+var4 e trecut ca index compozit
id+year de asemenea e index compozit
iar id e si foreign key

badtiger
Senior Member
Mesaje: 598
Membru din: Vin Noi 03, 2006 7:54 pm
Contact:

Re: Problema DISTINCT MySQL intr-o bd mare

Mesajde badtiger » Mar Apr 30, 2013 4:13 pm

ceva solutii?
clar nu este o problema de optimizare de query sau tabel


Înapoi la “MySQL”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 6 vizitatori