Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: Mysql e fine degli id

  1. #1

    Mysql e fine degli id

    salve ragazzi volevo parlare con voi di una cosa che potrebbe sembrare banale ma forse non lo è.
    Sicuramente ci sarà chi ci ha pensato prima di me.
    La questione è questa:
    quasi sempre nelle tabelle mysql è presente il campo id come un int auto_increment.
    Mysql per ogni campo in aggiunta, aumenta questo contatore di 1 anche se ci sono buchi in mezzo (quindi anche se la sequenza è 1-2-5-7-9 lui metterà 10)
    Ora mi chiedo, una volta che vengono finiti tutti i bit che rappresentano int in mysql e che quindi viene raggiunta la soglia massima di numeri, cosa succede?
    Mysql inizia a riempire i buchi?
    E ancora, una volta riempiti i buchi cosa succede? crasha tutto?

    Il problema secondo me non è tanto banale dato che basta un semplice cron job di sincronizzazione con dati esterni a far cancellare e inserire numerosissimi dati.
    Voi cosa ne pensate?
    The Darkness™

    ________

    Annunci immobiliari

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922

    Re: Mysql e fine degli id

    Originariamente inviato da the darkness
    Ora mi chiedo, una volta che vengono finiti tutti i bit che rappresentano int in mysql e che quindi viene raggiunta la soglia massima di numeri, cosa succede?
    Mysql inizia a riempire i buchi?
    E ancora, una volta riempiti i buchi cosa succede? crasha tutto?
    Una volta raggiunto il valore massimo di auto_increment relativo al tipo di campo specificato non sarà possibile inserire ulteriori record e riceverai un errore di

    Duplicate entry 'valore_massimo_consentito' for key 'id'

    Se prevedi di inserire oltre 4 miliardi di record usa un campo di tipo bigint.
    I "buchi" rimangono tali e non vengono riempiti con nuovi record.

  3. #3
    caspita allora il mio dubbio era fondato!
    Pero che storia la cosa che lascia buchi!!! almeno a riempirli...va a finire che un cron mi inserisce 4 miliardi di volte un record e ho finito i giochi.
    ovviamente se poi una volta raggiunta la fine vado a modificare a bigint lui continua ad andare avanti vero?
    Tra l'altro non c'è una procedura anche da fare manualmente che dice a mysql: riempimi i buchi? anche se in realtà la vedo dure per le relazioni tra tabelle...dovrebbe fare un bel casino...
    The Darkness™

    ________

    Annunci immobiliari

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Se campi la tipologia di campo consentendo un range più ampio l'inserimento sarà nuovamente consentito.

    Teoricamente è possibile riempire i buchi (se ne è discusso una marea di volte) ma è una forzatura che va evitata.

  5. #5
    capisco...e quindi quelli che hanno siti giganteschi come fanno?
    The Darkness™

    ________

    Annunci immobiliari

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da the darkness
    capisco...e quindi quelli che hanno siti giganteschi come fanno?
    Hai visto qual'è il limite massimo di un campo bigint?

  7. #7
    si ho visto...è vero...è tanto...però calcola che per siti belli grossi con tanti recod che vengono eliminati e inseriti, non è un numero invalicabile... non credi?
    The Darkness™

    ________

    Annunci immobiliari

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Potresti creare più tabelle identiche e lavorare sulle union.

  9. #9
    gia...però che brutto meccanismo...anche oracle ha di questi problemi?
    Per esempio i big secondo te come fanno a gestire i billioni di record che devono avere?
    non credo facciano delle union...la vedo sporca come soluzione...
    The Darkness™

    ________

    Annunci immobiliari

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Non so quali siano le limitazioni di oracle. Sicuramente i big dispongono di infrastrutture hardware in grado di far fronte a queste esigenze.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.