2011-12-12 19 views
18

私はテーブルに保存する必要がある生のバイナリデータは約2kですが、VarbinaryまたはBlobタイプを選択するかどうかはわかりません。私はMySQLのドキュメントの説明を読みましたが、何の契約も見つけられず、記述を比較しませんでした。また、varbinaryは255文字までサポートしていますが、varbinary(2048)フィールドは正常に作成されているため、少し混乱しています。VarbinaryとMySQLのBlob

バイナリデータをインデックスに登録する必要はなく、クエリを実行する必要もありません。あるタイプのPHPを他のタイプよりも使用する利点はありますか?

ありがとうございます!

+0

これは、私が 'org.hibernate.HibernateException:列の型が間違っています....を取得した理由です。見つかった:blob、expected:longblob' –

答えて

11

VARBINARYは、MySQL 5.0.2以降では255バイト、5.0.3以降では65kBにバインドされています。

BLOBは、65kBに結合する。

最後に、は、「古い」バージョンのMySQLとの互換性を維持しない限り、BLOBと実質的に同じです(格納できる観点から)。 MySQL Documentationは言う:

は、ほとんどの点では、あなたが好きなように大きくなる可能性がVARBINARY列としてBLOB列を考えることができます。

+0

" varbinaryはBLOBと事実上同じです "ソースを挙げてください。 – Pacerier

+0

@Pacerier:この事実を示唆する(sic)MySQLドキュメントページへのリンクを含むように編集された回答。 – Romain

+0

しかし、下記の他の記事に示されているように、実際には事実上非常に異なるものです。 – Pacerier

12

実際にブロブは、サイズ制限に最大2^32 -1と(TINYBLOB、ブロブ、MEDIUMBLOB & LONGBLOB http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.htmlがある)大きくすることができます。

また、blobストレージは行の外側に広がりますが、max varbinaryサイズは使用可能な空き行サイズの量によって決まります(実際には64KB未満になる可能性があります)。

インデックスのスクリプトでは、両方の 1の間にいくつかのマイナーな違いが)(ブロブが、インデックスの接頭辞の大きさを必要があるのvarbinaryしない) ます。http:/en/column-indexes.html
CREATE TABLEテスト(blob_colのBLOB 、INDEX(blob_col(10)));

2)はすでにのMySQL 5.0.xのでvarbinary型&ブロブの間で異なっ管理traillingスペースの問題やそれ以前のバージョンが存在する言及: ます。http:///en/blob.html ます。http:/// EN /バイナリレベルvarbinary.html

(stackoverflowのは、あまりにも多くのリンクがスパムであると考えているので、リンクを切り捨て)

+1

2KBのカラムだけの場合は、blob(out-row)またはvarbinary(in-row)を使用する方が有益でしょうか? – Pacerier

9

varbinariesのと同様に行にインラインで格納されている間に一方の有意差がBLOBタイプは、二次記憶装置に格納されていますvarcharsと他の "シンプル"タイプ。

これは、ロブデータをフェッチして操作するための追加ルックアップが高価になるビジーなシステムでのパフォーマンスに影響を与える可能性があります。

+0

5.0.3以降でこれは当てはまりますか? – Pacerier

0

私はちょうど列に5kバイナリデータを保存するテストアプリを見ています。最初はvarbinaryを使用しましたが、遅いので、私はblobを試しました。まあ、私はディスクの書き込みスピードをatopで見ていると何か違いを見ることができません。

mysqlマニュアルで唯一の重要な違いは、BLOBがメモリエンジンでサポートされていないということです。クエリを使用して作成するテンポラリテーブルは(mysql uses temp tablesを参照)ディスク上に作成され、はるかに遅くなります。 varbinary/binaryが行に収まるのに十分短い場合(すべての列の合計64kの合計)、より良い賭けになります。

5

メモリストレージエンジンはBLOB/TEXTをサポートしていませんが、VARBINARYで動作します。

関連する問題