mysql определяет размер хранилища поля

Я хотел бы знать, есть ли команда mysql для определения текущего используемого фактического размера хранилища поля mysql.

Может быть, что-то вроде "show used_storage myfield FROM ... WHERE ..."

Как ни странно, я не смог бы найти ничего подобного.

(То же самое для postgresql тоже будет интересно)

Большое спасибо!

3 ответа

Для PostgreSQL вы можете использовать

ВЫБЕРИТЕ your_column, pg_column_size(your_column)
FROM your_table

Полный список функций такого рода приведен в руководстве.
http://www.postgresql.org/docs/current/static/functions-admin.html

Если вы используете символьное поле данных, самое простое будет

SELECT SUM(LENGTH(myField)) From MyTable

Если вы используете какой-либо числовой тип данных, вы можете просто получить счетчик строк и умножить его на размер, например 4 для INTEGER или 8 для DOUBLE.

Однако он не будет отражать фактический размер диска. Это, наверное, намного сложнее выяснить. И даже если бы он был точным, фактический размер таблицы мог быть намного больше, чем общий размер всех столбцов из-за фрагментации и других факторов.

Вы можете получить размер (и размер индекса) всей таблицы с помощью:

SHOW TABLE STATUS LIKE 'MyTable';

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

Использование пространства документов MySQL:

http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

Другие вопросы по тегам