是否有Rails方法返回记录的数据大小?
假设我有一个名为Item的表。是否有类似@item.data_size
的方法会返回“xx bytes”?
我有一个mysql数据库。
答案 0 :(得分:1)
不确定是否有像C这样的原生方式,但尝试这个(它可能包括类的大小,这与单个SQL行不同):
import javax.script.*;
public class StaticVars {
public static String myname = "John\n";
public static void main(String[] args) {
try{
ScriptEngine engine;
ScriptEngineManager manager = new ScriptEngineManager();
engine=System.getProperty("java.version").startsWith("1.8")?
manager.getEngineByName("Nashorn") : //j1.8_u51
manager.getEngineByName("JavaScript"); //j1.7
engine.put("staticvars", new StaticVars());
engine.eval("print(staticvars.myname);");
//print "John" if ran with java 7
//print "undefined" if ran with java 8
} catch(Exception e){e.printStackTrace();}
}
}
答案 1 :(得分:0)
是的,您可以计算访问模型的记录总数。例如,您可以尝试此代码示例
@items = Item.all
@items.size
或@items.count
或@items.length
将返回此@items
变量的记录总数。或直接您可以count
使用model
Item.count
,如def InitArray(x):
x = np.arange(0, 5)
将记录的总数返回数据库。
答案 2 :(得分:0)
第一种方式
require "rubygems"
require "knjrbfw"
analyzer = Knj::Memory_analyzer::Object_size_counter.new(my_hash_object)
puts "Size: #{analyzer.calculate_size}"
第二种方式
require 'objspace'
h = {"a"=>1, "b"=>2}
p ObjectSpace.memsize_of(h)
Measure the memory taken by a Ruby object (by Robert Klemme)
答案 3 :(得分:0)
幸运的是,没有。据我所知,在MySql和大多数数据库中都无法确定记录大小。这是由于以下原因,我只会提出最明显的原因:
所以,这意味着这样的记录大小本质上是非常近似和平均的。如果存在这种方法,可能会出现很多混乱。然而,这并不意味着根本无法做到这一点。 Referring这个答案可以获得表格大小。您可以尝试使用数百万个典型的假数据记录seed数据库,例如使用ffaker gem,获取大小并除以记录号。这应该为您的特定情况提供非常好的数字。
作为下一步,您可以检查相关的平均记录大小,并将其与内存中的对象大小相关联。这可能非常有趣。
干杯!