Come ottenere le dimensioni del database mysql?


542

Come ottenere le dimensioni di un database mysql?
Supponiamo che il database di destinazione sia chiamato "v3".


Per tabelle specifiche / dimensioni specifiche del database, lo script fornito qui aiuterà, le informazioni sono calcolate dalla tabella information_schema.tables, vedere la risposta dettagliata qui rathishkumar.in/2017/12/…
Rathish

Risposte:


1185

Esegui questa query e probabilmente otterrai quello che stai cercando:

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; 

Questa query proviene dai forum mysql , dove sono disponibili istruzioni più complete.


4
Anche dopo aver eliminato la maggior parte dei dati dalle tabelle nel database, la dimensione rimane la stessa
Vidz

2
@Vidz stai usando il motore InnoDB. Se lo fai, puoi liberare spazio a meno che tu non usi file_per_table e modifichi le tabelle.
mandza,

5
Tieni presente che questo metodo non restituirà nessuno dei database completamente vuoti, almeno una tabella deve esistere affinché il database appaia nel risultato.
v010dya,

13
Per selezionare da un singolo database, aggiungilo tra la riga FROMe GROUP: where table_schema='DATABASE_NAME'- sostituendo DATABASE_NAMEcon il tuo database.
KJ Prezzo

2
Nota: MySQL Workbench emetterà un Syntax error: {column title} (double quoted text) is not valid input here.errore. I titoli delle colonne devono essere racchiusi tra segni di spunta. Vale a dire Database Name.
KareemElashmawy,

75

Può essere determinato usando il seguente 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

Risultato

Database    Size (MB)
db1         11.75678253
db2         9.53125000
test        50.78547382

Ottieni risultati in 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
Bello. Mi piace questa risposta.
progfan,

31

In alternativa, se si utilizza phpMyAdmin, è possibile dare un'occhiata alla somma delle dimensioni della tabella nel piè di pagina della structurescheda del database . La dimensione effettiva del database potrebbe essere leggermente superiore a questa dimensione, tuttavia sembra essere coerente con il table_schemametodo sopra menzionato.

Immagine dello schermo :

inserisci qui la descrizione dell'immagine


26

In alternativa è possibile passare direttamente alla directory dei dati e verificare la dimensione combinata di v3.myd, v3. myi e v3. file frm (per myisam) o v3.idb e v3.frm (per innodb).


7
Nota: i file ibd esistono solo se si utilizza innodb_file_per_table
Slashterix

2
Questa risposta è molto specifica per il motore di archiviazione. La risposta di @ brian-willis è più appropriata.
Manu Manjunath,

15

Per ottenere un risultato in MB:

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

Per ottenere un risultato in 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 non installato, questo può essere installato installando il mysql-utilspacchetto che dovrebbe essere impacchettato dalla maggior parte delle principali distribuzioni.


4

Per prima cosa accedi a MySQL usando

mysql -u username -p

Comando per visualizzare le dimensioni di un singolo database insieme alla sua tabella in 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;

Cambia database_name nel tuo database

Comando per visualizzare tutti i database con le sue dimensioni in 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

Vai nella directory dei dati mysql ed esegui du -h --max-depth=1 | grep databasename

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.