Ecco una ripartizione di come l'archiviazione della tabella dei motori di archiviazione diversi:
1. InnoDB (più comune - il default da MySQL 5.5)
* `innodb_file_per_table` Configurazione: Questa impostazione determina il modo in cui INNODB memorizza i dati e gli indici della tabella.
* `innodb_file_per_table =on` (consigliato): Ogni tabella ha il suo file `.ibd` per dati e indici. I metadati (definizione della tabella) sono ancora archiviati nel file "ibdata1" condiviso. Questa è l'impostazione preferita perché:
* Crea le operazioni `drop table`,` truncate `e` ottimizzano la tabella '.
* Consente un recupero più facile delle singole tabelle.
* Riduce il rischio di corruzione che colpisce più tabelle.
* Riacquina lo spazio quando un tavolo viene lasciato cadere (a differenza dell'approccio condiviso del tablespace).
* `innodb_file_per_table =off` (non consigliato): I dati e gli indici per tutte le tabelle innodb sono archiviati in un tablespace condiviso (in genere `ibdata1`). I metadati (definizione della tabella) sono ancora archiviati nel file "ibdata1" condiviso. Questa impostazione è fortemente scoraggiata a meno che tu non abbia un motivo molto specifico e avvincente per usarla. È più difficile gestire, recuperare e ridurre il tavolo.
* `.frm` Files: InnoDB crea anche un file `.frm` per ogni tabella. Questo file contiene i metadati della tabella (definizione della tabella). Questo è un artefatto storico e i file `.frm` stanno diventando meno importanti poiché i metadati vengono spostati nel dizionario dei dati gestiti direttamente dal server.
2. Myisam (motore più vecchio, meno comune ora):
* Myisam memorizza ogni tabella in tre file separati:
* `.frm`:Definizione della tabella (come innodB).
* `.Myd`:file di dati (contiene i dati della tabella).
* `.Myi`:file indice (contiene gli indici della tabella).
3. Altri motori di archiviazione:
* Altri motori di archiviazione (ad es. Memoria, archivio, CSV) hanno i propri meccanismi di archiviazione. Ad esempio, il motore `Memory 'memorizza le tabelle in memoria, non sul disco. Il motore CSV 'memorizza i dati nei file CSV.
Considerazioni importanti:
* Posizione dei file: I file associati a una tabella (ad esempio, `.ibd`,` .frm`, `.myd`,` .myi`) sono in genere archiviati in una directory che corrisponde al nome del database. La posizione di queste directory è determinata dalla variabile di configurazione `Datadir` nella configurazione del server MySQL (di solito` my.cnf` o `my.ini`).
* tablespace condiviso (ibdata1): Se stai usando `innodb_file_per_table =off` con innodb, * tutte * tabelle innodb condividi il file` ibdata1` (e forse altri file `ibdata` se diventa troppo grande). Ciò può portare alla frammentazione e rendere difficile recuperare lo spazio su disco.
* Archiviazione dei metadati: Sebbene i dati primari siano spesso separati in file diversi (in particolare con `innodb_file_per_table =on`), le definizioni della tabella * (metadati) sono archiviate in un dizionario di dati gestito dal server. I file `.frm` vengono utilizzati per i formati più vecchi e ora sono meno critici.
Come controllare `innodb_file_per_table`:
È possibile controllare l'impostazione corrente di `innodb_file_per_table` utilizzando la seguente query SQL:
`` `sql
Mostra variabili come "innodb_file_per_table";
`` `
In sintesi:
Mentre i vecchi motori di archiviazione come Myisam * do * archiviare i dati, gli indici e le definizioni di tabella in file separati, innodB (il motore più comune) con `innodb_file_per_table =su` archivia dati e indici in un file` .ibd` per tabella * (più il vecchio file `.frm` per metadata). Utilizzando `innodb_file_per_table =off` memorizza tutti i dati e gli indici della tabella innodb nel file` ibdata1` condiviso.
Programmazione © www.354353.com