2013-06-06 14 views
9

Ho usato mysql prima, ma non capisco come funziona internamente. Qualcuno può indicarmi una buona risorsa su ciò che la rappresentazione interna dei dati sul disco sembra che potrebbe anche discutere su come le ricerche vengono cercate e accedute così velocemente? Ancora meglio, qualcuno può presentare una spiegazione succinta di alto livello?come sono memorizzati i dati mysql sul disco?

+0

Questa domanda merita una buona ricerca, non solo una sessione di domande, potrebbe essere più adatta a http://dba.stackexchange.com –

+0

Il libro "Pro MySQL" spiega questo processo abbastanza accuratamente. – Marty

+0

IMHO questo dipende dal motore di archiviazione che si sta utilizzando le strutture di MyISSAM e InnoDB sono tranquille diverso. Comunque AFIK usa tutti gli alberi D o KD (non sono sicuro del K in questo momento). – rekire

risposta

12

MySQL Server utilizza lo spazio su disco in vari modi, in primo luogo per le directory ei file che si trovano sotto un unico luogo conosciuto come directory dei dati del server. Il server utilizza la sua directory di dati per memorizzare tutti i seguenti dati:

  1. Directory di database. Ogni database corrisponde a una singola directory nella directory dei dati, indipendentemente dai tipi di tabelle che si creano nel database. Ad esempio, un determinato database è rappresentato da una directory, indipendentemente dal fatto che contenga tabelle MyISAM, tabelle InnoDB o un mix dei due.
  2. file in formato tabella (file .frm) che contengono una descrizione della struttura di tabella. Ogni tabella ha il proprio file .frm, che si trova nella directory del database appropriata. Questo è vero indipendentemente dal motore di archiviazione che gestisce la tabella.
  3. I file di dati e indici vengono creati per ogni tavolo da alcuni motori di stoccaggio e collocati nella directory del database appropriata. Ad esempio, il motore di archiviazione MyISAM crea un file di dati e un file di indice per ogni tabella.
  4. motore di storage InnoDB Il dispone di un proprio spazio tabelle e file di log. Lo spazio tabella contiene dati e informazioni sugli indici per tutte le tabelle InnoDB, nonché i registri di annullamento necessari se è necessario eseguire il rollback di una transazione. I file di registro registrano le informazioni sulle transazioni impegnate e vengono utilizzati per garantire che non si verifichi alcuna perdita di dati. Per impostazione predefinita, lo spazio tabella e i file di registro si trovano nella directory dei dati. Il file tablespace predefinito è denominato ibdata1 ei file di registro predefiniti sono denominati ib_logfile0 e ib_logfile1. (È anche possibile configurare InnoDB per utilizzare un file tablespace per tabella. In questo caso, InnoDB crea il file tablespace per una data tabella nella directory del database della tabella.)
  5. File di registro del server e file di stato. Questi file contengono informazioni sulle istruzioni che il server ha elaborato. I registri vengono utilizzati per la replica e il recupero dei dati, per ottenere informazioni da utilizzare per ottimizzare le prestazioni delle query e per determinare se si verificano problemi operativi.
+0

Ottima risposta con molte informazioni silenziose, hai scritto tutto dalla tua memoria? Se possibile, aggiungi alcuni riferimenti per la ricerca futura. – rekire

+0

Ho trovato queste informazioni mentre stavo facendo una ricerca sullo storage MySQL. Questo è stato menzionato in uno dei blog DBA MySQL –

+0

@PeterVenderberghe Buono ... –

Problemi correlati