Mysql
 sql >> Database >  >> RDS >> Mysql

InnoDB ha tabelle statiche?

InnoDB ha righe a larghezza fissa e può esserci qualche vantaggio nel dichiarare tutte le colonne di una tabella come a larghezza fissa. Il vantaggio principale è che tutti i "buchi" in una pagina possono essere riutilizzati per qualsiasi inserimento, poiché tutte le righe hanno la stessa lunghezza. Questo rende il riutilizzo dello spazio in qualche modo più efficiente. Tuttavia, non proverei a forzare la larghezza fissa per le stringhe superiori a poche dozzine di byte, poiché il costo di archiviazione dei dati extra per pagina (e quindi meno righe per pagina) supererebbe rapidamente qualsiasi risparmio/guadagno che otterresti da più efficiente riutilizzo dello spazio.

Tuttavia, avere righe a larghezza fissa non consentire qualsiasi ottimizzazione della scansione delle righe (come per MyISAM). L'archiviazione delle righe di InnoDB è sempre basata sulla pagina e utilizza un albero B+ con elenchi di pagine a doppio collegamento e record collegati singolarmente all'interno di una pagina. L'attraversamento delle righe utilizza sempre queste strutture e non può essere eseguito in nessun altro modo.