2013-03-30 2 views
11

Только что закончил вычисление размера таблицы MySQL в GB со следующим запросом.Как получить размер строки mysql в GB

SELECT (data_length + index_length)/мощность (1024,3) tablesize_gb ОТ INFORMATION_SCHEMA.TABLES WHERE table_schema = 'дБ' и table_name = 'имя_таблицы'

Можно ли получить размер строки MySQL в GB.

Или как получить размер строки для таблицы в ГБ.

+0

Это выглядит как разумный способ сделать это. – nneonneo

+0

@nneonneo Из вышеприведенного запроса я получаю размер таблицы, но мне нужно получить размер строки. – Parthi04

+0

Разделите на количество строк? – nneonneo

ответ

11

Чтобы получить среднюю длину строки (включая служебные), используйте столбец в information_schema.tables.

Насколько я знаю, нет способа рассчитать точный фактический размер одной конкретной строки в 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%" 

Найдите наибольшее таблицу в 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 
+2

Вопрос был конкретно в поиске наибольшего размера строки, а не самой большой таблицы. – coderintherye

5

Привет это может сделать трюк, у нас была аналогичная проблема, и нам пришлось выяснить, какие типы строк занимают больше всего места. Вот почему здесь с группой по ...

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 
Смежные вопросы