2011-06-27 3 views
6

私はバラクーダファイル形式でのInnoDBのプラグインを使用しています:私はVARCHAR(255)としてフィールドを定義し、そのフィールドのNULL値を持つレコードを挿入した場合、そのレコードはまだ意志MySQL/InnoDB Plugin:VARCHARフィールドのNULL値はまだストレージスペースを占有しますか?

ROW_FORMAT=DYNAMIC

VARCHARフィールドのストレージに255バイトを使用しますか?または無駄なストレージスペースはありませんか?

関連するメモでは、フィールドをINTと定義すると、そのフィールドの値がNULLであっても、すべてのレコードがそのフィールドに32ビットを使用しているようです。あれは正しいですか?レコードディレクトリに

アンSQL NULL値の埋蔵1または2バイト -

おかげ

答えて

6

私はこれがあなたの質問に答えるべきだと思います。それに加えて、SQL NULL値は、可変長列に格納されている場合、レコードのデータ部分にゼロバイトを予約します。固定長の列では、レコードのデータ部分に列の固定長を予約します。 NULL値の固定スペースを確保すると、NULLから非NULL値への列の更新が、索引ページの断片化を引き起こすことなくその場で行われるようになります。

詳細はdata-type storage requirementsInnoDB physical row structure

をご確認ください
関連する問題