我想了解 sql 表中特定 blob 列消耗的内存。
我有一个表 STUDENT,其字段 DATA 为中等 blob 类型。我已经获取了 blob 列的总长度:
select sum(length(DATA)) from STUDENT;
result is : 922358752
我不明白的是如何获取该 blob 消耗的内存(以 MB 为单位)?
最佳答案
您正在使用 SUM()
,因此您的结果是 STUDENT
中所有 DATA
列的长度之和> 表。以字节为单位。
通常,通过将字节除以 1024 得到千字节。通过将千字节除以 1024 得到兆字节。通过...得到千兆字节。你明白了。
MySQL 在其磁盘文件中存储额外的内容。其中一些额外的东西是可以预见的。例如,每个中等 Blob 列使用三个额外字节。看到这个:http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html
您的 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;
关于mysql - 了解mysql内存消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39508444/