• ベストアンサー

使用容量を取得したい

特定のデーターの使用容量を取得したいのですが、どうすればよろしいのでしょうか。 例えば、 テーブル名 hoge [ id (int) , str (text) ]  があった場合、 id=20 における str のデーター容量を取得するといった具合です。 よろしくお願いいたします。  環境: mysql5、MyIsam

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

データ長であれば、LENGTH関数を使えばいいと思いますが、知りたいのはデータ長ではなくて、容量なのですか? 容量となれば、行データや列データを管理するために付加されている情報も加算するのかや、実際に行を格納している領域は4KBといった単位で管理されているので、その単位で切り上げるかなど、考慮すべき事項が出て来ます。

mgop9
質問者

補足

回答していただきありがとうございます。 LENGTH関数というものがあったのですね。 SELECT length( str ) FROM hoge WHERE id='20' と実行してみた所 15230 のような数字が表示されました。 希望としては、格納されているデーターの容量をバイト単位 (もしくは、キロバイト単位) で取得したいと思っております。例えば、『あいうえお』という文字が格納されていた場合、その『あいうえお』のみを対象とした容量です。 データー長の結果を元に、計算をすればバイト単位の容量が算出できるといった感じでしょうか?

その他の回答 (1)

回答No.2

>格納されているデーターの容量をバイト単位 (もしくは、キロバイト単位) で取得したいと思っております 実際に使用している容量、しかも特定の行、特定の列だけというのは非常に困難であり、あまり意味があるとも思えません。 TEXT型は可変長の行であり、同じ文字を格納しても、文字コードにより長さが変わってきます。長さを管理するために、付加情報があります。しかも、この付加情報は、データ長により長さが変わってきます。また、実際のデータは、先頭から255バイトまでなら「基本の行(レコード)」に格納されますが、256バイト以上になると、物理的に「別の行(レコード)」として格納されます。この別の行は、2000バイト固定であり、それ以上の長さのデータの場合、この別の行が、複数作成されます。 マニュアルに、以下の式が掲載されています。 =====ここから===== サイズ <= 256 (サイズ が行のサイズを表している)時、TEXT カラムのサイズは256で、そうでない時のサイズは256 + サイズ + (2000 – (サイズ – 256) % 2000)です。 =====ここまで===== 実際には、これに加え、管理情報が加わります。まあ、相当に長いデータなら、管理情報分は無視しても、大差はないようにも思えますけどね。 http://dev.mysql.com/doc/refman/5.1/ja/storage-requirements.html

mgop9
質問者

補足

回答ありがとうございます。 いろいろと難しいのですね、よく勉強してみることにいたします。 この度はありがとうございました。

関連するQ&A