[前][次][番号順一覧][スレッド一覧]

rails:1679

From: "そめえだ" <someeda@g...>
Date: Mon, 25 Sep 2006 16:35:24 +0900
Subject: [rails:1679] Re: テーブルの容量測定の方法

そめえだ です。

> item = Item.find(:all, :conditions => ["customer_id = ? ", customer_id])
> ↑ここで「item」の容量を測定するようなメソッドがないかが知りたいです。

ActiveRecord自体にそういう機能は無さそうに思うのですが、
ぱっと見た感じやっぱり無さそうです。


使用するDBがそういう機能を提供していないか調べてみるのはどうでしょう。
SQLで調べられたらそれが一番だと思いますが。


いいかげんで良いのでしたら、ベタに数えるとか。

  1 class ActiveRecord::Base
  2   def self.db_size(*rest)
  3     find(:all, *rest).inject(0) do |total, row|
  4       total + row.attributes.inject(0) do |sub_total, (k, v)|
  5         size = case v
  6                when String; v.size
  7                when Fixnum; 2
  8                when Float; 4
  9                when Time; 2
 10                else 0
 11                end
 12         sub_total + size
 13       end
 14     end
 15   end
 16 end

クラス毎に勝手に決めた数値を足していますが、これはいい加減な値です。
更にレコード毎に数バイト程度のオーバーヘッドがありそうな気もします。
それも考慮していません。

-- 
---------------------------
そめえだ
http://d.hatena.ne.jp/someeda/
someeda@g...

--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

   @  1678 2006-09-25 06:20 [tf@s...             ] テーブルの容量測定の方法                
->    1679 2006-09-25 09:35 ┗[someeda@g...        ]                                       
      1681 2006-09-26 10:07  ┗[tf@s...             ]