15

次のクエリを使用して、MySQL テーブルのサイズを GB 単位で計算することになりました。

SELECT (data_length+index_length)/power(1024,3) tablesize_gb FROM information_schema.tables WHERE table_schema='db' and table_name='tablename'

MySQL 行のサイズを GB 単位で取得することは可能ですか。

または、テーブルの平均行サイズを GB 単位で取得する方法。

4

6 に答える 6

15

平均行長 (オーバーヘッドを含む) を取得するにAVG_ROW_LENGTHは、情報スキーマ テーブルの列を使用します。

select AVG_ROW_LENGTH from INFORMATION_SCHEMA.tables;

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

于 2013-03-30T06:01:04.993 に答える
12

こんにちは、これでうまくいくかもしれません。同様の問題があり、どのタイプの行が最もスペースを占有しているかを調べる必要がありました。そのため、ここで group by...

SELECT groupval, (sum(length(somefield) + length(someotherfield)) / 1024) / 1024 as "fields_size_mb"
FROM table
GROUP BY groupval
ORDER BY fields_size_mb desc;
于 2015-10-22T09:23:05.867 に答える
-4

テーブルサイズを見つけるには、次のようなものを使用できます..

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%"

このようなものを使用できるMYSQLデータベースで最大のテーブルを見つけます

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
于 2013-03-31T16:26:20.330 に答える