2014-01-07 3 views
1

Как рассчитать размер байтов (МБ, ГБ), используемых подмножеством строк в таблице MySQL. Вариант использования - определить размер пользователя в базе данных. Итак, идея состоит в том, чтобы выбрать все строки, принадлежащие пользователю в таблице, рассчитать размер этих строк, включая их индексы (индексы?)Как определить размер подмножества строк в таблице MySQL

Я нашел что-то вроде этого, но это только дает мне размер целого стол:

SELECT table_schema "Data Base Name", sum(data_length + index_length)/1024/1024 "Data Base Size in MB" 
FROM information_schema.TABLES GROUP BY table_schema ; 

Я бы очень признателен за ответ.

+0

Обратите внимание, что все, что разделено само по себе, равно 1 Это проблема? – Strawberry

+1

@Strawberry. Calc будет работать слева направо, так что это '(sum (data_length + index_length)/1024)/1024' – Jim

ответ

1

Я думаю, что самый простой способ сделать это - получить оценку. Я предполагаю, что вы можете подсчитать количество строк в таблице, принадлежащих этому пользователю, и от этого и от общего количества строк вы можете получить процент принадлежащих им строк ». Примените этот процент к общему размеру таблицы, и у вас есть оценка.

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

+0

Спасибо. Как насчет индексов? Можно ли предположить, что индекс растет линейно? – soelu

+1

Не совсем; это зависит от шаблона добавления ключей. Если ключ всегда увеличивается (например, int, который увеличивается на 1 каждый раз), то вы, вероятно, можете предположить это. Если это не так (например, случайное руководство), то, вероятно, не так, как добавление какого-либо ключа может вызвать разделение страницы. Что вы на самом деле пытаетесь достичь здесь? Планирование DForward для требований к пространству или что-то еще? –

+0

Именно это. Мы пытаемся оценить требования к пространству для предстоящего развертывания. У нас есть несколько индексов на таблицу. Некоторые из них основаны на идентификаторе auto-increment id, другие - составные индексы. – soelu

Смежные вопросы