Подтвердить что ты не робот

Как получить размер таблицы MySQL в ГБ

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

SELECT (data_length + index_length)/мощность (1024,3) tablesize_gb FROM information_schema.tables WHERE table_schema = 'db' и table_name = 'имя_таблицы'

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

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

4b9b3361

Ответ 1

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

Насколько мне известно, нет способа рассчитать точный фактический размер одной конкретной строки в MySQL.

Ответ 2

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

SELECT groupval, (sum(length(somefield) + length(someotherfield)) / 1024) / 1024 as "fields_size_mb"
FROM table
GROUP BY groupval
ORDER BY fields_size_mb desc;

Ответ 3

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

Ответ 4

Не уверен, что вы искали это, но я в конечном итоге здесь, чтобы найти теоретический размер строки (добавление размера каждого поля).

Итак, я наконец-то придумал этот запрос:

select TABLE_NAME, sum(CHARACTER_MAXIMUM_LENGTH)/power(1024,3) 
from COLUMNS  where TABLE_SCHEMA = 'schema' group by 1 order by 2 desc ;

Ответ 5

Чтобы рассчитать размер строки, используйте метод length().

Например:

MariaDB [db]> select id,length(row_to_calcsize) from tablename order by id desc limit 2\G
*************************** 1. row ***************************
     id: 501
length(row_to_calcsize): 2192911
*************************** 2. row ***************************
     id: 500
length(row_to_calcsize): 51657
2 rows in set (0.00 sec)

MariaDB [servicebus_qg]> 

Чтобы рассчитать размер в ГБ, просто разделите его 3 раза на 1024

length(row_to_calcsize)/1024/1024/1024

Ответ 6

Чтобы найти размер таблицы, мы можем использовать что-то вроде этого.

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