MySQL utiliza espaço em disco de várias formas, primeiramente para diretórios e arquivos que estão localizados em um único local conhecido como diretório de dados do servidor (server’s data directory).
O processo servidor utiliza o diretório de dados para armazenamentos como segue:
- Diretórios de databases. Cada database corresponde a um único diretório abaixo do diretório de dados, independente de qual tipo de tabelas você cria no database. Por exemplo, um database é identificado por um único diretório, não importa se ele contém tabelas do tipo MyISAM, InnoDB ou uma mistura de ambas.
- Arquivos de formato tabela (extensão .frm) que contém a descrição da estrutura de uma tabela. Cada tabela possui seu próprio arquivo .frm, localizado no seu respectivo diretório de database. Isso é fato, não importa o mecanismo de armazenamento utilizado para a tabela.
- Arquivos de dados e arquivos de índices são criados para cada tabela por alguns mecanismos de armazenamento e colocados no diretório do database apropriado. Por exemplo, o mecanismo MyISAM, cria um arquivo de dados e um arquivo de índices para cada tabela.
- O mecanismo de armazenamento InnoDB possui seu próprio arquivo de tablespace e seus arquivos de log. O arquivo de tablespace contém informações de dados e índices para todas as tabelas InnoDB, assim como os logs de undo que são necessários para efetuar o rollback de transações. Os arquivos de log gravam informações sobre transações comitadas e são usados para garantir que nenhuma informação seja perdida. Por padrão, o arquivo de tablespace e os arquivos de log são localizados no diretório de dados. O arquivo de tablespace padrão é nomeado como ibdata1 e os arquivos de log padrão são ib_logfile0 e ib_logfile1. (Também é possível configurar o InnoDB para utilizar um arquivo de tablespace por tabela. Neste caso o InnoDB cria o arquivo de tablespace para um tabela desejada no diretório de dados)
- Arquivos de log do servidor e arquivos de status. Esses arquivos contém informações sobre as instruções que o servidor esteve processando. Os logs são utilizados para replicação e recuperação de dados, para obter e utilizar estas informações na otimização de consultas (query) e para determinar qualquer problema operacional que esteja acontecendo.