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.