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