Visualizzazione dei risultati da 1 a 10 su 10

Discussione: ottimizzare la tabella

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    555

    ottimizzare la tabella

    Scusate la domanda, ma non ho ben capito il comando optimize; da un post mi sembra di aver capito che lanciandolo cambia gli id. Ma se ho un campo id in una tabella, un campo autoincrement, lanciando il comando optimize può essere che venga cambiato un id? Spero di aver capito male io, perchè io un id autoincrement lo utilizzo su una tabella che inizia a diventare grande, e quegli sono fondamentali perchè inseriti in altre tabelle.

    Grazie

  2. #2
    se cambia id che sono foreign key, sicuramente cambierà gli id anche nelle tabelle esterne relative... e mica so' scemi quelli che hanno scritto mysql :P

    Forse però riguarda più l'organizzazione fisica dei files che compongono il dtaabse..

    ma non so dirti niente di preciso, a parte che di sicuro non puoi aver nessun problema ottimizzando ^_^

  3. #3
    Ci mancherebbe solo cambiasse gli id....

    La tabella viene "ottimizzata", cioe' vengono chiusi gli spazi vuoti lasciati da record rimossi che comunque verrebbero riempiti poi da altri immessi...

    se per esempio rimuovi il record 50 di 100 lo spazio non viene chiuso ma, se possibile, verra' occupato dal record 101. Se invece esegui optimize il buco viene chiuso ed il record 101 segira' in coda. Qualcosa di simile alla frammentazione di un file su disco.

    Questo problema non esiste con le InnoDB ....



    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    555
    Ok, vi ringraziando, avevo capito male io, procederò alla ottimizzazione in tutta tranquillità.

    Grazie

    Ciao

    P.S. Le innodb? Dovrò studiare tanto.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034
    [supersaibal]Originariamente inviato da piero.mac
    Ci mancherebbe solo cambiasse gli id....

    La tabella viene "ottimizzata", cioe' vengono chiusi gli spazi vuoti lasciati da record rimossi che comunque verrebbero riempiti poi da altri immessi...

    se per esempio rimuovi il record 50 di 100 lo spazio non viene chiuso ma, se possibile, verra' occupato dal record 101. Se invece esegui optimize il buco viene chiuso ed il record 101 segira' in coda. Qualcosa di simile alla frammentazione di un file su disco.

    Questo problema non esiste con le InnoDB ....


    [/supersaibal]
    quindi avremo in caso di select dei primi n id

    id 49
    id 101
    id 51
    potrebbe dar problemi se uno script segue una numerazione precisa (magari ordinata per id) e nel caso in cui l'ottimizzazione compie l'operazione che dici tu. Se è così, non sarebbe meglio lasciare che il naturale flusso dei nuovo elemento segua il suo corso o, meglio, non si può fare che l'id 101 segua in coda e lo spazio lasciato vacante dall'id 50 venga eliminato o comunque non rimpiazzato dal prossimo id? imho

  6. #6
    Qui pro quo...

    I record dentro un db sono random per definizione. Chi li mette in ordine sara' l'indice oppure order by. Ma fisicamente si trovano nel primo buco libero disponibile.

    Optimize fa in modo che non ci siano buchi, in caso di grandi spostamenti o cancellazioni ottimizzare la tabella significa compattare i record, non ordinarli.... sia chiaro.

    Quindi un SELECT ordinera' secondo un indice se disponibile oppure secondo la richiesta di ORDER BY. Se la tabella e' molto frammentata, cioe' ha molti byte in eccesso rispetto ai dati presenti e' chiaro che si perde in performance.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034
    ah ok, mi mancava questo passaggio, non avevo pensato che, appunto, la clausola nella query fa tutto il lavoro di ordinamento dei record


  8. #8
    Post interessante per noi PIPPE.
    A questo punto vi chiedo, quando bisogna ottimizzare?
    si crea uno script nella pagina di inserimento record, ogni volta che si infila unrecord la tabella si ottimizza? (non credo).
    Oppure si crea uno script che lo fa periodicamente?
    Oppure altro?
    Mi rimetto a voi...
    se Mano lava Mano... Gina lava Gina

    ScrollbarsPainter05 per colorare le scrollbar

    Metaphysique - this stuff rocks!!!

  9. #9
    Si dovrebbe ottimizzare quando si fanno grosse cancellazioni oppure grosse diminuzioni di occupazione nei campi dinamici....

    Con le innodb per esempio non sono necessarie mai.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    quindi, in mysql admin, quando mi segna in rosso spazio in eccesso, indica lo spazio occupato da "niente"?
    C'è la possibilità di sapere in scrivere in una pagina quanti sono i byte in accesso?
    Magari metto nel pannello di controllo un avviso e un bottone che ottimizza... fortunatamente chi utlizzerà questo catalogo non è un primate, quindi noncorro il rischi di spaventarla.
    se Mano lava Mano... Gina lava Gina

    ScrollbarsPainter05 per colorare le scrollbar

    Metaphysique - this stuff rocks!!!

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.