Qual'è la differenza tra il formato fixed e dynamic di una riga in una tabella MySql

MySql specifica il formato della riga di una tabella come 'fixed' o 'dynamic', a seconda del tipo di dato (data-types) definito per quella colonna, come ad es. accade per i tipi CHAR e VARCHAR, fisso il primo e dinamico il secondo.

La mie domande sono: Che differenza c'è tra il formato di riga fixed e dinamico? E si hanno differenze in termini di prestazioni ed efficienza nell'usare l'uno o l'altro formato?

Risolta 4
MySql 13-07-2018 1 Risposta 1327 Visite +1

Risposte ( 1 approvate )

  1. Giorgio Borelli
    +2
    13-07-2018 11:30:55
    Rispondi

    Il formato di riga 'fixed' ha una lunghezza fissa che non varia durante le operazioni di DML (Data Manipulation Language), ad es. se definisci per una colonna un tipo CHAR(4) questo occuperà una dimensione fissa di 4byte sempre indipendentemente dalla dimensione del dato inserito/aggiornato.

     

    Mentre il formato di riga 'dynamic' è appunto variabile e può cambiare all'update di un dato, come prima se definisci una colonna come VARCHAR(16), stai indicando a MySql che le celle di quella colonna potranno contenere del testo/caratteri per una dimensione massima di 16byte, ma potrebbero essere anche meno a seconda del dato inserito/aggiornato.

     

    Questa è all'atto pratico la sola differenza tra i formati 'fixed' e 'dynamic', ossia nel come gestiscono lo spazio in byte della cella; ciò comporta però anche delle differenze in termini di efficienza, il formato fixed è più stabile e veloce, di contro però non ottimizza lo spazio occupato dai dati; il formato dynamic al variare, anzi per essere precisi al crescere della dimensione occupata dal dato (a causa come dicevamo di un update) crea  invece un puntatore di riferimento alla dimensione eccedente del dato aggiornato (chiamato OVERFLOW POINTER) ciò comporta una frammentazione della tabella con un decadimento delle prestazioni e rallentamento nella interrogazione dei dati. Per ovviare a questo problema si esegue il comando OPTIMIZE TABLE che effettua un defrag della tabella MySql accorpando ove possibile le frammentazioni e ripristinando in parte le prestazioni.

Rispondi

Per poter rispondere a questa domanda, devi essere registrato e loggato sul sito, dopodichè compila il box sottostante cercando di essere il più chiaro ed esauriente possibile, la tua risposta potrebbe essere la soluzione che l'utente cerca ed essere contrassegnata come migliore, consentendoti così di ottenere punti ed autorevolezza.

Alfonso Scifella

Alfonso Scifella

Autore di questa domanda

 Domanda Precedente

 Elenco Domande 

Domanda Successiva