2012-08-07 5 views
10

Esiste una query o una funzione che è possibile utilizzare per determinare la dimensione di un database in MySQL? Se no, qual è il modo tipico per trovare la dimensione del database in MySQL?MySQL Query del database delle query

ero googling e trovato SELECT CONCAT(sum(ROUND(((DATA_LENGTH + INDEX_LENGTH - DATA_FREE)/1024/1024),2))," MB") AS Size FROM INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA like '%YOUR_DB_NAME%' ;

e restituisce un database che so è 400MB di essere 474989023196466.25 MB!

+0

In tutti i miei tavoli, data_free è molto più grande di data_length, il che significa che la tua query restituirebbe un numero negativo. Forse lo sta interpretando come un intero positivo senza segno, quindi il risultato insensato. Quando provo a incollare in quella query, viene visualizzato l'errore "BIGINT UNSIGNED valore non compreso nell'intervallo". – octern

+0

Per le dimensioni di una specifica risposta di database/tabella fornita in questa pagina, sarà utile http://www.rathishkumar.in/2017/12/how-to-find-database-and-table-size-in-mysql.html – rathishDBA

risposta

23

Prova con questa query:

SELECT table_schema AS "Data Base Name", 
sum(data_length + index_length)/1024/1024 AS "Data Base Size in MB" 
FROM information_schema.TABLES GROUP BY table_schema ; 

O con questo, se si desidera arrotondare:

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

Prova:

SELECT table_schema, sum(data_length + index_length) FROM information_schema.TABLES GROUP BY table_schema; 
0
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;