2

mediumblobルックアップのパフォーマンスに関して、通常の列と比較して追加のオーバーヘッドが発生しますか?

挿入されたデータごとに標準のディスク オーバーヘッド (データのバイト数 + 3 バイト) が発生することは十分承知していますが、(たとえば)whereステートメントを含むルックアップを実行し、join他のすべての列で単純なよりも、列がなかったmediumblob場合とパフォーマンスは異なりますか?mediumblob

4

1 に答える 1

3

簡単な答え:おそらくそうではありません;)

長い答え:

この興味深いブログ投稿を読むことをお勧めします:

COMPACTおよびREDUNDANT行フォーマット(Innodbプラグインの前に使用され、InnodbプラグインおよびXtraDBでは「Antelope」という名前)を使用すると、Innodbは行全体をInnodbページに収めようとします。少なくとも2行が各ページといくつかのページデータに収まる必要があるため、制限は約8000バイトになります。行が完全に収まる場合、Innodbはそれをページに保存し、外部BLOBストレージページを使用しません。

この場合、はい、おそらくパフォーマンスの低下が見られます。

逆に

innodb_file_formatがBarracudaに設定され、ROW_FORMAT=DYNAMICまたはROW_FORMAT=COMPRESSEDでテーブルが作成されると、長い列の値は完全にオフページに格納され、クラスター化インデックスレコードにはオーバーフローページへの20バイトのポインターのみが含まれます。

この場合、目立つとしても、パフォーマンスコストはわずかであると思います。ただし、いつものように、YMMVとあなたは実際のデータセットでテストする必要があります。

于 2013-01-29T15:04:50.790 に答える