2013-03-30 16 views
11

ちょうど次のクエリでGBのMySQLテーブルのサイズを計算して終わった。 TABLE_SCHEMA = 'DB' と TABLE_NAME = 'テーブル名'GBのMySQLの行サイズを取得する方法

を取得することが可能です INFORMATION_SCHEMA.TABLES FROM

SELECT(DATA_LENGTH + INDEX_LENGTH)/電源(1024,3)tablesize_gb GBのMySQL行のサイズ。

またはGBの表の平均行サイズを取得する方法。

+0

でグループを持つからです。 – nneonneo

+0

@nneonneo上記のクエリから、私はテーブルのサイズを取得していますが、私は行のサイズを取得する必要があります。 – Parthi04

+0

行数で割りますか? – nneonneo

答えて

11

INFORMATION_SCHEMA.TABLESにAVG_ROW_LENGTHカラムを使用し、(オーバーヘッドを含む)の平均列長を取得します。

私の知る限り、MySQLの単一の特定の行の正確な実際のサイズを計算する方法はありません。

-3

我々はこのようなものを使用することができ、テーブルのサイズを見つけるために...

SELECT count(*) tables, 
     concat(round(sum(table_rows)/1000000,2),'M') rows, 
     concat(round(sum(data_length)/(1024*1024*1024),2),'G') data, 
     concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx, 
     concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size, 
     round(sum(index_length)/sum(data_length),2) idxfrac 
     FROM information_schema.TABLES 
     WHERE table_name like "%table-name%" 

我々は、これはトリックを行う可能性がありますこんにちは、この

SELECT CONCAT(table_schema, '.', table_name), 
     CONCAT(ROUND(table_rows/1000000, 2), 'M')         rows, 
     CONCAT(ROUND(data_length/(1024 * 1024 * 1024), 2), 'G')     DATA, 
     CONCAT(ROUND(index_length/(1024 * 1024 * 1024), 2), 'G')     idx, 
     CONCAT(ROUND((data_length + index_length)/(1024 * 1024 * 1024), 2), 'G') total_size, 
     ROUND(index_length/data_length, 2)           idxfrac 
FROM information_schema.TABLES 
ORDER BY data_length + index_length DESC 
LIMIT 10 
+2

質問は、最大のテーブルではなく、最大の行サイズを見つけることに関するものでした。 – coderintherye

5

ようなものを使用することができますMYSQLデータベースで最大のテーブルを検索し、同様の問題があり、どのタイプの行が最も多くの領域を占めるかを調べなければなりませんでした。なぜここでそれを行うには合理的な方法のように見えます...

SELECT groupval, (sum(length(somefield) + length(someotherfield))/1024)/1024 as "fields_size_mb" 
FROM table 
GROUP BY groupval 
ORDER BY fields_size_mb desc; 
-1
SELECT 
    table_name AS `Table`, 
    round(((data_length + index_length)/1024/1024), 2) as `Size in MB`, 
    round((AVG_ROW_LENGTH/1024), 2) as `Avg row size in KB` 
FROM information_schema.TABLES WHERE table_schema = 'your_db_name' 
ORDER BY `Size in MB` DESC 
関連する問題