Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySQL ja rivin id-numero

Papu [08.06.2006 12:54:59]

#

Tulipa tässä mieleen, että kun minulla on tietokannassa taulu, jolla on primary keynä rivin id-numero (auto_increment), niin mitä tapahtuu kun rivejä on niin paljon että se ylittää sille annetun suurimman mahdollisen arvon. Eli jos sarakkeen tyyppi on mediumint(8), niin mitä tapahtuu kun rivejä on niin paljon että juokseva numero menee yli suurimman mahdollisen? Miten tämä ongelma vältetään esim. forumsoftissa, joihin voi tulla aivan lukematon määrä kirjoituksia?

tmigi [08.06.2006 13:28:07]

#

Voisinpa olettaa että mikäli MySQL on tehty oikein tulee jonkinlainen virheilmoitus insert lauseiden yhteydessä. Jos taas koodaus on tehty huonosti MySQL kaatuu tms.

Pikaisella mietinnällä jos käyttää INT tyyppiä id numerossa mahtuu tauluun yhtä vajaa 100 miljardia riviä. Veikkaan ettei missään foorumissa ole noin montaa viestiä ja jos onkin niin ehkä olisi hyvä poistaa niitä alkupään viestejä. :) MySQL:n taulu koko tavuina voi olla 65536 teratavua!

Jos hahmotellaan tuota mahdollista rivimäärää seuraavalla esimerkillä.

Jos jokaiselle maailmassa tuotetulle matkapuhelimelle olisi varattu yksi rivi tuosta taulusta. Matkapuhelimien historiaa lähtee vuodesta 1947. Jos arvioidaan että tähän päivään mennessä on tehty 5 miljardia matkapuhelinta (en löytänyt nopealla haulla netistä oikeaa määrää) mahtuisi tuohon tauluun vielä 20 kertainen määrä matkapuhelimia.

Vaihtoehtoisesti voidaan ajatella että sovellus laittaa tauluun joka sekuntti logi merkinnän, tällöin taulu täyttyisi 3170 vuoden päästä.

Kaikkihan on aina mahdollista, mutta veikkaan että käyttämällä INT:ä id numerossa et ihan helposti saa taulua täyteen.

Papu [08.06.2006 13:36:56]

#

No joo, oikeastaan oli ihan turha kysymys se, että mitä siinä tapauksessa tapahtuu. Sehän on päivänselvää.

Itsekin olin ajatellut, että forumeissa sun muissa vain käytetään normaalisti riittävän isoa INT:iä ja silloin tosiaan ei kovin äkkiä raja tule vastaan. Kysymys vain heräsi, kun satuin näkemään erään forumin tietokannan rakenteen ja siellä id:lle oli varattu kummallisen pieni maksimiarvo. Olen melko varma että se raja ylitetään aika nopeasti ja aloin miettimään että mitäs sitten tapahtuu. En kuitenkaan koskaan ole nähnyt, että kyseinen softa heittäisi mitään virheilmoitusta ko. tilanteessa. Mietin, että josko on joku toinen tapa kuin vain tehdä riittävän iso taulu.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta