Avaleht
uus teema   vasta Tarkvara »  WWW »  MySQL suure tabeli jõudluse parandamine struktuuri muutes märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
Qexer
HV vaatleja
Qexer

liitunud: 06.04.2011




sõnum 08.01.2012 02:19:44 MySQL suure tabeli jõudluse parandamine struktuuri muutes vasta tsitaadiga

MySQL 5.1.58 andmebaasis on tabel ~160 000 sisestust ja kuskil 13mb suur ning see sisaldab artiklite seotust riikidega.
Artikleid on andmebaasis kokku 2000 ja riike umbes 240. Tabeli struktuur on hetkel järgmine:
(itemid on artikli id, name on riigi lühend):


id     itemid         name

1      32             et
2      32             en
....
160k   2000           fr 


Ehk siis iga riigi kohta on eraldi rida kui see on antud artikliga seotud.
Küsimus, kas selline struktuur on jõudluse ja päringute kiiruse mõttes parim valik?

Või on näiteks selline struktuur tõhusam?


id     itemid         name

1      32             et,en,fr
2      33             en,br,ba
3      34             en,lv,lt,et,pl



Olgu öeldud, et hiljem peab saama artikleid järjestada ka riikide alusel.
Kommentaarid: 6 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 6
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mirko27
HV veteran
mirko27

liitunud: 29.06.2002




sõnum 08.01.2012 03:19:26 vasta tsitaadiga

160k rea puhul pole vahet milline su struktuur on. Normaliseerida võid siiski andmeid, eraldi tabel riikide jaoks ja foreign key itemite tabelisse. Vastavalt päringutele valid korretksed indeksid ja on hüva.
Kommentaarid: 12 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 11
tagasi üles
vaata kasutaja infot saada privaatsõnum
Qexer
HV vaatleja
Qexer

liitunud: 06.04.2011




sõnum 08.01.2012 04:13:59 vasta tsitaadiga

Aga kui kasutada seda teist varianti, siis tuleks ridu sama palju kui artikleid ehk 2000. Siit tulebki küsimus, kas see on jõudluse/mõtekuse poolest parem ja kas see võimaldab artiklite kuvamise riikide järgi hiljem.
Kommentaarid: 6 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 6
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Timukas0
HV kasutaja
Timukas0

liitunud: 20.03.2007




sõnum 08.01.2012 04:50:18 vasta tsitaadiga

Teine võimalus väga kehv. Kõik kirjed tuleb ükshaaval läbi käia ja alamstringi otsida. Kui iga seos on eraldi, saab kasutada indekseid ja tulemus nii kiiruse kui ka kasutatavuse poolest tunduvalt parem.
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum
Qexer
HV vaatleja
Qexer

liitunud: 06.04.2011




sõnum 08.01.2012 13:56:05 vasta tsitaadiga

Timukas0, ehk siis mõtled esimest võimalust, aga riikide jaoks eraldi tabel prefixite ja nimega?

id     itemid         country

1      32             1
2      32             2
....
160k   2000           240 


ja riikide tabel


id     prefix         name

1      et             Eesti
2      en             Inglismaa
....
240    fr             Prantsusmaa 


Kokkuvõtteks jääks siis esimene tabel ikkagi väga suur ja lisanduks päringute tegemisse ka teine tabel, mille abil riike kätte saada.
Kommentaarid: 6 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 6
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mirko27
HV veteran
mirko27

liitunud: 29.06.2002




sõnum 08.01.2012 14:25:34 vasta tsitaadiga

Saa aru, et su tabel ei ole suur. 160k rida on äärmiselt väike tabel. Teiseks on antud tabelid seotud läbi indeksi, mis on kiireim viis andmete pärimiseks. Rääkimata andmete normaliseerimisest, mis on niiehknaa mõistlik.
Kommentaarid: 12 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 11
tagasi üles
vaata kasutaja infot saada privaatsõnum
Qexer
HV vaatleja
Qexer

liitunud: 06.04.2011




sõnum 08.01.2012 14:35:06 vasta tsitaadiga

Selge, tänan seljuhul! thumbs_up.gif
Kommentaarid: 6 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 6
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  WWW »  MySQL suure tabeli jõudluse parandamine struktuuri muutes
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.