【问题标题】:mysql determine storage size of a fieldmysql确定字段的存储大小
【发布时间】:2010-12-21 16:25:05
【问题描述】:

我想知道有没有mysql命令可以确定一个mysql字段当前使用的实际存储大小。

可能类似于“show used_storage myfield FROM ... WHERE ...”

奇怪的是我能找到这样的东西。

(postgresql 也一样会很有趣)

非常感谢!

【问题讨论】:

  • 这个问题作为两个单独的问题会更有用。
  • 是的,你是对的,我也想过这一点,但后来我想看看它在两个系统上是如何工作的会很好。不过主要关注的是 mysql,postgres 对我来说只是仅供参考)

标签: mysql database postgresql storage administration


【解决方案1】:

对于 PostgreSQL,您可以使用

选择 your_column, pg_column_size(your_column) FROM your_table

此类功能的完整列表在手册中
http://www.postgresql.org/docs/current/static/functions-admin.html

【讨论】:

  • 哇,又一次,postgresql 似乎是更好的数据库 :) 非常感谢您的回答。
【解决方案2】:

如果您使用的是字符数据字段,最简单的是

SELECT SUM(LENGTH(myField)) From MyTable

如果您使用的是某种数字数据类型,您可以只计算行数,然后将其乘以大小,例如 INTEGER 为 4,DOUBLE 为 8。

但它不会反映磁盘上占用的实际大小。这可能更难发现。而且即使准确,由于碎片和其他因素,表的实际大小也可能远远大于所有列的总大小。

您可以通过以下方式获取整个表的大小(和索引大小):

SHOW TABLE STATUS LIKE 'MyTable';

如果您只将您想要的列复制到一个新的临时表中,您可能能够更真实地了解您的字段实际占用了多少磁盘空间。

【讨论】:

  • 感谢您的回答!但我更多的是寻找一个向我展示所需“真实”空间的命令。例如,对于长文本字段,使用了 4 个字节,而不管您在其中存储了多少。此外,如果值很大,则数据存储在外部,大约 700 字节将额外保留在列中。这意味着整个大小将超过内容的实际大小。这就是我正在寻找的价值。
【解决方案3】:

【讨论】:

  • 当一个人提出关于 SO 的问题时,我确信 99% 的人都知道文档。可能他只是没有时间检查它,花时间在实验上。他只想得到简单的答案,这将很快帮助他。
猜你喜欢
  • 2011-10-09
  • 2012-04-22
  • 2014-10-05
  • 1970-01-01
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多