Como obter o tamanho do banco de dados mysql?


542

Como obter o tamanho de um banco de dados mysql?
Suponha que o banco de dados de destino seja chamado "v3".


Para tabelas específicas / tamanho de banco de dados específico, o script fornecido aqui ajudará, as informações são calculadas a partir da tabela information_schema.tables, consulte a resposta detalhada aqui rathishkumar.in/2017/12/…
Rathish

Respostas:


1185

Execute esta consulta e provavelmente encontrará o que procura:

SELECT table_schema "DB Name",
        ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" 
FROM information_schema.tables 
GROUP BY table_schema; 

Esta consulta vem dos fóruns do mysql , onde há instruções mais abrangentes disponíveis.


4
Mesmo depois de eu apagar a maior parte dos dados das tabelas no banco de dados, o tamanho permanece o mesmo
Vidz

2
@Vidz você está usando o mecanismo InnoDB. Se você fizer isso, poderá liberar espaço, a menos que use file_per_table e altere as tabelas.
#

5
Lembre-se de que esse método não retornará nenhum banco de dados completamente vazio, pelo menos uma única tabela deve existir para que o banco de dados apareça no resultado.
v010dya

13
Para selecionar em um único banco de dados, adicione-o entre as linhas FROMe GROUP: where table_schema='DATABASE_NAME'- substituindo DATABASE_NAMEpelo seu banco de dados.
precisa

2
Nota: O MySQL Workbench emitirá um Syntax error: {column title} (double quoted text) is not valid input here.erro. Os títulos das colunas devem ser colocados entre marcas de escala. Ou seja Database Name.
KareemElashmawy

75

Pode ser determinado usando o seguinte comando MySQL

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema

Resultado

Database    Size (MB)
db1         11.75678253
db2         9.53125000
test        50.78547382

Obter resultado em GB

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 / 1024 AS "Size (GB)" FROM information_schema.TABLES GROUP BY table_schema

2
Agradável. Eu gosto desta resposta.
progfan

31

Como alternativa, se você estiver usando, verifique phpMyAdmina soma dos tamanhos das tabelas no rodapé da structureguia do banco de dados . O tamanho real do banco de dados pode estar um pouco acima desse tamanho, no entanto, parece ser consistente com o table_schemamétodo mencionado acima.

Captura de tela:

insira a descrição da imagem aqui


26

Como alternativa, você pode pular diretamente para o diretório de dados e verificar o tamanho combinado de v3.myd, v3. myi e v3. arquivos frm (para myisam) ou v3.idb e v3.frm (para innodb).


7
Nota: IBD arquivos existem somente se estiver usando innodb_file_per_table
Slashterix

2
Esta resposta é muito específica para o mecanismo de armazenamento. Responder por @ brian-willis é mais apropriado.
Manu Manjunath

15

Para obter um resultado em MB:

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2)) AS "SIZE IN MB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";

Para obter um resultado em GB:

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 / 1024), 2)) AS "SIZE IN GB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";

12
mysqldiskusage  --server=root:MyPassword@localhost  pics

+----------+----------------+
| db_name  |         total  |
+----------+----------------+
| pics     | 1,179,131,029  |
+----------+----------------+

Se não estiver instalado, pode ser instalado instalando o mysql-utilspacote que deve ser empacotado pela maioria das principais distribuições.


4

Primeiro faça o login no MySQL usando

mysql -u username -p

Comando para exibir o tamanho de um único banco de dados junto com sua tabela em MB.

SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.TABLES
WHERE table_schema = "database_name"
ORDER BY (data_length + index_length) DESC;

Altere database_name para seu banco de dados

Comando para exibir todos os bancos de dados com seu tamanho em MB.

SELECT table_schema AS "Database", 
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" 
FROM information_schema.TABLES 
GROUP BY table_schema;

1

Entre no diretório de dados do mysql e execute du -h --max-depth=1 | grep databasename

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.