我想查询 ActiveRecord 模型,修改它,并计算新对象的大小(以 mb 为单位)。我该怎么做呢?
不幸的是,数据库中数据行的大小以及内存中 ruby 对象的大小都不容易获得。
虽然了解内存中的对象大小要容易一些,但您仍然必须找到属于活动记录对象的所有对象,因此应该对其进行计数(这并不明显)。即使这样,您也必须处理一些不明显的事情,例如共享/缓存数据、类开销,这些可能需要计算,但不是必须的。
在数据库方面,它很大程度上取决于所使用的存储引擎。从数据库的文档中,您通常可以扣除表中定义的每个列的存储要求(对于 VARCHAR、TEXT 或 BLOB 列,这可能会有所不同。最重要的是共享资源,例如索引、常规表开销,...为了进行估计,表中各列的记录大小要求应该足够了
一般来说,对于诸如数据库行或内存中对象之类的复杂事物,很难获得正确的大小。这些系统不是为了收集或提供此信息而构建的。
除非您绝对需要获得准确的数据,否则您应该避免空间太大。一般来说,对于数据库来说,拥有太多的磁盘空间(在这种情况下,数据库通常会运行得更快一点)或太多的内存(这将减少 Ruby 的内存压力,从而再次使其更快)并没有什么坏处。
通常,Ruby 进程的内存使用情况并不明显。因此,最好的做法几乎总是编写程序,然后使用所需数量的实际数据对其进行测试,并检查其性能和内存要求。这样,您就得到了actual您需要的信息,即:处理我所需的数据集时我的程序需要多少内存。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)