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

rails:1681

From: "Taichi Fujisawa" <tf@s...>
Date: Tue, 26 Sep 2006 17:07:56 +0900
Subject: [rails:1681] Re: テーブルの容量測定の方法

そめえださん

返信ありがとうございます。
DBはMySQLなのですが、where句つきで容量を測定できる
ようなものはありませんでした。

アドバイスいただいたように、テーブルごとに1レコードの平均値から
概算することで検討したいと思います。


藤澤 太一 / Taichi Fujisawa
mailto:tf@s...
------------------------------------------------------
『Travel on Rails』
Ruby on RailsやWEB2.0、ITエンジニアのワーキングスタイルを語る。
http://rubyonrails.blog47.fc2.com/
------------------------------------------------------
Squaria Co., Ltd.

c-MA3 BLDG. 5F
3-1-35. Motoazabu Minato-ku
Tokyo, 106-0046 JAPAN
+81-3-6439-1888 (Phone)
???-????-???? (FAX)
http://www.squaria.net
------------------------------------------------------


-----Original Message-----
From: そめえだ [mailto:someeda@g...]
Sent: Monday, September 25, 2006 4:35 PM
To: rails@r...
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/



--
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...             ]