2012-08-07 28 views
10

MySQL'de bir veritabanının boyutunu belirlemek için kullanabileceğim bir sorgu veya işlev var mı? Değilse MySQL veritabanının boyutunu bulmak için tipik yolu nedir?MySQL Sorgu veritabanı boyutu

Ben googling ve 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%' ;

bulundu Ve ben 474989023196466.25 MB olmak 400MB olduğunu bildiğiniz bir veritabanı döndürür edildi!

+0

, data_free, data_length değerinden çok daha büyüktür, yani sorgunuz negatif bir sayı döndürür. Belki de imzasız bir pozitif tamsayı olarak yorumlanır, bu yüzden saçma bir sonuçtur. Bu sorguya yapıştırmayı denediğimde "BIGINT UNSIGNED değeri aralık dışı" hatasını alıyorum. – octern

+0

Bu sayfada sağlanan belirli bir veritabanı/tablo cevabı büyüklüğü size yardımcı olacaktır: http://www.rathishkumar.in/2017/12/how-to-find-database-and-table-size-in-mysql.html – rathishDBA

cevap

23

bu sorgu ile deneyin:

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 ; 

Veya bununla

, sen yuvarlamak istiyorsanız:

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

Dene: benim tabloları tümünde

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;