2016-09-15 3 views
0

Я хочу понять память, потребляемую определенным столбцом blob в моей таблице sql.Понимание потребления памяти mysql

У меня есть стол СТУДЕНТ с полем DATA среднего типа blob. Я уже сгружена общая длина столбца большого двоичных объектов:

select sum(length(DATA)) from STUDENT; 
result is : 922358752 

То, что я не понимаю, как получить память, потребляемой этой сгусток в МБ?

+0

Таким образом, вы имеете в виде память потребляемой 922358752 +2 байта? – Jyotib

+1

Ваш вопрос сам по себе не ясен. Вы имеете в виду память, используемую вашим приложением, когда она читает в блобе или __storage__, взятом блобом, когда он хранится в базе данных? – e4c5

+0

Я имел в виду хранилище, сделанное блобом, когда оно хранится в базе данных. Извините за путаницу. – Jyotib

ответ

0

Вы используете SUM(), поэтому ваш результат, ну, сумма длины всех столбцов DATA в вашей таблице STUDENT. В байтах.

Как правило, вы получаете килобайты, деля байты на 1024. Вы получаете мегабайты, деля килобайты на 1024. Вы получаете гигабайты ... вы получаете идею.

В MySQL хранятся дополнительные файлы в дисковых файлах. Некоторые из этих дополнительных материалов предсказуемы. Например, каждый столбец blob среды использует три дополнительных байта. См. Это:

Ваш SUM() результат не включает эти дополнительные три байта. Если вы хотите, чтобы включить их, вы будете нуждаться в

select sum(length(DATA)) + 3 * count(DATA) from STUDENT; 

или

select sum(length(DATA) + 3) from STUDENT; 

Вы, вероятно, можете получить хорошее отображение мегабайтов, как этот

select ROUND(sum(length(DATA) + 3)/(1024.0*1024.0), 2) from STUDENT; 
+0

Спасибо за подробное объяснение, я понял. Мне было непонятно, что именно представляет собой длина (DATA). – Jyotib