人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MYSQLのディスク容量に関して質問です。
下記内容は可能でしょうか。

現在の設定
----
・userテーブルにuser情報を登録している
・fileテーブルにファイル実体(blob型)とuser情報を紐付けて登録している
----

したいこと
----
・userごとのmysql利用ディスク容量(fileテーブルの利用容量)をしりたい
----

テーブル単位でのトータル容量は簡単にわかるのですが、userテーブルに格納されているユーザーごとの
情報の取得方法がわかりません。
上記はざっくりした説明用DBにはなっていますが…

何か方法があればヒントなどでも結構です。
宜しくお願いします。

●質問者: chirubo
●カテゴリ:インターネット ウェブ制作
✍キーワード:blob dB MySQL USER しり
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● kn1967a
●27ポイント

できない。

というか、BLOB型のサイズを登録するカラムを用意するのがセオリー。

◎質問者からの返答

なるほど。。

mysqlだけでは取得できなさそうですか。

phpmyadminのデータ一覧画面でblob型の部分に[BLOB - 23.7KiB]などファイルサイズが書いてあるのですが、この情報って簡単に取得できないのでしょうか?

追記:

phpmyadminを見ていると、単純にstrlen()で情報を引っ張ってきているようか感じがします。

通常のvarcharなどの容量を調べようと思うと、同様にstrlen()なるのかな

プログラムと合わせてでも容量計算が出来ればいいのですが


2 ● chuken_kenkou
●27ポイント

簡易的な方法とすれば、SELECT文でLENGTH関数を使用することで、データ長を得ることはできます。

実際に使用している容量となると、実際のデータの長さにより、物理的に複数レコードに分割されて格納されたりしますし、その管理情報も含めどこまで正確に求めるかという話しになってきます。

MySQL :: MySQL 5.1 リファレンスマニュアル :: 10.5 データタイプが必要とする記憶容量

MySQL :: MySQL 5.1 リファレンスマニュアル :: 11.3 文字列関数

◎質問者からの返答

なるほど。

現状ですとuserごとの総容量(byte)を出そうとすると、PG側もしくはLENGTH関数でカウントをすることになりそうですね。

件数が多いとどちらにしても負荷も多そうで、、どのあたりが落とし所になるかですかね。。


3 ● pahoo
●27ポイント

計算負荷を考えるなら、SQLをお勧めします。


テーブル名 file、userのID番号を格納したフィールドを user、blob型のフィールドを binとします。ユーザーID=101のBLOB型データの容量(バイト)を合計するのであれば、SQL文は以下のようになります。MySQL 4.x 以降で利用できます。

select sum(length(`bin`)) FROM `file` where user=123;
◎質問者からの返答

なるほど!

一度試してみます。

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ