首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Activerecord记录的大小(以字节为单位)

Activerecord记录的大小(以字节为单位)
EN

Stack Overflow用户
提问于 2015-12-14 12:54:26
回答 1查看 3.2K关注 0票数 2

是否有一种简单的方法可以使用activerecord (我的数据库是mysql)获取记录的大小(就其占用的磁盘空间而言)?

我已经找到了几个(12)的答案,提供了一种使用sql的方法,我想知道Activerecord中是否有内置的东西,比如MyRecord.first.bytesize

表的大小也可以,我需要一个平均行大小。

这样做的目的是估计数据库的磁盘空间需求。

更新

我还找到了

代码语言:javascript
代码运行次数:0
运行
复制
require 'objspace'
ObjectSpace.memsize_of(MyRecord.first)

activerecord对象的大小是否等于数据库中记录的大小?

这似乎给出了所有字段的总和。我将字符串化所有不响应size的字段,例如时间戳。

代码语言:javascript
代码运行次数:0
运行
复制
record.attributes.keys.map{ |attr_name| record.send(attr_name)}.inject{|sum, attr| sum + (attr.respond_to?(:size) ? attr.size : attr.to_s.size)  }

下面是这些方法在相同记录下的结果的比较:

  • 所有属性的组合大小(见上文):222
  • Marshal::dum(record).size2678
  • ObjectSpace.memsize_of(record)128
EN

回答 1

Stack Overflow用户

发布于 2015-12-14 13:08:32

通过使用以下方法可以找到大小的近似:

代码语言:javascript
代码运行次数:0
运行
复制
Marshal::dump(obj).size

既然您说过,它用于数据库大小--转储有类和实例变量的名称--与绝对记录大小相比,它可能是一些开销。

您可能想看看这个得到MySQL DB大小- 数据库大小计算?如何获得MySQL数据库的真实大小?的答案。

根据当前存储在DB中的实体数量以及使用上述方法确定的大小,您可以推断大小大小。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34267603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档