Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> Programmazione >> PHP /MySQL Programmazione >> .

MySQL memorizza ogni tabella in un file separato?

No, MySQL non memorizza necessariamente ogni tabella in un file separato. Il modo in cui MySQL immagazzina le tabelle dipende dal motore di archiviazione utilizzato.

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