• ベストアンサー

テーブルサイズ制限について

webで検索していたところ、テーブルにはデフォルトでサイズ制限(4G)があり(OSによる制限もあるみたいですが)、データが増えてきたときにそれを大きくしないとデータが書き込み出来ないという投稿を発見しました。 現在、バージョン5.0を利用しているのですが、テーブルサイズを確認したところ(Max_data_length)、4G以上の数字が表示されています。 バージョン5.0では4Gという制限はなくなったのでしょうか?デフォルトから変更していないので、よく分からないのですが。。。

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

  • ベストアンサー
  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.4

> Max_data_lengthには281474976710655となっているということはデフォルトでテーブルのサイズが4G以上になっているということなのでしょうか? どうみてもこの数値は4GBは超えていますのでそうです。 ちなみに、 281474976710655 Byte = 274877906943.9990234375 kB = 268435455.99999904632568359375 MB = 262143.99999999906867742538452148 GB = 255.99999999999909050529822707168 TB なので、256TBということになりますね。 注:1024Byte = 1kB 1024kB = 1MB > あと、制限があるとしたら、~ ・ファイルシステムの制限 ・HDDそのものの空き容量 ですね。 いくら256TBまで可能といわれてもHDDそのものにそれだけの空きがなければ無意味ですので。 (現状、256TBなんて超大規模なRAIDでも組まない限り実現不可能ですので) とはいえ、こんな超巨大テーブルを作ることはまずないでしょうから(4GBですら個人でのデータベース利用ではまず消費しないかと)あまり神経質になることはないはずです。

hana43
質問者

お礼

ありがとうございました。 とても丁寧に親切に教えていただき、本当に感謝しております。 実際、現在使っていいるHDDはRAIDも組んでいないので300Gほどしかありません。というか、300Gも使う予定はないのですが・・・。 現在、linuxのカーネル2.6を使っているのですが、ファイルシステムの制限も全く問題ないようですのですし・・・。 本当に何度も丁寧に教えていただきありがとうございました。

その他の回答 (4)

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.5

> 現在、linuxのカーネル2.6を使っているのですが、ファイルシステムの制限も全く問題ないようですのですし・・・。 一応、Linuxで使われているファイルシステムでも上限はありますね。 例 ext2やext3は1ファイル4TBまで (カーネルによっても違うようですが)

hana43
質問者

お礼

ありがとうございます。 以前はカーネル2.4を使っていたので不安だったのですが、現在4TBまで使えれば私の場合十分です。 ほんとうにありがとうございました。

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.3

> やはり、上限は4Gですが・・・。 あくまで「デフォルト」ですので。 > ですが、確認したところMax_data_lengthには281474976710655となっています。これは4Gより大きいですよね? MySQL5.0以降は(デフォルトが)こうなるようですね。 MySQL4.0.x~4.1.xなら4294967295(4GB)となっているはずです。 まあ増えた分には気にする必要はないでしょうね。 とはいえファイルシステム上の制限には逆らえませんので(しつこいので以下略

hana43
質問者

お礼

ありがとうございます。 何度も申し訳ありません。 Max_data_lengthには281474976710655となっているということはデフォルトでテーブルのサイズが4G以上になっているということなのでしょうか? 私はMax_data_lengthがテーブルサイズだと思っていたのでテーブルサイズは特に問題ないかと思います(281474976710655が何Gなのか何Tなのか分かりませんが・・・)。あと、制限があるとしたら、前回教えていただいたファイルシステムの制限(例えばWindowsのFAT32だと1ファイル2GBまでの制限あり)に注意すればいいということでいいのでしょうか? 何度も申し訳ありませんが、私のMax_data_lengthの意味の理解が曖昧なもので・・・。よろしくお願いします。

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.2

MyISAMテーブルの場合でかつテーブル作成時に設定しなかった場合に上限が4GBとなります。 MAX_ROWS(最大レコード数)×AVG_ROW_LENGTH(レコード長の平均値)がMax_data_lengthとなります。 よって、変更する場合(例えば20GBにしたい場合)は、 ALTER TABLE `table` MAX_ROWS=500000, AVG_ROW_LENGTH=40000; というようにします。 もちろんテーブル作成時に指定することも可能です。 CREATE TABLE `table` (~) MAX_ROWS=500000,AVG_ROW_LENGTH=40000; とはいえ、ファイルシステムでの上限(例えばWindowsのFAT32だと1ファイル2GBまでの制限あり)がある場合はそれ以上に設定しても無意味ですのでご注意を。

hana43
質問者

お礼

丁寧に教えていただきありがとうございます。 やはり、上限は4Gですが・・・。 ですが、確認したところMax_data_lengthには281474976710655となっています。これは4Gより大きいですよね? これはどういう意味なのでしょうか?

  • kikanbo
  • ベストアンサー率31% (44/139)
回答No.1

テーブルのタイプは? MyISAMは1つのテーブルを1つのファイルで4G InnoDBは無限(?)

hana43
質問者

補足

ありがとうございます。 テーブルタイプはMyISMです。なので、4Gだと思うのですが、4G以上の数字が表示されています・・・。 設定変更した覚えはないのですが・・・。

関連するQ&A